Ecco cosa si può fare con OpenCL direttamente in MetaTrader 5 senza alcuna DLL - pagina 15
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Rimossa la chiave OpenCL prima dell'esecuzione. Il comportamento non è cambiato.
Cioè, il primo lancio dell'Expert Advisor con CLContextCreate(CL_USE_GPU_ONLY) produce gli errori di cui sopra e l'Expert Advisor non parte. Dalla seconda esecuzione, il log di inizializzazione dei dispositivi OpenCL non viene più visualizzato, c'è solo un errore nel log di EA e EA non funziona. Quando si riavvia il terminale, EA con un comandoCLContextCreate(0) correttofunziona - appare un paesaggio marino mega-realistico. Allo stesso tempo, il log di inizializzazione ha gli stessi errori deltest delle prestazioni, ma il log EA è silenzioso.
La chiave è leggermente cambiata:
[HKEY_CURRENT_USER\Software\MetaQuotes Software]
before - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,6c,2a,09,a4,b3,d8,e2,3f
после - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,98,6b,19,ab,41,5c,fd,3f
In linea di principio, questo comportamento non è critico, se si correggono gli EA/scripts e si bypassano i dispositivi indirizzandoli esplicitamente e controllando il segno CL_DEVICE_TYPE. È anche meglio, imho, distribuire in modo gestibile i compiti ai dispositivi con il loro rating. È solo frustrante avere errori di inizializzazione. Chissà come si comporterà OpenCL nella prossima battaglia.
Per favore aiutatemi a trovare l'Intel SDK originale per applicazioni OpenCL 2016 R2 per scrivere e testare i kernel. È inutile scrivere a Intel in russo ;)
Perché non provi a usare AMD SDK?
Prova ad aggiornare alla beta 2543
beta 2545, release 2560.
Ogni volta che lo scriptviene eseguito per la prima volta:
Quando sieseguelo script conCLContextCreate (CL_USE_GPU_ONLY):Seascape (GBPUSD,H1) OpenCL not found. Error=5114
Ho errori simili, ma un anno fa su un tablet più debole funzionava bene
e ora anche questo non funziona:con i parametri: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - risultato: -1 con codice di errore: 5115
con parametri: 0, 1 - risultato: positivo
beta 2545, release 2560.
Ogni volta chesi esegue lo script per la prima volta:
Quando sieseguelo script con CLContextCreate(CL_USE_GPU_ONLY):La tua carta non supporta il doppio calcolo:
Non si può usare la matematica float nei calcoli finanziari a causa degli enormi arrotondamenti e quindi richiediamo esplicitamente il supporto per i calcoli doppi.
In precedenza, abbiamo permesso di abilitare OpenCL senza doppio, ma non aveva senso.
Ora lo limitiamo esplicitamente.
Ho errori simili, ma un anno fa su un tablet più debole funzionava bene
E ora anche questo non funziona:con i parametri: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - risultato: -1 con codice di errore: 5115
con parametri: 0, 1 - il risultato è positivo
È molto strano che Atom produca lo stesso errore sul doppio.
Dovremo controllare.
Che Atom dia lo stesso errore sul doppio è molto strano.
Non supporta nemmeno il doppio.
È strano di per sé richiedere un tale supporto da parte del terminale... Il mio file .cl non ha alcun doppio e non uso OpenCL per calcoli scientifici precisi.
Inoltre, non è un vecchio Atom, ma uno moderno con una GPU separata
La tua carta non supporta il doppio conteggio
Chiediamo al dispositivo stesso:
La risposta del serbatoio:
Dispositivo OpenCL ext: cl_intel_accelerator cl_intel_advanced_motion_estimation cl_intel_ctz cl_intel_d3d11_nv12_media_sharing cl_intel_dx9_media_sharing cl_intel_motion_estimation cl_intel_simultaneous_sharing cl_intel_subgroups cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_depth_images cl_khr_dx9_media_sharing cl_khr_gl_depth_images cl_khr_gl_event cl_khr_gl_msaa_sharing cl_khr_gl_sharing cl_khr_gl_sharing cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_icd cl_khr_image2d_from_buffer cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_spir
Infatti, non c'è supporto per cl_khr_fp64
Non riesco a trovare il datasheet ufficiale dellaIntel HD Graphics 4400 con informazioni sulla mancanza di doppia precisione in rete per essere sicuro che non sia un problema di driver.
L'unico modo per determinare se una scheda video ha FP64 è usare benchmark di sinistra:
https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_HD-Graphics-4400
A proposito, anche il coprocessore grafico di Renata sembra essere senza supporto FP64:
https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_UHD-Graphics-630
Renat, puoi eseguire il mio script qui sopra per determinare se il tuo IGP supporta la doppia precisione?
Se sì, allora sarà chiaro perché il tuo test di performance ha avuto successo.
Forse allora provare l'opzione di convertire gli array mqlrates in int sulla CPU prima di inviarli a OpenCL, moltiplicandoli per Digits. Il consumo di memoria è dimezzato. Dopo di che, giocate con i vettori o cercate di non incorrere in errori quando usate i float. In linea di principio, la precisione degli indicatori Digits+1 dovrebbe essere più che sufficiente.
Datetime può anche essere facilmente convertito in int, se 1440 minuti in giorno sono nei primi 12 bit (o nei primi 2 byte), e i giorni sono in bit alti. Il guadagno di velocità int vs double dovrebbe essere sufficiente a coprire l'overhead delle funzioni iTime-like personalizzate nei kernel.