OpenCl e i relativi strumenti. Recensioni e impressioni. - pagina 5

 
Mathemat:

Ottimo, fornirà una base per confrontare MQL e C/C++. Ho solo fornito i fatti. E comunque, perché diavolo dovrei essere un Thomas the Believer?

Ci potrebbe essere un po' più di differenza sui nervi, non c'è dubbio.

E, a proposito, mi piacerebbe vedere il tuo "solo i fatti".

Il mio "solo i fatti" è quasi arrivato. "Quasi" - perché ho ripescato le fonti dei miei vecchi test. Li aggiornerò un po' e posterò qui le fonti con i risultati dei test sotto forma di tabella.

 
joo: E, a proposito, mi piacerebbe vedere il tuo "solo i fatti".

Proprio qui. Vedi il mio secondo post nella pagina.

Tu, a proposito, hai già risposto al mio post con il link. Il codice C di cui sopra può essere facilmente rielaborato in MQL4. Si prega di vedere l'allegato.

File:
pi.mq4  1 kb
 
Mathemat:

Proprio qui. Vedi il mio secondo post nella pagina.

A proposito, hai già risposto al mio post con il link. Il codice C di cui sopra è facilmente rielaborato per MQL4. Si prega di vedere l'allegato.

Per favore, fate una tabella dei risultati dei test e postatela qui, in modo che nessuno che legge questo thread debba saltare attraverso i link.
 
AlexEro:

Ti ho mandato un link alle foto di questi colossi in un messaggio privato - non per assecondare il ******ismo digitale dei ragazzi delle scuole professionali.

Dai, credimi, la tua foto non cambierà i loro numeri qui neanche di una percentuale. Vai avanti e pubblicalo.

Ma quanto durerà? In un buon modo, dovreste montare un buon raffreddamento per un tale impianto, ad esempio ad acqua, come nella prossima immagine.

 
joo:
Per favore, scrivete i risultati dei test sotto forma di tabella e postateli qui, in modo che nessuno che legge questo thread debba saltare attraverso i link.

Non è un tavolo. Un paio di foto.

Test di programmi parallelpi_x.cpp con diverse impostazioni di compilazione. Quando si confronta con MQL4, solo il 1° risultato è importante: 6,723 secondi. Nessun acceleratore (SSE*, IPP, OML) è usato lì.

Ma se qualcuno volesse masturbarsi e vedere come cambiano i risultati quando gli acceleratori sono abilitati, l'allegato qui sotto è un archivio con gli EA compilati e le librerie parallele richieste. Tutto ciò di cui avete bisogno è metterli tutti in una directory ed eseguirli dalla linea di comando.

Naturalmente, questi risultati non rappresentano alcuna competizione con i mostri dell'array di schede grafiche.

Lo stesso programma riscritto in MQL4:


Il risultato: 22,98 secondi, cioè 3,4 volte di più. Ma non c'è lavoro con gli array lì, e può essere cruciale per noi. In allegato il codice dello script.

File:
release.zip  278 kb
pi_1.mq4  1 kb
 
joo:

MQL5 è 20 volte più veloce di MQL4.

C++ è 6 volte più veloce di MQL5 (quando si usano librerie che parallelizzano automaticamente l'esecuzione).

Totale: 20*6=120 volte.

Se usate i calcoli della GPU, sarà ancora più veloce.

TOTALE: 10/120=0,083c.

qualcosa del genere.

Quindi, fanfara! Ci sono quattro diversi compilatori sul ring, in competizione per... per compilare.

Beh, è una battuta, ovviamente. Ma seriamente, sono stati scritti sei test. I risultati sono mostrati nella tabella sottostante. E i commenti sono ancora più bassi. :)

#Test
Descrizione
Nome eseguibile
Risultato del test, s
1
Script Ex5 e libreria Ex5
1 compilatore MLP MQL.ex5
97.2
2
Script Ex5 e libreria dll C++, compilatore MS, tutte le ottimizzazioni disabilitate
2 compilatore MLP MS nonOpt.ex5
42.6
3
Script Ex5 e libreria dll C++, compilatore MS, tutte le ottimizzazioni su
3 MLP MS compilatore Opt.ex5
27.1
4
Script Ex5 e libreria dll C++, compilatore Intel, tutte le ottimizzazioni incluse
4 MLP Intel compiler.ex5
12.5
5
Script Ex4 e libreria Ex4
5 MLP MQL4 compiler.ex4
669.6
6
Script Ex4 e libreria dll C++, compilatore Intel, tutte le ottimizzazioni abilitate
6 MLP MQL4 compilatore Intel.ex4
10.7




Come test di calcolo pesante viene utilizzata una rete neurale a 4 strati MLP 80-100-100-10, progettata come librerie collegabili ex4, ex5, e dll.

Lo vediamo:

- i risultati delle librerie ex5 collegate e delle librerie ex4 differiscono di un fattore 6,8 (1 e 5 test)

- i risultati delle librerie eX5 collegate e le librerie dll del compilatore Intel differiscono di un fattore di 7,8 (1 e 4 test)

- i risultati delle librerie eX4 collegate e le librerie dll del compilatore Intel differiscono di 62,5 volte (test 5 e 6)

Conclusioni:

Naturalmente, stavo un po' esagerando riguardo alla differenza di 20 volte tra MQL4 e MQL5. Una tale differenza si verificherà (ricordo dove quel numero mi è saltato in mente) sotto l'uso intensivo di array bidimensionali, ma sono troppo pigro per modificare i test specificamente per quella caratteristica specifica (inoltre, non corrisponderà ai casi tipici di calcoli "pesanti" - i casi tipici sono presentati nei test), quindi, potete prendere la mia parola per questo o scrivere un test da soli. Pertanto, possiamo parlare di una differenza di velocità di 6,8 volte tra MQL4 e MQL5 e di una differenza di 62,5 volte tra MQL4 e C++.

E sono scoraggiato da questo fatto - ahtung! - Lo script MQL4 che ha chiamato la dll funziona più velocemente dello script MQL5 con la stessa dll... Cosa significa? - L'ho controllato, l'ho eseguito diverse volte, nessun errore. Gli sviluppatori sembrano aver detto che MT5 ha ottimizzato la chiamata dll rispetto a MT4. O si tratta di peculiarità delle build (MT5 574 e MT4 409) e i test non sono del tutto corretti o... Non lo so.


Chi ne ha bisogno, può usare la griglia (dll compilata di 4 o 6 test - griglia molto veloce), i sorgenti sono allegati. Il numero di neuroni in ogni strato è configurabile. Ma l'ottimizzatore (sia per il 4 che per il 5) non supporta più di 64 parametri, inoltre bisogna usare un grande passo, quindi questo mostro (come nei test, 80-100-100-10, 19210 parametri da ottimizzare!) non può essere addestrato con mezzi standard, bisogna usare algoritmi di ottimizzazione personalizzati. A proposito, per questo (e non solo per questo) ho deciso di fare uno strumento a pagamento (sarà nel negozio, ovviamente), che permetterà di utilizzare sia ottimizzatori personalizzati a 4 che a 5 passi per allenare un numero illimitato di parametri, anche a 0 passi.

File:
tests_mlp.zip  71 kb
 

È convincente, joo, anche molto convincente. Ma ci sono un paio di punti.

In primo luogo, anche il miglior risultato (opzione 3) è meno di 4 volte migliore dell'opzione 1 quando compilato da MS.

In secondo luogo, non credo che il compilatore all-inclusive di Intel sia migliore di MS per più di un fattore 2. Quindi avete abilitato più ottimizzazioni con Intel.

In ogni caso - impressionante. Aspettando che il tavolo sia riempito fino alla fine.

Ora so a cosa servono questi array di schede video: a fare questi calcoli ad ogni tick!

 
Mathemat:

Secondo, non credo che il compilatore all-inclusive di Intel sia più del doppio di quello di MS. Quindi, Intel ha più ottimizzazioni abilitate.

Quali sono - tutti. Non ha senso usare un compilatore senza usare tutte le sue caratteristiche - i pesci cercano dove c'è il più profondo, mentre il programmatore cerca il miglior compilatore. In questo senso, i compilatori di MQ non sono personalizzati, quindi possiamo supporre che siano ottimizzati.
 

E questo fatto mi ha scoraggiato, akhtung! - Lo script MQL4 che chiama la dll funziona più velocemente dello script MQL5 con la stessa dll... Cosa significa? - L'ho controllato, l'ho eseguito diverse volte, nessun errore. Gli sviluppatori sembrano aver detto che MT5 ha ottimizzato la chiamata dll rispetto a MT4. O si tratta di peculiarità delle build (MT5 574 e MT4 409) e i test non sono del tutto corretti o... Non lo so.



Grazie, è molto illustrativo ed esplicativo.

Credo che non dovremmo confrontare tanto le singole percentuali: perché la velocità della CPU (beh, se la prendi in MegaHertz MHz, o GigaHertz, GHz) del computer sospeso ... è zero.

Quando la differenza di velocità è di circa il 10-20%, ha senso essere più preoccupati dell'affidabilità del programma e del suo ambiente e della gestione degli errori. Per esempio, quando si usa la DLL fatta in MSC, si deve prestare attenzione a come è collegata a MSVCRT.DLL e a quale versione, perché deve lavorare nell'ambiente del complicato processo terminal.exe e nell'ambiente del blocco di inizializzazione di MSVCRT.DLL, che può essere diverso da versione a versione, e così via. Per la normale gestione degli errori nella DLL, MetaTrader costruisce (e controlla) una catena di eccezioni, che di per sé rallenta l'intero sistema e chiama la DLL e così via.

A proposito della velocità dei neuroni:

qui c'è un uomo ha tradotto la libreria di reti neurali FANN in OpenCL e sostiene un'accelerazione di 20x sulla scheda media GTX 285:

"Sulla mia attuale GPU (GeForce 9500 GT), sto ottenendo più o meno la stessa velocità tra la versione normale e quella OpenCL. Attualmente ho una GTX 285 in ordine, e dovrebbe essere almeno 10 volte più veloce. Con una GPU moderna, come la GTX 480, mi aspetto che sia almeno 20 volte più veloce del mio Mac Pro Nehalem a 2.26GHz. "

...

"Sì, la nuova scheda (GTX 285) fa girare il kernel circa 20 volte più velocemente".

http://leenissen.dk/fann/forum/viewtopic.php?f=2&t=658&start=0

http://leenissen.dk/fann/wp/

 

Quasi tutti ci sono stati, naturalmente.

Per i fanatici di B4 che non visitano mql5.com: OpenCL: Test di implementazione interna in MQL5

Tuttavia, ci siamo quasi.

Sospetto che sarà molto interessante per gli autotrader che usano altre piattaforme.