OpenCL: test di implementazione interna in MQL5 - pagina 39

 
casinonsk: Il secondo è ancora a carico 0.

E il terzo? O non c'è nessuno?

QE 0 ParallelTester_00-01x__1 (EURUSD,H1) 13:23:02 Conte inticators = 16; Count history bars = 144000; Count pass = 480000

EF 0 ParallelTester_00-01x__1 (EURUSD,H1) 13:23:02 Risultato su Gpu MachResult==0.0 a 0 pass

Ho l'impressione che il test sia andato male in qualche modo. Oh, e impostate Count pass su un valore più basso, 1280 è sufficiente.

E dove sono i risultati comparativi CPU vs GPU?

 
joo:


Al CountPass 262144 il driver della scheda video si blocca inconsapevolmente. Tuttavia, si rialza immediatamente.

Ho scoperto con il metodo del professor Tychkov che CountPass non può essere più di 6628025 con CountBars 10, altrimenti il compilatore MQL si rifiuta di compilare e genera un errore:

'inds' - la sezione delle variabili globali è troppo grande ParallelTester_00-01x.mq5 86 7

Quando CountBars è più piccolo, il compilatore salta anche valori più terribili di CountPas.

2012.03.17 20:40:36     ParallelTester_00-01 x (EURUSD,H1)       Соunt inticators = 16; Count history bars = 10; Count pass = 6628025
2012.03.17 20:40:36     ParallelTester_00-01 x (EURUSD,H1)       GPU time = 717 ms

Oh, caro!

Come fa il compilatore MQL a sapere che semplicemente non c'è abbastanza memoria sulla GPU (o non sulla GPU????)? - Sembra che il driver della scheda video si blocchi a causa della mancanza di memoria.


a Vladimir:

E perché dovrei dare ad ogni mosca lo stesso array (il consumo di memoria è direttamente proporzionale al numero di CountPass)? - Lasciate che prendano dati da una matrice comune.

 
joo:

a Vladimir:

Perché dovrei dare ad ogni mosca lo stesso array (la memoria viene consumata in modo direttamente proporzionale al numero di CountPass) ? - Lasciate che prendano dati da una matrice comune.

Hanno già una serie comune di prezzi e indicatori.

E nell'array la cui lunghezza è CountPass, ci sono delle non-griglie (un parametro ottimizzato). È individuale per ogni griglia.

--

... Ma mi piace il tuo modo di pensare. :)

 
joo:

Ho scoperto con il metodo del professor Tychkov che CountPass non può essere maggiore di 6628025 con CountBars di 10, altrimenti il compilatore MQL si rifiuta di compilare e genera un errore:

'inds' - la sezione delle variabili globali è troppo grande ParallelTester_00-01x.mq5 86 7

Quando CountBars è più piccolo, il compilatore salta anche valori più terribili di CountPas.

Oh, caro!

Come fa il compilatore MQL a sapere che semplicemente non c'è abbastanza memoria sulla GPU (o non sulla GPU????)? - Sembra che il driver della scheda video vada in crash a causa della mancanza di memoria.

А! Quindi, c'è un plus elementare nel mio codice (linea 82).

////////////float nets[sizeof(NETs)];   // Вот так было. В корне неправильно.
////////////float inds[sizeof(Inds)];  

////////////float nets[sizeof(NETs)/sizeof(float)];  // Вот так будет видно в чём была ошибка.
////////////float inds[sizeof(Inds)/sizeof(float)];  // И в принципе будет работать, хотя лучше...
// ...Вот так - правильно и понятно откуда ноги.
float nets[CountPass*CountInd];
float inds[CountInd*CountBars];  

Risolvetelo e otterrete quasi un quadruplo "aumento di memoria" .....nasharoo...!!! :)))))))))))))

// Mi fa sentire come Babbo Natale in momenti come questo... ;)

 
MetaDriver:

// In momenti come questo mi sento come Babbo Natale... ;)

// Se tu sei Babbo Natale, io chi sono? ;)
 
Ho guardato il forum in lingua inglese dei cinque. C' è un thread simile, ma l'attività e l'interesse mostrato è incomparabile a quello del forum in lingua russa.
 
Mathemat:

E il terzo? O non c'è nessuno?

Sembra che il test sia andato male in qualche modo. E impostate Count pass su un valore più piccolo, 1280 è sufficiente.

E dove sono i risultati comparativi su CPU vs GPU?

CL 0 ParallelTester_00-01x__1 (EURUSD,H1) 00:02:09 OpenCL init OK!
IH 0 ParallelTester_00-01x__1 (EURUSD,H1) 00:02:09 Tempo GPU = 187 ms
FN 0 ParallelTester_00-01x__1 (EURUSD,H1) 00:02:09 Conte inticators = 16; Count history bars = 144000; Count pass = 1280
CL 0 ParallelTester_00-01x__1 (EURUSD,H1) 00:02:09 Risultato su Gpu MachResult==0.92493 a 1190 passare
 

Dovete avere una funzione MQL che restituisca la temperatura della scheda video. Altrimenti, è un buon modo per bruciarsi. Non sul proprio, quindi su quello del cliente.

// Se non c'è una funzione MQL, dovrete usare la DLL, il che non è buono - il mercato è tagliato fuori e altri inconvenienti.

 
MetaDriver:

Dovete avere una funzione MQL che restituisca la temperatura della scheda video. Altrimenti, è un buon modo per bruciarsi. Non da solo, quindi dalla parte del cliente.
Dovrebbe anche restituire la temperatura limite e rallentare i calcoli stessi quando si avvicina alla temperatura limite. Ci sono diverse schede grafiche e diverse dissipazioni di calore.
 
MetaDriver:

Dovete avere una funzione MQL che restituisca la temperatura della scheda video. Altrimenti, è un buon modo per bruciarsi. Non sul proprio, ma su quello del cliente.

// Se non c'è una funzione MQL, dovremo usare una DLL, il che non è buono - il mercato è tagliato fuori e altri inconvenienti.

I giochi per computer non si preoccupano della temperatura della GPU e la caricano alla grande, e non succede niente - le schede grafiche funzionano. E nessun giocatore penserebbe di chiedere all'editore del gioco di rallentare gli FPS per non rovinare la GPU. Con i giocatori l'analogia è diretta - abbiamo bisogno di velocità, e la temperatura dovrebbe essere curato ulteriormente se necessario (sistema di raffreddamento supplementare).

Allora avete anche bisogno della funzione MQL che restituisce la temperatura della CPU. Altrimenti, il processore si brucerà.


FPS se è fattibile - perché no? - Non sarebbe male, naturalmente.