OpenCL: test di implementazione interna in MQL5 - pagina 60

 
Mathemat:

Sì, MD, non stai andando molto bene con una CPU nuda. L'Intel è dappertutto, però...

Oh, andiamo, hai una grande scheda grafica.

Ho paura di toccarlo. Una volta l'ho disinstallato e mi sono trovato nell'oscurità quasi totale - Windows l'ha agganciato con qualche driver inappropriato. Ho dovuto reinserire AMD APP SDK in condizioni di visibilità dell'1%. È stato divertente... :)) Premi tutti i pulsanti per la centesima volta...................
 
MetaDriver: Sì, mi sto grattando la testa, ma forse l'autista è storto, ho paura di toccarlo.
È divertente: anche i driver nativi sono storti - sia per Intel che per AMD. Speriamo che sia solo un problema di crescita.
 

Gente, potreste consigliare se questo OpenCL su una CPU pura dà tale accelerazione solo in MQL5 o anche in altre lingue?

Avete fatto il seguente confronto: MQL5 + OpenCL VS C++ + Full Compiler Optimization?

Ho il sospetto che non sia OpenCL ad essere così figo, ma la mancanza di ottimizzazioni in MQL5 stesso.

P.S. Ho un i7 2700K, cercherò (quando ci arriverò) di testarlo su una CPU pulita.

 
Mathemat:
Cosa divertente: anche i driver nativi sono storti - sia per Intel che per AMD. Speriamo che sia solo un problema di crescita.
Sì, spero che tra un paio d'anni questo non accadrà, tutto funzionerà bene. Per il momento ho altri problemi - imparare a programmare questa roba come si deve... :)
 
hrenfx:

Gente, potreste consigliare se questo OpenCL su una CPU pura dà tale accelerazione solo in MQL5 o anche in altre lingue?

Avete fatto il seguente confronto: MQL5 + OpenCL VS C++ + Full Compiler Optimization?

Ho il sospetto che non sia OpenCL ad essere così figo, ma la mancanza di ottimizzazioni in MQL5 stesso.

P.S. Ho un i7 2700K e proverò (quando ci arriverò) a testarlo su una CPU pulita.

No, non l'abbiamo fatto.

Vai a prenderlo! Roba buona.

Fondamentalmente, il codice viene portato in C++ in dieci minuti al massimo (su una CPU nuda che conta). Come usare OpenCL in C++ l'ho visto solo in un primer e non l'ho mai provato. In realtà, vorrei averlo fatto.

 
hrenfx: Ho il sospetto che non sia OpenCL ad essere freddo, ma la mancanza di ottimizzazioni in MQL5 stesso.

Sì, è logico. Recentemente ho avuto una discussione sul forum di ixbt con un analista di CPU che condivide la stessa opinione. La discussione è iniziata qui (il mio nickname è tamehtaM). Per favore, non prendetemi a calci per la mia incompetenza. Ma ho l'impressione che Felid stia anche esagerando: troppo spesso parla di IGP - anche quando essa, IGP, è assente o troppo debole.

Il mio primo post in questo thread è stato scritto quando ancora non sapevo come installare correttamente il runtime Intel OpenCL. In effetti, non sono ancora sicuro che sia stato impostato correttamente. Ma è già circa tre volte meglio che su AMD APP SDK.

Le cifre dell'accelerazione sono dolorosamente grandi, questo è sicuro. E ovviamente dovrebbero diventare più bassi quando appariranno le ottimizzazioni.

La cosa interessante è che anche senza queste ottimizzazioni la quinta è più veloce della quarta.

E l'accelerazione in sé non è la cosa principale. La cosa principale sono le cifre assolute del tempo di esecuzione. Sicuramente non peggioreranno. Per essere più precisi, non dovrebbero peggiorare.

 
Mathemat:

Si tratta ovviamente di una scheda discreta, non di una CPU: tali accelerazioni sono difficilmente raggiungibili in emulazione. E il numero di dispositivi è già 5, il che è davvero inquietante.

Se non vi dispiace eseguire un codice leggermente modificato, per favore, e postare qui il risultato. Nel codice, i calcoli per i vari dispositivi OpenCL sono messi in un ciclo (dovrebbero essere veloci) mentre i calcoli su x86, il più lungo, sono eseguiti solo una volta. Sarà lungo, ma lo script stesso viene eseguito una volta sola.

Mi rendo conto che vi sto già annoiando. Ma in ogni caso sarà una buona informazione per il team di supporto.

Ecco il risultato.

2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CpuTime/GpuTime = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Risultato su Cpu MachResult==1.41575 a 7544 pass
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Indicatori sociali = 16; Conta barre storiche = 144000; Conta pass = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Tempo CPU = 301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Risultato su Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Indicatori sociali = 16; Conta barre storiche = 144000; Conta pass = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Tempo GPU = 687 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Numero dispositivo = 4
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Risultato su Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Conta indicatori = 16; Conta barre storiche = 144000; Conta passaggi = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Tempo GPU = 234 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Numero dispositivo = 3
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Risultato su Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Conta indicatori = 16; Conta barre storiche = 144000; Conta passaggi = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Tempo GPU = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Numero dispositivo = 2
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Risultato su Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Conta indicatori = 16; Conta barre storiche = 144000; Conta passaggi = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Tempo GPU = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Numero dispositivo = 1
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Risultato su Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Conta indicatori = 16; Conta barre storiche = 144000; Conta passaggi = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Tempo GPU = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Numero dispositivo = 0

 
casinonsk:

Ecco il risultato.

2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CpuTime/GpuTime = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Risultato su Cpu MachResult==1.41575 a 7544 pass
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Indicatori sociali = 16; Conta barre storiche = 144000; Conta pass = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Tempo CPU = 301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Risultato su Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Indicatori sociali = 16; Conta barre storiche = 144000; Conta pass = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Tempo GPU = 687 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Numero dispositivo = 4

Quindi, ora è chiaro, il dispositivo = 4 è la CPU nuda. E tempoGPU = 687 ms- abbastanza coerente. Ha funzionato bene per te.

Non capisco perché il tempo di esecuzione di CPU è così lungo. Ho circa 235000 ms con una frequenza del core molto più bassa (2,8 GHz).

O la memoria è bassa o è molto lenta, o la CPU è permanentemente sovraccaricata da qualche compito terribilmente impegnativo in termini di risorse. Non è chiaro. La cifra del rapporto temporale è innaturalmente alta.

 
Mathemat:

Quindi, è chiaro ora, dispositivo = 4 è la CPU nuda. E tempoGPU = 687 ms- abbastanza coerente. Ha funzionato bene per te.

Solo non capisco perché il tempo di esecuzione tempo di CPU è così alto. Ho circa 235000 ms - a una frequenza del core molto più bassa (2,8 GHz).

O la memoria è bassa o è molto lenta, o la CPU è permanentemente sovraccaricata da qualche compito terribilmente impegnativo in termini di risorse. Non è chiaro. La cifra del rapporto temporale è innaturalmente alta.

L'Expert Advisor si sta ottimizzando, è un po' carico di core.

16Gb di memoria

 
casinonsk: L'Expert Advisor si sta ottimizzando, i core sono un po' carichi.

Allora tutto è chiaro. Prova ad eseguire lo stesso script quando l'ottimizzazione è finita. Probabilmente carica tutti i core.

È molto interessante guardare una CPU nuda quando non c'è nient'altro in mezzo.

Motivazione: