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

 
Alexey Volchanskiy:

C'è un grosso problema con OCL e in generale con tutti i mezzi di parallelizzazione - pochissimi algoritmi possono essere effettivamente parallelizzati. Perché negli esempi di calcolo parallelo così popolari sono simulazione di onde, palla che cade su una piramide con la loro distruzione, cioè tutto ciò che può essere rotto in piccoli pezzi e calcolato sul proprio processore.

Per il forum/orso, naturalmente, si tratta di reti neurali, varie trasformate di Fourier, wavelets, filtri, ecc. Ma ci sono algoritmi lineari che non possono essere messi in parallelo. Come regola, è quando il risultato del passo successivo dell'algoritmo è basato sul risultato del passo precedente.

Ho scritto questo per coloro che stanno pensando che comprerò due schede video fighe e tutto funzionerà bene nel mio tester.

Quando ho iniziato a lavorare con questa roba, ho avuto la sensazione che l'algoritmo sarà basato sui risultati del passo precedente, quindi l'ho scritto per quelli che pensano: "Comprerò 2 chip video fighi e tutto volerà nel mio tester. Se vuoi commerciare con lui, devi avere un buon rapporto con lui.

 
Alexey Volchanskiy:

C'è un grosso problema con OCL e in generale con tutti i mezzi di parallelizzazione - pochissimi algoritmi possono essere effettivamente parallelizzati. Perché negli esempi di calcolo parallelo così popolari sono simulazione di onde, palla che cade su una piramide con la loro distruzione, cioè tutto ciò che può essere rotto in piccoli pezzi e calcolato sul proprio processore.

Per il forum/orso, naturalmente, si tratta di reti neurali, varie trasformate di Fourier, wavelets, filtri, ecc. Ma ci sono algoritmi lineari che non possono essere messi in parallelo. Come regola, è quando il risultato del passo successivo dell'algoritmo è basato sul risultato del passo precedente.

Ho scritto questo per coloro che sono desiderosi di acquistare due cartucce cool cool e tutto andrà bene nel mio tester.

Quando la logica interna dell'EA non è parallela, l'intero EA può essere parallelo, un thread - un EA. Questo è il modo in cui il cloud e gli agenti in generale funzionano - un thread == un EA == una storia eseguita, ho dato un esempio di un tale parallelismo.

Ad esempio, questo approccio permette non solo di ottenere un significativo aumento di velocità negli ottimizzatori fatti in casa senza molti problemi, ma rende anche possibile eseguire un'ottimizzazione interna auto-motivata come parte dell'ottimizzazione generale nel cloud (ad esempio l'ottimizzazione con roll-forward interno). E naturalmente nessuno vieta di usare una parallelizzazione aggiuntiva all'interno di ogni thread (non l'ho fatto nel mio esempio, anche se è possibile). Così, quando si tratta di ottimizzazione possiamo dire che c'è sempre qualcosa che si può parallelizzare, sempre.

 
Andrey Dik:

Quando la logica interna dell'EA non è parallelizzata, è possibile parallelizzare l'intero EA, un thread - un EA. Questo è il modo in cui il cloud e gli agenti funzionano in generale, un thread == un EA == un'esecuzione della storia, ho dato un esempio di tale parallelismo.

Ad esempio, questo approccio permette non solo di ottenere un significativo aumento di velocità negli ottimizzatori fatti in casa senza molti problemi, ma rende anche possibile eseguire un'ottimizzazione interna auto-motivata come parte dell'ottimizzazione generale nel cloud (ad esempio l'ottimizzazione con roll-forward interno). E naturalmente nessuno vieta di usare una parallelizzazione aggiuntiva all'interno di ogni thread (non l'ho fatto nel mio esempio, anche se è possibile). Così, quando si tratta di ottimizzazione possiamo dire che c'è sempre qualcosa che si può parallelizzare, sempre.

Tutto vero, ma cosa ha a che fare la messa in evidenza con OCL? Spetta agli sviluppatori dell'ottimizzatore fornire l'ottimizzazione sulla GPU, come sul cloud, cosa che mi sembra di capire non sia ancora il caso. O stai parlando di scrivere un wrapper intorno all'EA, all'interno del quale vengono eseguiti come thread OCL? L'ottimizzatore di oggi non capirebbe una tale mossa.

Tutto quello che dovete fare ora è scrivere il vostro ottimizzatore da soli, potete fare tutto quello che volete.

In generale, lo scopo del post era quello di rendere sobri i non programmatori o i programmatori principianti in generale e privarli di inutili illusioni.

 
Alexey Volchanskiy:

Tutto vero, ma cosa c'entra l'evidenziazione con OCL? È compito degli sviluppatori dell'ottimizzatore fornire l'ottimizzazione sulla GPU, come sul cloud, cosa che deduco non sia ancora il caso. O stai parlando di scrivere un wrapper intorno all'EA, all'interno del quale vengono eseguiti come thread OCL? L'ottimizzatore di oggi non capirebbe una tale mossa.

Tutto quello che dovete fare ora è scrivere il vostro ottimizzatore da soli, potete fare tutto quello che volete.

In realtà il punto del post era quello di rendere sobri i non programmatori o i novizi in generale e spogliarli di inutili illusioni.

Ho dato un esempio in cui l'intera logica dell'EA insieme alla storia testata viene inviata al dispositivo OCL(un thread == un EA == un'esecuzione della storia). Questa soluzione è compresa dal tester e dall'ottimizzatore. Naturalmente, questa soluzione è per i programmatori.

Ma per gli utenti comuni - sì, non otterranno alcuna velocità dalle innovazioni nei loro EA. Questo può essere fatto solo quando gli sviluppatori riescono a inviare un intero EA a OCL sotto forma di un programma specifico ricompilato simile agli shader, ma finora questo non è il caso.

 
Andrey Dik:

Ho dato un esempio in cui l'intera logica EA viene inviata al dispositivo OCL insieme alla storia testata(un thread == un EA == un'esecuzione della storia). Questa soluzione è compresa dal tester e dall'ottimizzatore. Naturalmente, questa soluzione è per i programmatori.

Ma per gli utenti comuni - sì, non otterranno alcuna velocità dalle innovazioni nei loro EA. Questo può essere fatto solo quando gli sviluppatori riescono a inviare un intero EA a OCL sotto forma di un programma specifico ricompilato simile agli shader, ma finora non stiamo parlando di questo.

Non posso ancora dire nulla sull'esempio; devo andare a controllare OCL di persona, ma sembra funzionare.

D'altra parte, non credo molto in quelli evidenziati. MQ dovrà scrivere alcuni ponti che permettano di estrarre le API MQL da OCL, specialmente le funzioni di trading, l'accesso alle serie temporali e agli indicatori... Questo è un buio totale, MT5 ha ancora un sacco di malattie infantili che sono ancora in fase di correzione, di solito attraverso un riferimento a SD.

 
Alexey Volchanskiy:

Non posso ancora giudicare l'esempio, devo sentire l'OCL di persona, ma sembra essere un vivo.

Ma non credo molto in quello evidenziato. MQ dovrà scrivere alcuni ponti per essere in grado di estrarre le API MQL da OCL, specialmente le funzioni di trading, l'accesso alle serie temporali, gli indicatori... Questa è una tristezza totale, MT5 ha ancora un sacco di effetti collaterali infantili che sono ancora in fase di correzione, di solito tramite SD.

Va bene, ma il fatto che il meta-editor rimanga al livello di "Notepad" del 1995 è abbastanza triste, e con il fatto che siamo nel 2017. Stanno facendo qualcosa, ma per scriverci qualcosa bisogna scrivere in un editor antico.

Signori SVILUPPATORI, fate almeno un'evidenziazione di corrispondenza finalmente, come in Notepad!

 
Alexey Volchanskiy:

È fantastico, ma c'è un grosso problema con OCL e con tutti gli strumenti di parallelizzazione in generale: pochissimi algoritmi possono essere effettivamente parallelizzati.



Tyu, è semplice. Non dovete pensare se un algoritmo è parallelo o no. L'approccio è il seguente: quando guardi l'algoritmo - vedi un ciclo -> considera che può già essere parallelo (una buona probabilità). Nessun loop - non c'è motivo di preoccuparsi.

 
Vitaly Muzichenko:

Va bene, ma il fatto che il meta-editor rimanga al livello del Notepad del 1995 è abbastanza triste, anche se siamo nel 2017. Stanno facendo qualcosa, ma per scriverci qualcosa bisogna scrivere in un editor antico.

Signori SVILUPPATORI, fate almeno un'evidenziazione di corrispondenza finalmente, come in Notepad!

Sì, ho già scritto due post qui su quanto siano rozze le zecche. Sono stati cancellati. E il tuo post sarà cancellato. Non c'è bisogno che gli amministratori/moderatori in questo thread menzionino i difetti di MQ. Una festa durante la peste...
 
Alexey Kozitsyn:
Sì, ho già scritto 2 post qui sulle zecche crude. Soppresso. E il tuo post sarà cancellato. Non c'è bisogno che gli amministratori/moderatori in questo thread menzionino i difetti di MQ. Festa durante la peste...

In qualche modo ricorda quando dipingono una macchina, mettono ruote in titanio e tutti i tipi di gingilli inutili su di essa, ma il motore della macchina prima che "bussava" e si inceppava, che è tutto inutile, perché la macchina è rotta.

E qui, un mucchio di tutti i tipi di espedienti per scrivere, ma dove tutto deve essere scritto, è a livello del 1995, in esso, per scrivere - una tortura, se il codice consiste di più di 200 linee

e allo stesso tempo Renat scrive:

Renat Fatkhullin:

Sfortunatamente, dovete dimenticarvi di OpenCL su Windows XP. E i sistemi operativi a 32 bit in generale - il 2017 sta arrivando.

Dov'è il meta-editore del 2016 allora?

Si prega di fare almeno l'evidenziazione del codice, ed eventualmente se possibile - la piegatura!

 
Vitaly Muzichenko:

In qualche modo ricorda quando dipingono una macchina, mettono ruote in titanio e tutti i tipi di gingilli inutili su di essa, ma il motore della macchina prima che "bussava" e si inceppava, che è tutto inutile, perché la macchina è rotta.

E qui, un mucchio di tutti i tipi di espedienti per scrivere, ma dove tutto deve essere scritto, è a livello del 1995, in esso, per scrivere - una tortura, se il codice consiste di più di 200 linee

e allo stesso tempo Renat scrive:

Dov'è il meta-editore 2016 allora?

Per favore, fate almeno l'evidenziazione del codice, ed eventualmente, se possibile, la piegatura!

Anch'io a volte mi interrogo sulla direzione che sta prendendo MT. Ma gli sviluppatori sanno meglio di tutti...