Discussione sull’articolo "Come installare e utilizzare OpenCL per i calcoli" - pagina 5

 

Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading

Discussione dell'articolo "Come installare e utilizzare OpenCL nei calcoli"

MetaDriver, 2013.11.27 23:23

...

Alcune valutazioni sono assurde o contate male. Ecco le mie valutazioni di oggi:

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)

Non credo a una tale differenza di valutazioni, c'è qualcosa che non va.

Ho reinstallato i driver e ora la differenza è ancora maggiore. Nel log del terminale, il punteggio della CPU è salito a 130 (anche la scheda video è circa la stessa). Ma nel profilo nella sezione Agenti (agenti connessi al cloud) il punteggio è di ~170 in media su tutti i core (massimo 183).

Non so perché questa differenza...

 
tol64:

Ho reinstallato i driver e ora la differenza è ancora maggiore. Nel registro del terminale la valutazione della CPU è arrivata a 130 (anche sulla scheda video è più o meno la stessa). Ma nel profilo nella sezione Agenti (agenti connessi al cloud) il punteggio è di ~170 in media su tutti i core (massimo 183).

Non so perché questa differenza...

No, gli agenti sono un'altra cosa, lì le valutazioni sono calcolate per i calcoli ordinari (non OpenCL), cioè sono calcolate in altre unità relative.

Capisco la questione dei driver. Io sono ancora lento a reinstallare i miei - ho avuto problemi a reinstallare i driver l'anno scorso. Ci sono riuscito a malapena senza reinstallare il sistema.

 

Intel® SDK for OpenCL* Applications 2013 - non installato sul mio PC:

Per favore, ditemi dove cliccare :) - Win 7 x64

 
MigVRN:

Intel® SDK for OpenCL* Applications 2013 - non installato sul mio PC:

Per favore, ditemi dove cliccare :) - Win 7 x64

Prima scaricare dal sito web di Intel e poi installare questo file: intel_sdk_for_ocl_applications_2013_r2_runtime_x64_setup.msi.
 
tol64:
Scaricare prima dal sito Intel e poi installare questo file: intel_sdk_for_ocl_applications_2013_r2_runtime_x64_setup.msi.
Grazie mille, mi ha aiutato!
 
Potete dirmi come usare la GPU come agente per i test, perché tutto è installato (driver OpenCL), il terminale trova la GPU, ma nell'elenco degli agenti del tester non c'è, solo 2 core della CPU?
 

Non ho ancora capito bene la funzione di MetaTrader e OpenCL.......
Per quanto ne so, la funzione OpenCL è quella di condividere il processore del PC con il processore della GPU VGA. (soprattutto per i giochi e il fotoritocco).... scopo è quello di non far lavorare troppo il processore del PC.

Ho letto alcuni riferimenti su OpenCL e MetaTrader 5,, ma per lo più contengono scripting,
purtroppo non so nulla di codifica,,,,, e più leggo, più mi gira la testa.


La mia domanda:....
1. Non uso nessun EA e uso solo indicatori BollingerBand e Stocastico.....
se la mia MetaTrader 5 con la sua funzione OpenCL attiva, è in grado di ridurre l'utilizzo del processore del PC a circa il 50%?

2. Se si eseguono 8 diverse 'MetaTrader 5' (con OpenCL attivo), si sente davvero più leggero e non rallenta il PC?

Se qualcuno conosce la risposta, si prega di spiegare con un inglese semplice.

 
stivy007:
Potreste dirmi come usare la GPU come agente per i test, perché tutto è installato (driver OpenCL), il terminale trova la GPU, ma nell'elenco degli agenti nel tester non è presente, solo 2 core della CPU?
Non c'è modo. dovrebbe essere solo un advisor scritto appositamente con il supporto.
 

Qualcuno sa perché un semplice codice per OpenCL funziona sul processore, ma il driver video si blocca sulla scheda video?

Se si rimuove il ciclo interno, funziona senza problemi sulla scheda video.

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

input int _device = 0;        /// Numero del dispositivo 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 );
}//+------------------------------------------------------------------+
 

È possibile passare l'indicatore o la candela o qualsiasi proprietà trovata nel grafico nella GPU?

Ad esempio, ottenere l'RSI o lo stocastico o l'ichimoku o l'OHLC della candela?