OpenCL: test di implementazione interna in MQL5 - pagina 25

 
Ashes:

2012.03.05 17:43:16 Terminale CPU: GenuineIntel Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz con OpenCL 1.1 (4 unità, 3092 MHz, 4008 Mb, versione 2.0)

2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CpuTime/GpuTime = 0.734767766287369

[...] Forse ho "granate del sistema sbagliato"? (Intendo la versione AMD SDK).

Fantastico. Ho comprato il core, la madre, la memoria e il cooler dal negozio più usuale che ho trovato in rete. Il costo totale è di circa 6k. Credo che mi abbiano fatto scivolare per sbaglio un sassolino dal futuro.

Forse è a causa dell'SDK. Non credo che valga un difetto della memoria, di default è solo DDR-III. E monocanale o no, lo influenza certamente, ma non così terribilmente.

 
Mathemat:

Interessante. La scheda fyords è più forte (GeForce GT 440), e il tempo di calcolo è un ordine di grandezza più lungo. ...

Mi chiedo se la velocità di calcolo dipende dalla risoluzione (ho 1920x1080), perché anche il desktop mangia qualcosa (tema Aero)?

Forse è per questo che ci vuole più tempo per calcolare.

 
fyords: E mi chiedo se la velocità di calcolo dipende dalla risoluzione (ho 1920x1080), perché anche il desktop mangia qualcosa (tema Aero)?

Sì, potrebbe. Cosa mostra l'indice delle prestazioni di Windows Aero? Ecco il mio:


Non ho bisogno di nessuna di quelle cose a forma di papillon, quindi è spento.

P.S. Controllato. Nessun effetto.

 

L'ultimo test (3.12.2011) è passato normalmente, ma ora viene fuori qualche glitch, ma il punteggio è 6.8 per il video. Forse è questo il problema (il glitch). Il nuovo hardware non è installato. Può essere un problema con il nuovo hardware, allora aspetterò una nuova release, anche lì farò un test.

 

x32

x32

x64

x64

cpu-z

1

2

 

Ho aggiunto la genetica stupida e l'ho messa in loop per massimizzare. Ho ottenuto un ottimizzatore che adatta un reticolo a strato singolo su dati simulati equivalenti a 500 giorni di storia su prezzi aperti a cinque minuti (16 indicatori per ingresso).

Si prega di testare.

A questo punto considero l'agitazione completata con successo, perché il test dell'ottimizzatore è insufficiente. ;)

Chi ha un rallentamento (rispetto agli altri) - ora sai per cosa risparmiare ;-)

Quindi, i miei risultati:

2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Full time of optimization == 14 sec 305 ms
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Optimization is closing. Best result == 1.91356 at 92 generation.
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 92: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 91: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 90: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 89: MaxResult==1.91356
.............
.........

Lasciatemi spiegare per l'ultima volta sulle mie dita: questo è un ciclo completo di ottimizzazione di una rete neurale primitiva Expert Advisor.

// Beh, quasi un Expert Advisor. Calcoli aggiuntivi nel codice di QUESTO "Expert Advisor", in modo che calcoli i profitti in modo abbastanza realistico,

// non supererà (in tempo di conto. con implementazione intelligente) quei calcoli che ci sono già. Cioè il rallentamento può essere, diciamo, duplice.

 
MetaDriver:

Ho aggiunto la genetica stupida e ho messo in loop la massimizzazione. Ho ottenuto un ottimizzatore che adatta un reticolo a uno strato su dati simulati equivalenti a 500 giorni di storia sui prezzi di apertura a cinque minuti (16 indicatori per ingresso).

Si prega di testare.

...

Grazie.))

...

NJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:06 Generation 36: MaxResult==2.29423
NO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:08 Generation 37: MaxResult==2.29426
FE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:10 Generation 38: MaxResult==2.29426
PJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 39: MaxResult==2.29427
HO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 40: MaxResult==2.29427
QE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 41: MaxResult==2.29427
EJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 42: MaxResult==2.29427
LP 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 43: MaxResult==2.29427
KE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 44: MaxResult==2.29427
DI 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Optimization is closing. Best result == 2.29427 at 44 generation.
KO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Full time of optimization == 81 sec 917 ms 
 

MetaDriver, grazie mille. Avete fatto il vostro lavoro di propaganda con una A. Allo stesso tempo mi hai dato l'opportunità di controllare la mia configurazione "senza cavalli" senza scheda grafica discreta e di essere molto, molto sorpreso.

Esegui il tuo ottimizzatore. Funziona così:

2012.03.05 23:00:12     Terminal        CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80 GHz with OpenCL 1.1 (2 units, 2793 MHz, 7912 Mb, version 2.0)
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Full time of optimization == 58 sec 141 ms
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Optimization is closing. Best result == 1.87689 at 60 generation.
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 60: MaxResult==1.87689
2012.03.06 04:24:33     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 59: MaxResult==1.87689
2012.03.06 04:24:32     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 58: MaxResult==1.87689
2012.03.06 04:24:31     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 57: MaxResult==1.87689

Supponendo che ogni generazione conti per circa la stessa quantità di tempo, otteniamo che rispetto alla tua Ferrari, il mio "tazi" è circa 6,5-7 volte più lento, proprio come l'ultima volta (58,14 sec per 60 generazioni ~ 0,97 sec/generazione).

2 Graff: se si potesse disabilitare la grafica discreta per la durata del test e fare il test sulla grafica integrata della pietra, sarebbe molto interessante (allo stesso tempo e guardare i progressi di Intel in questo settore nella transizione da Lynnfield a Sandy Bridge).

Ma per farlo, dovresti scaricare l'SDK di AMD per OpenCL. Non peggiorerà la situazione della tua scheda discreta (ha il suo driver), ma puoi avere OpenCL 1.1 sul tuo PC, anche se non sono sicuro al 100% che funzionerà.

Ma se si rifiuta, non mi offendo.

 

Re-post dal forum mql4.

Colleghi, avrete molta confusione e problemi con OpenCL. Non aspettatevi risultati facili.

Ci sono molte opzioni perché OpenCL è una tecnologia software che è incardinata sul driver video. In effetti, il driver video diventa un piccolo sistema operativo. Tutto ciò che si blocca lungo la strada: UltraVNC, MSI afterbufner, Agnitum OutPost web-control interattivo e mille altri programmi possono ostacolare il normale funzionamento di OpenCL.

Detto questo, anche se si riesce a far funzionare OpenCL per semplici calcoli threaded, c'è ancora un altro ostacolo insormontabile da superare, e cioè: per i calcoli complessi - la precisione tecnologica (supporto IEEE parziale a 32 bit) e operativa(perdita di precisione quando si overclocca una scheda di gioco) della GPU non è ancora sufficiente per i calcoli scientifici seri. Inoltre, mentre le GPU nVidia hanno l'elaborazione a doppia precisione a 64 bit su quasi tutte le schede video moderne, le schede video AMD ce l'hanno solo su alcune serie top di gamma. Anche nVidia ha un bug, ma diverso - sono in combutta con Microsoft e quindi il loro famigerato CUDA (e OpenCL) in realtà non funzionano ad esempio su Server 2003, ma allo stesso tempo funzionano bene su Server 2008 e persino sul vecchio Win XP - puramente per motivi di marketing di Microsoft.

OpenCL è per lo streaming veloce di calcoli imprecisi a 32 bit come la convoluzione o il filtraggio.
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
AlexEros:Perdita di precisione quando si overclocca una scheda di gioco

Chi lo overclocca? Ottenere un guadagno del 10-15% in velocità di calcolo, ma con il rischio di un errore di calcolo dovuto alla morte di una sola ape? Beh, non stiamo giocando un gioco in cui non disegnare un centinaio di vertici non influisce su nulla...

OpenCL è per lo streaming veloce di calcoli imprecisi a 32 bit come la convoluzione o il filtraggio.

Facciamo un avvertimento. I calcoli devono essere davvero massicci e pesanti per considerare significativa la perdita di precisione. L'integrazione è una somma/moltiplicazione massiccia, è un caso pesante.

Una cosa è sommare due numeri, moltiplicare per un terzo (ognuno di essi con calcoli a 32 bit ha una precisione sufficiente per i calcoli pratici) e scrivere il risultato in qualche cella come risultato di un'iterazione del ciclo e non utilizzarlo in nessun altro modo all'interno della GPU.

Un'altra cosa è calcolare pi greco in un miliardo di iterazioni usando la più lenta serie convergente di Leibniz (questa serie è popolarmente usata per dimostrare la tecnologia OpenMP):


Nel secondo caso, quando si usano numeri a 32 bit, c'è il pericolo reale di perdere precisione, perché si sommano un miliardo di numeri. Terver dice che nel 99,7% dei casi, l'errore risultante non supererà la precisione di un numero moltiplicato per 2*10^5. Questo è serio - e non sempre.

Nessuno impedisce a uno sviluppatore di fare diversi calcoli precisi su una CPU onesta per stimare gli errori reali.

Mi sembra che con ragionevoli precauzioni questa tecnologia possa essere utilizzata. E se usate processori moderni di entrambi i produttori (AMD APU Llano o anche Intel Sandy Bridge), potete dimenticarvi della scheda grafica discreta per un po': che differenza fa se sono 100 o solo 25 volte più veloce... E nessuna ape morirà, dato che non ho intenzione di overcloccare il processore.