OpenCL: test di implementazione interna in MQL5 - pagina 3

 
Renat:
Ci sono dei chiarimenti:
...
2) Supportiamo OpenCL 1.1 e superiori perché supporta i tipi doppi. Laversione OpenCL 1.0 può operare solo con float, la cui precisione non è assolutamente adatta ai calcoli finanziari

Prova a installare driver più recenti, anche se molte schede delle generazioni precedenti non supportano le operazioni doppie.
Spero che la 1.1 supporti ancora anche il float. In generale il float non è sufficiente ma in molti casi particolari è molto sufficiente. E la memoria extra è spesso costosa, specialmente per i calcoli paralleli.
 
Graff:
Mentre testavamo gli script diJavaDev quest'estate,ci siamo imbattuti in un problema che la mia scheda grafica non supportava ildoppio, mafunzionavaconfloat. I driver non possono risolvere il problema, dobbiamo cambiare la scheda :(
Tutti i core del processore saranno utilizzati se la scheda grafica non è supportata.
 

Mettere su Catalyst Centre 12, prima era 11. Già ottenuto risultati (evidenziati in rosso):

Ho solo "giocato" con l'elenco a discesa da "0" a "1" e l'icona ATI è apparsa. Non è scomparso di nuovo all'avvio di questo programma. Un piccolo inconveniente nel software sembra essere....

 
WChas:
Fico! Ho MSI R6970 - 1536 fili (agenti) e Gigabyte HD5870 (1600 processori). In BOINC manager possono essere utilizzati senza combinarli in crossfair (basta collegare un'uscita della seconda scheda o collegare una delle uscite del secondo monitor. Domanda: sarà possibile usarli entrambi senza crossfire?

Non sono ancora sicuro. Dipende più dal programma stesso che seleziona i dispositivi, il che comporta l'uso esplicito di ogni scheda nel codice.

Vedremo più tardi quando rilasceremo la prima beta.

 
MetaDriver:
Spero che anche 1.1 float sia ancora supportato? Float non è sufficiente nel caso generale, ma in molti casi speciali è anche molto sufficiente. E la memoria extra è spesso molto costosa, specialmente nei calcoli paralleli.
In OpenCL 1.1, il float è ovviamente supportato.
 
WChas:
Se ho capito bene, 1 GPU è un agente molto potente? In questo caso, gli agenti della CPU potrebbero essere disabilitati (a causa della loro bassa velocità rispetto al video)?

Il core della CPU non può essere disabilitato in alcun modo, è usato comunque come piattaforma host nell'ambiente MQL5.

È importante capire che i core della GPU sono "uno sciame di api altamente specializzate" rispetto ai "cavalli da tiro" dei core della CPU. I core della GPU non possono assolutamente sostituire i core di una CPU convenzionale.

Se uno sviluppatore EA è in grado di parallelizzare il compito in centinaia e migliaia di thread indipendenti, la GPU darà un aumento di velocità di 10-100 volte. Ma nella maggior parte dei compiti singoli (trading e indicatori, per esempio), i calcoli sono sequenziali e non c'è la possibilità di parallelizzare efficacemente i processi. Inoltre, l'utilizzo di matematica reale a doppia precisione su GPU normali si traduce in velocità dimezzate rispetto ai valori massimi raggiunti su float. Qui c'è un link interessante con la discussione sul calo di velocità sul doppio: http://www.gpgpu.ru/node/901

Noi stessi compreremo carte di diverse classi per pubblicare una piccola ricerca per i calcoli di alcuni compiti su double e float. Noi stessi siamo interessati a ciò che possiamo ottenere.

Ecco un piccolo studio sulle velocità di calcolo con float e double su diversi dispositivi (relazione completa: http://agora.guru.ru/hpc-h/files/017_Krivov_NvidiaGpuComparision.pdf). Si può vedere che la doppia velocità su Tesla è 2 volte inferiore alla velocità di picco di float, mentre su schede comuni come GeForce 480 GTX è quasi 10 volte più lento. In realtà significa che è possibile ottenere risultati ancora migliori su una normale CPU a 4-8 core con l'uso attivo di SSE2-4 e AVX nei calcoli doppi:


Siamo stati in grado di ottenere accelerazioni centuplicate (nel limite di 100-1000 e più) sui test sequenziali nell'ottimizzatore di strategie di trading e decuplicate (nel limite di 10-20-50-100-200 volte) nella genetica grazie all'idea nativa di eseguire test in parallelo e MQL5 Cloud Network. Ma quando si tratta di parallelismo all'interno di un singolo compito, tutti gli sforzi ricadono sulle spalle del programmatore della GPU che può distribuire intelligentemente il compito tra centinaia o migliaia di core semplici indipendenti.


C'è un'altra sfumatura - molto probabilmente quando si usano più agenti sul computer, solo a un agente sarà assegnato il diritto di usare la GPU. Oppure, se ci sono pochi dispositivi GPU fisici reali, saranno distribuiti tra gli agenti all'inizio degli agenti.

Il punto è che è irragionevole dividere un dispositivo fisico tra più agenti, poiché la condivisione risultante porta a un calo non lineare delle prestazioni finali. In altre parole, 4 agenti su una GPU avrebbero prestazioni molte volte peggiori di 1 agente su una GPU. I nostri test interni lo hanno dimostrato.

Faremo dei test più dettagliati e troveremo una soluzione che massimizzi il risultato.

Кофигурацыя системы на базе Tesla C2050/C2070 (C2075) | GPGPU.ru
  • www.gpgpu.ru
Здравствуйте! Возникла задача внедрения GPU-Computing для решения задач численного моделирования (симуляция и оптимизация фабрик полупроводников с помощью эвристик, докторская работа). Считать действительно много, и есть довольно хороший потенциал для распараллеливания расчетов, никакой роботы с видео, рендерингом и прочим. Помогите, пожалуйста...
 
 
 
Grazie per il chiarimento.
Renat:

........

Siamo stati in grado di ottenere accelerazioni centuplicate (nel limite di 100-1000 e più) sulle ricerche sequenziali in Strategy Trading Optimizer e decuplicate (nel limite di 10-20-50-100-200 volte) sulla genetica grazie all'idea nativa di test paralleli e MQL5 Cloud Network. Ma quando si tratta di parallelismo all'interno di un singolo compito, tutti gli sforzi saranno sulle spalle del programmatore della GPU che può ragionevolmente distribuire il compito tra centinaia o migliaia di core semplici indipendenti.

........

Per me personalmente, è l'accelerazione nell'ottimizzatore che è importante. Quindi sono in attesa del necessario aggiornamento + tabella delle prestazioni delle diverse schede video.
 

Riposto dal thread di OpenCL su MQL4.com:

https://www.mql5.com/ru/forum/137422/page6

Non è così semplice.

Inoltre, Rinat sta confondendo le persone: OpenCL 1.0 può funzionare bene con il doppio float, è una "opzione apertamente disponibile" supportata da tutti i produttori - MA NON PER TUTTE LE VECCHIE MAPPE.

http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/

"Doppia precisione opzionale e mezza virgola mobile

OpenCL 1.0 aggiunge il supporto per la doppia precisione e l'half floating-point come estensioni opzionali. Il tipo di dati doppio deve confermare il formato di memorizzazione IEEE-754 a doppia precisione.

Un'applicazione che vuole usare il doppio dovrà includere la direttiva #pragma OPENCL EXTENSION cl_khr_fp64: enable prima che qualsiasi tipo di dati a doppia precisione sia dichiarato nel codice del kernel. Questo estenderà la lista dei tipi di dati vettoriali e scalari incorporati per includere i seguenti:.....".

Può funzionare nello Strategy Tester ma non funzionerà nell'Expert Advisor OpenCL 1.0 non perché, come dice Rinat, "non c'è un doppio float lì" ma, come ho già detto, perché non c'è un threading sicuro in OpenCL 1.0 e non c'è threading in MT4-5.

OpenCL (e CUDA) ha un sacco di confusione in generale. Che cosa vuoi? Dopo tutto, gli ingegneri del ferro e della radio si sono proposti di cambiare il concetto di programmazione. Hanno una mentalità di ferro.

Ci sarà anche un problema con la cosiddetta selezione della PIATTAFORMA: il programma, cioè MT o DLL o Expert Advisor, DEVE, solo DEVE selezionare manualmente la piattaforma (AMD, Nvidia, Intel), che può essere diversa su un computer e farà girare il kernel OpenCL, e poi selezionare manualmente DEVICE se il computer ha Multi-GPU. La selezione automatica della piattaforma in OpenCL non c'è ancora. Rinat parla di "auto-selezione del più potente" ma non so come sia. Nell'esempio mostrato, non c'è selezione di piattaforma e di dispositivo (GPU, CPU).

Inoltre, non c'è ancora una parallelizzazione automatica dei compiti OpenCL su diverse GPU o su GPU+CPU nello standard. Mettiamola così: in alcune versioni dei suoi driver/SDK AMD introduceva tale autoprovisioning ma ha avuto alcuni problemi e per il momento AMD ha disattivato questa funzione.

In conclusione: sviluppare e abilitare programmi OpenCL c/o MT4-5 richiede un certo sforzo manuale e quindi non funzionerà automaticamente o "ricompilando con opzione". Il che a sua volta è irto di molti stalli nel funzionamento reale. Sarà un bel lavoro e, ciò che è importante, mi permetto di ripetere, purtroppo è una programmazione orientata ai giudei, che è sbagliata. Il debugging dei programmi paralleli per CUDA o OpenCL si è rivelato molto più difficile di quanto i rivoluzionari del ferro abbiano ipotizzato. Nvidia ha persino cancellato la loro conferenza CUDA dell'autunno 2011 - a causa di problemi con i driver e un sacco di lamentele sullo stallo del debug. Quindi, hanno aggiunto altre 1000 nuove funzionalità all'ultimo Toolkit - e cosa fare se i programmi più semplici non funzionano nemmeno o funzionano con interruzioni? Dopo tutto, non hanno nemmeno menzionato la metà del meccanismo interno di OpenCL o CUDA nei loro strumenti descrittivi.

La velocità della GPU (in GigaFLOPS) di una scheda video sospesa a causa della compatibilità del driver o del software è zero.

OpenCl и инструменты для него. Отзывы и впечатления. - MQL4 форум
  • www.mql5.com
OpenCl и инструменты для него. Отзывы и впечатления. - MQL4 форум