Forse Renat può vedere cosa si può imparare da questo. È abbastanza possibile che la nuova specifica dia migliori prestazioni anche in MQL5, vero?
Per quanto riguarda C#/C++, se necessario, possiamo anche scaricarlo. La cosa principale è ottenere il massimo rendimento possibile. ;)
Per il momento, mi sto trattenendo dal riscrivere il CL-optimizer per Sharp sperando che il nuovo MT4 fornisca almeno la versione 1.1 alla fine. Il linguaggio è lo stesso, il compilatore è lo stesso e non ci sono ostacoli principali (non ho davvero bisogno del supporto OpenCL in un tester MT4, anche se continuerò a farlo se appare). Se non viene implementato - penserò a sinistra.
Per ogni script fornirò un link al post dove è stato pubblicato in modo che altri possano trovarlo rapidamente, eseguire i test e confrontare i risultati se necessario.
2013.11.2916:39:50 ParallelTester_00-01 x (EURUSD,H1) CLGetInfoInteger() returned 22013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) OpenCL init OK!
2013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) GPU time = 62 ms
2013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12802013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) Result on Gpu МахResult==1.34787 at 699 pass
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) CPU time = 14492 ms
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12802013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) Result on Cpu МахResult==1.34787 at 699 pass
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) CpuTime/GpuTime = 233.741935483871
P.S. Ho cambiato il mio tipo nel codice del kernel nei parametri della funzione gpuEMA da__global a__local. Un po' più veloce, ma ancora più lento che sulla CPU.
2013.12.01 14:29:46 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at CPU, time = 795 ms
2013.12.01 14:29:51 qpu_Future_EMA-Rainbow (EURUSD,M1) OpenCL: GPU device 'GeForce GTX 650 Ti BOOST' selected
2013.12.01 14:29:52 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at GPU (OpenCL), time = 1061 ms
P.S. Cambiato nel codice del kernel nei parametri della funzione gpuEMA da__global a__local. Un po' più veloce, ma ancora più lento che sulla CPU.
I miei risultati sono simili. Questo è stato discusso a lungo ed è logico - il compito è troppo semplice, trasferire la memoria da e verso la scheda video non paga. Il vantaggio della GPU appare in compiti più complessi.
MetaDriver: Ho risultati simili. Questo è stato discusso a lungo, e ha senso - il compito è troppo semplice, trasferire la memoria da e verso la scheda video non paga. Il vantaggio della GPU appare in compiti più complessi.
Capisco, grazie, sperimenterò con compiti più complessi.
Un esempio di utilizzo dell'accelerazione GPU per il trading (derivati).
Mark Joshi - famoso per i suoi libri sulla matematica finanziaria, in particolare sui derivati e sul trading di opzioni, ha riportato qui il suo lavoro:
Ha tradotto il suo lavoro in stile OOP su GPU CUDA. L'ha iniziato nel 2010, poi ha avuto una pausa, e dal 2011 fino all'estate 2014 è arrivato alla versione 0.3 funzionante. È riuscito a raggiungere un'accelerazione di 100X... 137X volte - e questo su un algoritmo FANTASTICO, che è difficile.
Il lavoro ha usato la libreria QuantLib in C++, che lui stesso ammette di aver dovuto rielaborare sulla falsariga di "OOP ->-> approccio procedurale" - per far funzionare il tutto sulla GPU CUDA.
Egli scrive:
"Ho implementato la tariffazione Monte Carlo dell'IRD con la LMM sulla GPU con i minimi quadrati per le caratteristiche dell'esercizio iniziale.
Potete ottenere il codice da kooderive.sourceforge.net sia in C++ che in CUDA. Il documento è su ......
Ho usato un codice completamente diverso per CUDA rispetto a quello che avevo usato in precedenza per C++. In sostanza, tratto i dati come concetto centrale e uso il codice per agire sui dati. Lo stile è molto funzionale. C'è voluto molto lavoro perché le mie precedenti implementazioni C++ erano orientate agli oggetti".
Forse Renat può vedere cosa si può imparare da questo. È abbastanza possibile che la nuova specifica dia migliori prestazioni anche in MQL5, vero?
Per quanto riguarda C#/C++, se necessario, possiamo anche scaricarlo. La cosa principale è ottenere il massimo rendimento possibile. ;)
Ho testato alcuni degli script in questo thread su una tale macchina:
CPU-Z
CUDA-Z
Per ogni script fornirò un link al post dove è stato pubblicato in modo che altri possano trovarlo rapidamente, eseguire i test e confrontare i risultati se necessario.
Prova 1
Prova 2
Prova 3
scala = 1000
Prova 4
Prova 5
Prova 6
Prova7
Test 8
Ho anche provato a testare l'indicatoreqpu_EMA-Rainbow di MetaDriver.
Sulla CPU, il risultato è a volte fino a 2x meglio. Ecco il risultato:
//---
Volodya(MetaDriver), mi mostri i suoi risultati?
P.S. Ho cambiato il mio tipo nel codice del kernel nei parametri della funzione gpuEMA da__global a__local. Un po' più veloce, ma ancora più lento che sulla CPU.
Ho anche provato a testare l'indicatoreqpu_EMA-Rainbow di MetaDriver.
Sulla CPU, il risultato è a volte fino a 2x meglio. Ecco il risultato:
Volodya(MetaDriver), mi mostri i suoi risultati?
P.S. Cambiato nel codice del kernel nei parametri della funzione gpuEMA da__global a__local. Un po' più veloce, ma ancora più lento che sulla CPU.
Ho risultati simili. Questo è stato discusso a lungo, e ha senso - il compito è troppo semplice, trasferire la memoria da e verso la scheda video non paga. Il vantaggio della GPU appare in compiti più complessi.
Un esempio di utilizzo dell'accelerazione GPU per il trading (derivati).
Mark Joshi - famoso per i suoi libri sulla matematica finanziaria, in particolare sui derivati e sul trading di opzioni, ha riportato qui il suo lavoro:
http://ssrn.com/abstract=2388415
Ha tradotto il suo lavoro in stile OOP su GPU CUDA. L'ha iniziato nel 2010, poi ha avuto una pausa, e dal 2011 fino all'estate 2014 è arrivato alla versione 0.3 funzionante. È riuscito a raggiungere un'accelerazione di 100X... 137X volte - e questo su un algoritmo FANTASTICO, che è difficile.
Il lavoro ha usato la libreria QuantLib in C++, che lui stesso ammette di aver dovuto rielaborare sulla falsariga di "OOP ->-> approccio procedurale" - per far funzionare il tutto sulla GPU CUDA.
Egli scrive:
"Ho implementato la tariffazione Monte Carlo dell'IRD con la LMM sulla GPU con i minimi quadrati per le caratteristiche dell'esercizio iniziale.
Potete ottenere il codice da kooderive.sourceforge.net sia in C++ che in CUDA. Il documento è su ......
Ho usato un codice completamente diverso per CUDA rispetto a quello che avevo usato in precedenza per C++. In sostanza, tratto i dati come concetto centrale e uso il codice per agire sui dati. Lo stile è molto funzionale. C'è voluto molto lavoro perché le mie precedenti implementazioni C++ erano orientate agli oggetti".
Il suo progetto stesso è open source:
http://sourceforge.net/projects/kooderive/