OpenCL: test di implementazione interna in MQL5 - pagina 47

 

Qualcosa non funziona per me. La linea di inizializzazione va bene:

2012.04.01 05:52:01    Terminal    CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 7912 Mb, version 2.0 (sse2))


(Ho messo OpenCL 1.1 di AMD, e 1.2 sopra). Ma ora l ' esecuzione del test

2012.04.01 06:06:49    ParallelTester_00-01x (EURUSD,H1)    OpenCL not found.


Prima di questo, ho aggiornato il driver grafico Intel per la versione più recente e poi ho tolto i driver AMD con la loro installazione, e poi l'ho installato di nuovo.

Cosa sto facendo di sbagliato adesso?

P.S. Presto arriverà Ivy e mostrerà davvero cosa può fare Intel nella grafica integrata, insieme a Intel HD 4000. Guarda la grafica.

Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
  • 2011.11.30
  • gagadget.com
Стали доступны утекшие в сеть слайды, где с демонстрируется разница между процессорами Intel Ivy Bridge и Sandy Bridge в бенчмарках. Если быть точным, то сравниваются модели Core i7-3770 и Core i7-2600 (i7-3770K и i7-2600K по какой-то причине не были использованы).
 
Mathemat:

Cosa sto facendo di sbagliato adesso?

Ricompilate il test, questo dovrebbe aiutare, altrimenti andate su servicedesk.
 
Mathemat:

Ora cosa sto facendo di sbagliato?
CLCreateContext ha cambiato il parametro bool use_gpu in int device (numero di dispositivo). Correggere il codice.
 
mql5:
Nella nuova build, il parametro della funzione CLContextCreate è stato cambiato, viene usato int device invece di bool use_gpu.

con device>=0 viene usato come numero del dispositivo OpenCL nella sequenza
con device==OPENCL_DEVICE_ANY (-1) usato per selezionare automaticamente tra tutti i dispositivi disponibili
con device==OPENCL_DEVICE_GPU (-2) usato per selezionare automaticamente tra tutti i dispositivi GPU disponibili

Potresti per favore mostrarmi come fare questo nel codice? Chiamo CLContextCreate( OPENCL_DEVICE_ANY ) e ottengo il risultato alla compilazione:

'OPENCL_DEVICE_ANY' - undeclared identifier    ParallelTester_00-01x.mq5    145    31


Costruire 619.

E seconda domanda: dove posso trovare l'ultimo aiuto?

P.S. Ha funzionato non appena ho impostato l'argomento a -1. La costante OPENCL_DEVICE_ANY non è stata ancora dichiarata :)

 
Nella build 619 queste costanti sono rinominate in CL_DEVICE_ANY/CL_DEVICE_GPU.

Ma nelle build future sarà CL_USE_ANY/CL_USE_GPU_ONLY
 

Ho deciso di controllare come OpenCL funzionerà su i3-2120 (non è il mio calcolo, nessun video discreto nel sistema). Installato AMD APP SDK, OpenCL-Z ha rilevato tutto. Il terminale ha visualizzato una linea durante l'inizializzazione:

2012.04.02 03:59:47    Terminal    CPU: GenuineIntel  Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz with OpenCL 1.1 (4 units, 3310 MHz, 8039 Mb, version 2.0)


Controllato sul codice MetaDriver allegato a questo post e leggermente modificato con le ultime modifiche nella build 619 (vedi i primi test qui). Risultato:

2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CpuTime/GpuTime = 0.741385550890401
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Result on Cpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CPU time = 20483 ms
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Result on Gpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    GPU time = 27628 ms
2012.04.02 03:59:55    ParallelTester_00-01x (EURUSD,H1)    OpenCL init OK!


A runtime sulla "GPU", tutti e quattro i thread del processore erano completamente occupati, al 100%.

Cosa devo fare per ottenere l'accelerazione? Su un sistema basato su Pentium G840 (anche senza video discreto), era 25 volte più veloce:

P.S. Ho inviato un messaggio al Service Desk, ma temo che questo sia piuttosto un mio problema... A quanto pare ho imparato a installare e disinstallare correttamente AMD APP SDK a occhi chiusi, ma immagino di non essere arrivato a tutte le insidie. Anche se Intel OpenCL Runtime è installato sul mio sistema, non viene ancora riconosciuto nel terminale come dispositivo OpenCL.

P.P.S. A quanto pare, ecco un'altra cosa che ho scovato(https://www.mql5.com/ru/forum/6042/page25):

Ceneri: 2012.03.05 17:43:16 Terminale CPU: GenuineIntel Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz con OpenCL 1.1 (4 unità, 3092 MHz, 4008 Mb, versione 2.0)

2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CpuTime/GpuTime = 0.734767766287369
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) Risultato su Cpu MachResult==1.27347 a 1125 pass
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Conte inticators = 16; Conte history bars = 144000; Count pass = 1280
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Tempo CPU = 21309 ms
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) Risultato su Gpu MachResult==1.27347 a 1125 pass
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) Conte inticators = 16; Conte history bars = 144000; Count pass = 1280
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) Tempo GPU = 29001 ms
2012.03.05 17:44:33 ParallelTester_00-01x (EURUSD,M1) OpenCL init OK!

:(((

Forse ho "granate del sistema sbagliato"? (Intendo la versione AMD SDK)

Anche la CPU è quasi identica all'i3-2120...
 

GPU+OpenCL è un grande strumento, dopo tutto!

2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CpuTime/GpuTime = 728.1857142857143
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Risultato su Cpu MachResult==3.78654 a 50 passaggi
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Conta inticatori = 16; Conta barre storiche = 50.000; Conta pass = 1280
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Tempo CPU = 101946 ms
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Risultato su Gpu MachResult==3.78654 a 50 passaggi
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Conta inticatori = 16; Conta barre storiche = 50.000; Conta pass = 1280
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Tempo GPU = 140 ms

 
MetaDriver:

GPU+OpenCL è un grande strumento, dopo tutto!

2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Tempo GPU = 140 ms

Propongo di fare i test in modo che il tempo di calcolo della GPU non sia così piccolo. Comunque, 140 ms, imho, è un valore troppo inaffidabile, specialmente con errori di misurazione di GetTickCount() in decine di millisecondi.

MD, sono io che sono molto geloso di te.

 
Mathemat:

Suggerisco di fare i test in modo che il tempo di calcolo della GPU non sia così piccolo.

Non ho la pazienza di aspettare la CPU :) Più lontano è il bosco, più fredda è la GPU...
 
MigVRN:
Non ho la pazienza di aspettare una CPU :) Più lontano è il bosco, più fredda è la GPU...

Allo stesso modo. :)

Ma lo eseguirò su 4096 api e la CPU lo conterà in cinque minuti.