Ecco cosa si può fare con OpenCL direttamente in MetaTrader 5 senza alcuna DLL - pagina 15

 
Ilyas:
  1. Chiudere il terminale
  2. Rimuovere il valore OpenCL dall'alveare di registro "HKEY_CURRENT_USER\Software\MetaQuotes Software
  3. Eseguire il terminale e testare

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
 
directx è più stabile, ma dovrete fare un sacco di lavoro per i calcoli e non ci sono dub.
 
Ilyas:
Prova ad aggiornare alla beta 2543

beta 2545, release 2560.

Ogni volta che lo scriptviene eseguito per la prima volta:

Scripts script Seascape (GBPUSD,H1) loaded successfully
OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 4400 with OpenCL 1.2 (20 units, 400 MHz, 1425 Mb, version 10.18.14.5117)
OpenCL  device #1: CPU Intel(R) Corporation Intel(R) Core(TM) i7-4500 U CPU @ 1.80 GHz with OpenCL 1.2 (4 units, 1800 MHz, 8087 Mb, version 4.2.0.148, rating 21)
OpenCL  device performance test started
OpenCL  test compilation failed with error: 
':9:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:10:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:11:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:12:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:13:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:20:4: error: use of type 'double' requires cl_khr_fp64 extension to b
                
OpenCL  device #0 performance test error: 'cannot create OpenCL program (5105)'
OpenCL  device performance test finished with error(s)
OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 4400 with OpenCL 1.2 (20 units, 400 MHz, 1425 Mb, version 10.18.14.5117)
OpenCL  device #1: CPU Intel(R) Corporation Intel(R) Core(TM) i7-4500 U CPU @ 1.80 GHz with OpenCL 1.2 (4 units, 1800 MHz, 8087 Mb, version 4.2.0.148, rating 21)
Scripts script Seascape (GBPUSD,H1) removed
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

OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 400 with OpenCL 1.2 (12 units, 600 MHz, 1598 Mb, version 20.19.15.4364)
OpenCL  device #1: CPU Intel(R) Corporation  Intel(R) Atom(TM) x5-Z8550 CPU @ 1.44 GHz with OpenCL 1.2 (4 units, 1440 MHz, 4016 Mb, version 5.2.0.10094)
OpenCL  device performance test started
OpenCL  test compilation failed with error: '1:9:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:10:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:11:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:12:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:13:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:20:4: error: use of type 'double' requires cl_khr_fp64 extensio
OpenCL  device #0 performance test error: 'cannot create OpenCL program (5105)'
OpenCL  test compilation failed with error: 'Compilation started 2:9:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:10:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:11:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:12:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:13:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:20:4: error: use of type 'double' requires 
OpenCL  device #1 performance test error: 'cannot create OpenCL program (5105)'
OpenCL  device performance test finished with error(s)
OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 400 with OpenCL 1.2 (12 units, 600 MHz, 1598 Mb, version 20.19.15.4364)
OpenCL  device #1: CPU Intel(R) Corporation  Intel(R) Atom(TM) x5-Z8550 CPU @ 1.44 GHz with OpenCL 1.2 (4 units, 1440 MHz, 4016 Mb, version 5.2.0.10094)
e ora anche questo non funziona:
void OnStart()
{
        Print(CLContextCreate( CL_USE_ANY ));
}

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

 
aim-1:

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:

use of type 'double' requires cl_khr_fp64 extension to be enabled

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.

 
A100:

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.

 
Renat Fatkhullin:

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

 
Renat Fatkhullin:

La tua carta non supporta il doppio conteggio

Chiediamo al dispositivo stesso:

void OnStart() {
   int clCtx=CLContextCreate(0);
   if(clCtx == -1) Print("ERROR in CLContextCreate");
   string str;
   if(CLGetInfoString(clCtx,CL_DEVICE_NAME,str))       Print("OpenCL device name: ",str);
   if(CLGetInfoString(clCtx,CL_DEVICE_EXTENSIONS,str)) Print("OpenCL device ext: ",str);
   CLContextFree(clCtx); }

La risposta del serbatoio:


Nome del dispositivo OpenCL: Intel(R) HD Graphics 4400

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.

Главная
Главная
  • askgeek.io
Сравнительный анализ видеокарт Intel HD Graphics 515 и Intel UHD Graphics 630 по всем известным характеристикам в категориях: Общая информация, Технические характеристики, Видеовыходы и порты, Совместимость, размеры, требования, Поддержка API, Память, Поддержка технологий. Анализ производительности видеокарт по бенчмаркам: PassMark - G2D Mark...