Ecco cosa si può fare con OpenCL direttamente in MetaTrader 5 senza alcuna DLL - pagina 5
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
In questo contesto AMD sembra vantaggiosa non solo per i calcoli matematici ovviamente più veloci (le mining farm sono solitamente costruite su AMD), ma anche per la sua strategia di standard aperti (si sono aperti e stanno promuovendo molto al pubblico). L'introduzione di OpenCL 2.0 nelle schede AMD ha portato questa specifica molto vicino alle capacità di CUDA e ora non ha senso gettare le basi per CUDA.
Questa è un'informazione utile, mentre circa 7 anni fa stavo giocando con CUDA e pensavo che fosse ancora il migliore.
Lamia domanda è: e i debugger per OpenCL al giorno d'oggi? Non mi riferisco al terminale MT5 ma al terminale MT5 in generale. Finora, ho visto solo un debugger di Intel come plugin di Visual Studio e un debugger stand-alone (depricato) della stessa azienda. Ma sembra che siano i processori e la grafica incorporata di Intel ad essere destinati a questo scopo. Non capisco bene come fare il debug del codice parallelo - per me è ancora solo una scatola nera.
Puoi lavorare con CUDA solo per te stesso o per aree specifiche dove puoi richiedere la presenza esplicita di schede Nvidia.
Sì, CUDA aveva più caratteristiche. Tuttavia, con l'hardware AMD che esce con OpenCL 2.0 e la nuova versione di OpenCL 2.1 non ha senso stare seduti sotto il vendor lock-in. Soprattutto quando quel fornitore sottovaluta anche la funzionalità.
In termini di massima copertura, c'è solo una scelta - OpenCL, che funziona bene anche su processori normali. Cioè, non dovete chiedere la presenza incondizionata della GPU o scrivere due versioni di codice per la GPU e la CPU. Una volta scritto, il codice OpenCL funzionerà su diverse configurazioni.
CUDA/OpenCL può essere debuggato solo in debugger specializzati. Non ci può essere nessun miracolo qui.
nell'esempio
Nelle configurazioni con un dispositivo con CPU disponibile, viene visualizzato "OpenCL non trovato".
Altrimenti.
funziona
*Il problema è la selezione predefinita del dispositivo
Possiamo avere tutto questo in una bella forma, senza tutte le virgolette? È imbarazzante per la percezione e la creazione.
E per le reti neurali dovremmo avere classi standard, ed è possibile utilizzare opcl istantaneamente) come wellslab
"#define HL2Count " + (string)hl2NeuronCount + " \r\n"
//------------------------------------------------------------------------------------
"#define NeuronSensitivity " + (string)NeuronSensitivity_P + " \r\n"
//------------------------------------------------------------------------------------
"#define sampleCount " + (string)sampleCount + " \r\n"
//------------------------------------------------------------------------------------
"#define signalCount " + (string)signalCount + " \r\n"
//------------------------------------------------------------------------------------
"#define StrArrSaSize " + (string)(sizeof(ArrSample) / sizeof(float)) + "\r\n"
"typedef struct{float C[StrArrSaSize];} ArrSa; \r\n"
//------------------------------------------------------------------------------------
"#define StrArrWeSize " + (string)(sizeof(ArrWe) / sizeof(float)) + " \r\n"
"typedef struct{float C[StrArrWeSize];} ArrWe; \r\n"
//------------------------------------------------------------------------------------
"#define StrArrCrSize " + (string)(sizeof(ArrCr) / sizeof(float)) + " \r\n"
"typedef struct{float C[StrArrCrSize];}ArrCr; \r\n"
//------------------------------------------------------------------------------------
"#define Spread " + (string)(Spread_P * Point()) + " \r\n"
//------------------------------------------------------------------------------------
"#define Point " + (string)Point() + " \r\n"
"#define SL " + (string)(StopLoss_P * Point()) + " \r\n"
"#define TP " + (string)(TakeProfit_P * Point()) + " \r\n"
//------------------------------------------------------------------------------------
" \r\n"
"__kernel void Work(__global ArrSa *Sample, \r\n"
" __global ArrWe *Weights, \r\n"
" __global ArrCr *Result) \r\n"
"{ \r\n"
" int thread = get_global_id(0); \r\n"
" \r\n"
" //------------------Переменные нейронной сети---------------------------------\r\n"
Possiamo avere tutto questo in una bella forma, senza tutte le virgolette? È imbarazzante per la percezione e la creazione.
E per le reti neurali dovremmo avere classi standard, ed è possibile utilizzare opcl istantaneamente) come wellslab
Questa è una dimostrazione non solo dei calcoli della GPU nel codice MQL5, ma anche delle capacità grafiche del terminale:
Il codice sorgente completo come script è allegato. Il bug su OpenCL 1.2 è stato risolto.
Andrà nel cloud per gli agenti?
Andrà nel cloud per gli agenti?
Forum sul trading, sistemi di trading automatico e test di strategia
Ecco cosa potete fare con OpenCL direttamente nel terminale MetaTrader 5 senza alcuna DLL
Renat Fatkhullin, 2016.12.10 14:49
Presto permetteremo OpenCL in MQL5 Cloud Network almeno per le implementazioni CPU.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.