기고글 토론 "계산을 위해 OpenCL을 설치하고 사용하는 방법" - 페이지 5

 

트레이딩, 자동매매 시스템 및 트레이딩 전략 테스트 포럼

"계산에서 OpenCL 설치 및 사용 방법" 문서에 대한 토론

메타드라이버, 2013.11.27 23:23

...

일부 등급은 당신에게 미쳤습니다. 또는 비뚤어지게 계산됩니다. 여기에 오늘의 등급이 있습니다:

2013.11.28 00:04:42     OpenCL  Device #1:  CPU AuthenticAMD AMD Phenom(tm) II X6 1100 T Processor with OpenCL 1.1 (6 units, 3840 MHz, 16345 Mb, version 2.0, rating 17)
2013.11.28 00:04:42     OpenCL  Device #0:  GPU Advanced Micro Devices, Inc. Cayman with OpenCL 1.1 (20 units, 750 MHz, 1024 Mb, version CAL 1.4.1703 (VM), rating 171)

나는 그런 등급의 차이를 믿지 않습니다. 여기에 뭔가 잘못되었습니다.

드라이버를 다시 설치했는데 이제 그 차이가 더 커졌습니다. 터미널 로그에서 CPU 등급은 최대 130입니다 (비디오 카드도 거의 동일합니다). 그러나 에이전트 섹션의 프로필(클라우드에 연결된 에이전트)에서 등급은 모든 코어에서 평균 170 (최대 183)입니다.

왜 그런 차이가 있는지 모르겠습니다...

 
tol64:

드라이버를 다시 설치했는데 이제 그 차이가 훨씬 더 커졌습니다. 터미널 로그에서 CPU 등급은 최대 130입니다 (비디오 카드에서도 거의 동일함). 그러나 에이전트 섹션의 프로필 (클라우드에 연결된 에이전트)에서 등급은 모든 코어에서 평균 ~ 170 (최대 183)입니다.

왜 그런 차이가 있는지 모르겠습니다 ...

아니요, 에이전트는 다른 노래이며 일반 (OpenCL이 아닌) 계산에 대한 등급이 계산되며 일반적으로 다른 상대 단위로 계산됩니다.

나는 드라이버에 대해 이해합니다. 작년에 드라이버를 다시 설치하는 데 문제가있었습니다. 시스템을 다시 설치하지 않고 간신히 관리했습니다.

 

OpenCL* 애플리케이션용 인텔® SDK 2013 - 내 PC에 설치되지 않았습니다:

클릭할 위치를 알려주세요 :) - Win 7 x64

 
MigVRN:

OpenCL* 애플리케이션용 인텔® SDK 2013 - 내 PC에 설치되지 않았습니다:

클릭할 위치를 알려주세요 :) - Win 7 x64

먼저 인텔 웹사이트에서 다운로드한 다음 이 파일을 설치하세요: intel_sdk_for_ocl_applications_2013_r2_runtime_x64_setup.msi.
 
tol64:
인텔 웹사이트에서 먼저 다운로드한 다음 이 파일을 설치하세요: intel_sdk_for_ocl_applications_2013_r2_runtime_x64_setup.msi.
많은 도움이 되었습니다!
 
모든 것이 설치되어 있고 (OpenCL 드라이버) 터미널이 GPU를 찾지만 테스터의 에이전트 목록에는 2 개의 CPU 코어 만 있기 때문에 테스트 용 에이전트로 GPU를 사용하는 방법을 알려주시겠습니까?
 

메타트레이더와 OpenCL 기능에 대해 잘 몰랐습니다.......
제가 아는 한 OpenCL 기능은 PC 프로세서를 VGA GPU 프로세서와 공유하는 것입니다. (주로 게임/사진 편집용).... 요점은 PC 프로세서가 너무 열심히 작동하지 않게 만드는 것입니다.

OpenCL과 메타 트레이더 5에 대한 참고 자료를 읽었지만 대부분 스크립팅이 포함되어 있습니다
불행히도 코딩에 대해 아무것도 모릅니다,,,,, 그리고 더 많이 읽을수록 어지러워집니다.


내 질문:....
1. EA를 사용하지 않고 볼린저밴드와 스토캐스틱 인디케이터만 사용하고 있습니다.....
OpenCL 기능이 활성화된 MetaTrader 5를 사용하면 PC 프로세서 사용량을 약 50%까지 줄일 수 있나요?

2. 8개의 다른 'MetaTrader 5'(OpenCL 활성화)를 실행하면 정말 더 가볍고 PC 속도가 느려지지 않나요?

답을 아는 사람이 있다면 간단한 영어로 설명해 주세요.

 
stivy007:
모든 것이 설치되어 있고 (OpenCL 드라이버) 터미널이 GPU를 찾았지만 테스터의 에이전트 목록에는 2 개의 CPU 코어 만 있기 때문에 테스트 용 에이전트로 GPU를 사용하는 방법을 알려주시겠습니까?
아니요. 지원이있는 특별히 작성된 고문이어야합니다.
 

OpenCL에 대한 간단한 코드가 프로세서에서 작동하지만 비디오 드라이버가 비디오 카드에서 충돌하는 이유를 아는 사람이 있나요?

내부 루프를 제거하면 비디오 카드에서 문제없이 작동합니다.

#property link      "http://www.mql5.com"
#property version   "1.00"
#property script_show_inputs;

input int _device = 0;        /// OpenCL 장치 번호 

string d2s( double arg, int dig )         { return DoubleToString( arg, dig ); }
//+------------------------------------------------------------------+

string i2s( int arg )                     { return IntegerToString( arg ); }
//+------------------------------------------------------------------+

const string clSrc =
      "#pragma  OPENCL EXTENSION cl_khr_fp64 : enable                      \r\n"
      "                                                                    \r\n"
      "__kernel void test( __global double *out )                          \r\n"                 
      "{                                                                   \r\n"                  
      "  double x = 0.0;  double x1 = 0.0;                                 \r\n"                      
      "  for( long j = 0; j < 1000000; j ++ )                              \r\n"
      "  {                                                                 \r\n"
      "     x =x+0.01;                                                     \r\n"     
      "     for( long n = 1; n < 10000; n ++ ) x1=x1+0.01;                 \r\n"
      "  }                                                                 \r\n"
      "  out[ 0 ] = x;                                                     \r\n"
      "}                                                                   \r\n";
      

int OnStart()
{
   int clCtx = CLContextCreate( _device );
   
   int clPrg = CLProgramCreate( clCtx, clSrc );
   int clKrn = CLKernelCreate( clPrg, "test" );

   uint st = GetTickCount( );

   int clMem = CLBufferCreate( clCtx,  sizeof( double ), CL_MEM_READ_WRITE );            
   CLSetKernelArgMem( clKrn, 0, clMem );
   Print (i2s(clCtx)+";"+i2s(clPrg)+";"+i2s(clKrn));
   bool ex = CLExecute( clKrn ); 
                       
   double buf[1];                                                
   uint read = CLBufferRead( clMem, buf );                                                 
   
   Print( "out = " + d2s( buf[0], 12 ) );
      
   CLBufferFree( clMem );
   CLKernelFree( clKrn );
   CLProgramFree( clPrg );
   CLContextFree( clCtx );
   
   double gone = ( GetTickCount( ) - st ) / 1000.;
   Print( "OpenCl: gone = " + d2s( gone, 3 ) + " sec." );
   Print( "________________________" );
   
   return( 0 );
}//+------------------------------------------------------------------+
 

지표나 캔들 또는 차트에 있는 프로퍼티를 GPU에 전달할 수 있나요?

즉, RSI나 스토캐스틱, 이치모쿠, 캔들 OHLC를 가져올 수 있나요?