OpenCL: test di implementazione interna in MQL5 - pagina 56

 
Ashes: Non ha aiutato.

Raccontaci in dettaglio cosa hai fatto. A cominciare da come avete smontato AMD APP SDK.

A proposito, forse non hai inserito un parametro nello script ParallelTester_00-01x nella funzione CLContextCreate() uguale a 0 (potrebbe essere eseguito sull'host (cioè sulla CPU). Non era scritto nel mio post.

 
Mathemat:
Raccontaci in dettaglio cosa hai fatto. A partire da come avete eliminato l'AMD APP SDK.

Disinstalla AMD APP SDK eseguendo l'apposito Setup.exe, Uninstall. Riavviato.

Installato Intel OCL (intel_ocl_sdk_1.5_x64_setup.exe), solo RunTime. Riavviato.

Eseguire MT5 - mancato. Registro fisso su vostro consiglio. Ricaricato MT5 - che sfortuna.

Aggiunto percorso su consiglio di mql5, provato con e senza virgolette, x64, e x32. Dopo ogni modifica di registro - il mio usando MT5 di nuovo e il mio usando - stesse vecchie uova, solo una vista laterale.

Ora HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors appare così:

(Predefinito)REG_SZ (valore non assegnato)

C:\Program Files (x86)\Intel\OpenCL SDK1.5\bin\x86\intelocl.dll REG_DWORD 0x00000000 (0)

 
Ashes: In questo momento HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors è così:

(Predefinito)REG_SZ (valore non assegnato)

C:\Program Files (x86)\Intel\OpenCL SDK\1.5\bin\x86\intelocl.dll REG_DWORD 0x00000000 (0)

Hai guardato lì dentro? Io, per esempio, non ho nulla in questo percorso (ma ho scaricato e installato solo il runtime, forse è per questo che non è così).

E in secondo luogo, ho appena fatto intelocl.dll senza il percorso completo. Probabilmente è stato comunque registrato durante l'installazione runtime.

P.S. Sperimentato con percorsi completi. Metatrader non vede OpenCL con percorsi completi (entrambi). Ma se imposto solo intelocl.dll come nome, tutto diventa visibile immediatamente, anche senza riavviare il computer.

Non so come scegliere il file "giusto" tra due file esistenti con lo stesso nome nel sistema.

Si prega di riferire qui sul processo. Comunque, è interessante, forse ci sono delle sfumature. Io stesso ho lottato a lungo con questo, e ho "pasticciato" con il risultato, che mi piace molto.

P.P.S. A proposito, quando ero sulla risorsa Intel, mi hanno consigliato di disinstallare l'Intel SDK completo e reinstallarlo di nuovo. cioè non solo disinstallare, ma anche entrare nelle directory system32 e sysWOW64 e rimuovere tutto ciò che riguarda intelocl. Questi sono intelocl*.dll, opencl*.dll e altri file. Da qualche parte qui intorno c'è http://software.intel.com/en-us/forums/intel-opencl-sdk/. Quando lo troverò, vi darò un link più preciso.

Link utili: http://software.intel.com/en-us/articles/opencl-release-notes/

E qui - particolarmente utile: http://software.intel.com/en-us/forums/showthread.php?t=102023&o=a&s=lr, lì il consiglio di Uri Levy (Intel) può davvero aiutare. Comunque, è ancora un gioco di tamburello.

 
MetaDriver (p. 53):

Questo è sulla CPU (nel mio caso è il dispositivo 1):

Ho tirato il parametro CLContextCreate(device) nel parametro dello script. Potete curiosare tra tutte le opzioni.

La cosa interessante è questa:

Questo script sulla build 630 in qualche modo non funziona così. Nessun messaggio, entra in un ciclo, caricando la pietra al 100%. E non va oltre un tempo ragionevole. Ma ho già il runtime Intel.

 
Mathemat:

Quello che è interessante è come:

Questo script sulla build 630 in qualche modo non funziona così. Nessun messaggio, va in un ciclo, caricando la pietra al 100%. E non va oltre un tempo ragionevole. Ma ho già il runtime Intel.

Ricompilato, per me funziona.

2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 326.6
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==4.15901 at 208 pass
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40825 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==4.15901 at 208 pass
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 125 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

 
MetaDriver: L'ho ricompilato e funziona per me.

È sulla CPU?! Beh, se è così, mi stai spaventando...

Mi sono eccitato troppo presto. L'ho eseguito e non ha avuto alcun senso, nemmeno una voce nel log dell'EA. Ma la sceneggiatura è partita e ha riempito immediatamente tutta la roccia. In altre parole, ha pestato qualcosa, ma non è arrivato a CLContextCreate() (avrebbe detto qualcosa se ci fosse arrivato, no?).

Questo è qualcosa di nuovo. Sembra che il runtime Intel non comprenda il codice compilato su AMD SDK. Ho impostato OCL_Device sia a 0 che a -1. Nessun effetto.

In generale, è scomodo che non si possa scegliere la piattaforma. Vorrei che fosse possibile farlo. Sono stanco di reinstallare.

 
Mathemat:

È sulla CPU?! Beh, se è così, mi stai spaventando...

No, sulla GPU. Ma il dispositivo OpenCL è selezionabile. Qui sulla CPU:

2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 74.28571428571429
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==3.53209 at 36 pass
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40560 ms
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==3.53209 at 36 pass
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 546 ms
2012.04.21 06:19:37     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

Mi sono eccitato troppo presto. L'ho eseguito e non ha avuto alcun senso, nemmeno una voce nel log dell'EA. Ma la sceneggiatura si avvia e riempie immediatamente tutta la roccia. Cioè batte su qualcosa, ma non arriva a CLContextCreate() (se l'avesse fatto, avrebbe detto qualcosa, giusto?).

Qualcosa di nuovo. È come se il runtime Intel non capisse il codice compilato su AMD SDK. Ho impostato OCL_Device sia a 0 che a -1. Nessun effetto.

In generale, è scomodo che non si possa selezionare la piattaforma. Sarebbe auspicabile avere una tale opportunità. Sono stanco di reinstallare.

Oh, amico, è un ransomware).

Ok, ecco il codice sorgente. Fatene quello che volete.

Il codice non compila su AMD SDK. Almeno il codice OCL lo fa. Il programma OCL viene compilato durante l'esecuzione del codice mql. Il file EX5 dello snap-in OCL compila solo le funzioni del bridge mql/ocl-driver. Non credo che siano compilati in un codice macchina diverso a seconda del produttore del driver. Anche se solo gli sviluppatori possono chiarire completamente questo punto.

 
MetaDriver: Il codice non si compila su AMD SDK.
È comprensibile, stavo parlando male (beh, non sono un codificatore professionista). Ma dipende ancora dal fornitore della "libreria" OpenCL (funzioni interne stesse, non API).
 
Mathemat:

Hai controllato lì? Io, per esempio, non ho niente del genere in questo percorso (ma ho solo scaricato e installato il runtime, forse è per questo che non è così).

E in secondo luogo, ho appena fatto intelocl.dll senza il percorso completo. Probabilmente è stato comunque registrato durante l'installazione di runtime.

...

Il "nudo" intelocl.dll è stato uno dei primi ad essere controllato. C'è un file con quel nome in entrambe le cartelle x64 e x86.

 
Ashes: Il "nudo" intelocl.dll è stato uno dei primi ad essere controllato. C'è un file con quel nome in entrambe le cartelle x64 e x86.

Non so cosa fare allora. Mi sono torturato per cercare una soluzione finché il team di supporto non mi ha dato un suggerimento. Probabilmente non è una soluzione completa, ma ha funzionato sul mio computer.

Probabilmente la prima cosa da imparare è come rimuovere in modo pulito le tracce dei precedenti SDK.

Motivazione: