Ci sono molti argomenti su OpenCL, ma i compiti citati sono troppo lontani dal commercio.
Quindi cosa può dare OpenCL ai commercianti?
Quello che si può prendere, è quello che darà.
Sì, non ho ancora studiato OpenCL quindi voglio imparare e chiarire i punti principali:
Oggi farò un'eccezione (sono di buon umore). Tuttavia, con un apparente pendio scivoloso nella fase iniziale, probabilmente ignorerò il "baby talk" e risponderò solo a domande specifiche sulla programmazione, purché non siano troppo stupide.
1. questo è un programma separato che riceve dati in entrata e in uscita, vero? Quindi non c'è nessuna interazione da parte di MQL?
Durante l'operazione del kernel non c'è interazione. L'interazione è simile a quella nel caso di una chiamata di funzione. 1: 1. impostare i parametri iniziali, 2. eseguire il calcolo, 3. prendere il risultato
2. Vale la pena portare la ricerca di array in OpenCL se tutto ciò che si vuole è ottenere la conferma dell'esistenza di una corrispondenza?
Non lo so, dipende dal compito da svolgere. Forse non è necessario. O forse dovresti, sai dov'è il club dei telepati? :)
3. Durante l'ottimizzazione, ogni thread deve fare la propria inizializzazione OpenCL e non c'è modo di connettersi al thread attivo?
Non ho provato a eseguirlo in un ottimizzatore, ma se diverse chiamate si sovrappongono (lo stavo facendo lanciando diversi indicatori OpenCL e Expert Advisors simultaneamente), ovviamente rallenterà.
// Non prende risorse dal soffitto, vero?
Se la memoria della scheda video è sovraccaricata (per esempio, se diversi processi cercano di caricare gli array nella memoria video in parallelo superando la sua capacità di memoria), allora si può "strappare il driver" - ottenere un riavvio completo (reset) della scheda video e del driver, seguito da un messaggio di crash del driver. Almeno questo è successo ripetutamente alla mia scheda/driver. Questo non porta a danni irreversibili, ma i programmi che hanno causato il crash sono di solito sospesi (devono essere riavviati). Ci sono stati casi di blocchi terminali prima, ma non ultimamente.
// Tuttavia, non ho "strappato" l'autista con interrogazioni di memoria immodeste per molto tempo, ho trovato "limiti di lusso" circa. :)
È molto semplice: si prende un compito vicino a quello del trading (ad esempio, l'analisi della storia delle quotazioni) e si cerca di risolverlo usando OpenCL. Dopo alcuni tentativi infruttuosi, ulteriori letture della letteratura e nuovi tentativi, funzionerà, ve lo garantisco. Ma solo a condizione che siate in grado di digerire la letteratura in lingua inglese e abbiate un po' di persistenza oltre a un minimo di cervello.
I driver OpenCL sono già abbastanza ben ottimizzati sia per le schede video che per l'emulazione sui processori (in quest'ultimo caso, i processori Intel sono probabilmente molto più forti). Quindi devi sforzarti di non ottenere nessun risultato positivo alla fine.
Quindi cosa può dare OpenCL ai commercianti?
Ragazzi, chi sta facendo la magia? È possibile trasferire in OpenCL la soluzione di un sistema lineare di equazioni? La dimensione del sistema può essere davvero grande e ci sono altre sfumature.
Questo è un buon pdf che risponde alla tua domanda.
Nikolai, grazie per la tua reattività. Non c'è CUDA e nessun codice.
Oh, ho dimenticato di menzionare un'altra cosa - la costruzione della matrice richiede più tempo della sua soluzione :) quindi, potrebbe essere necessario parallelizzare la costruzione.
Nikolai, grazie per la tua reattività. Non c'è CUDA e nessun codice.
Oh, ho dimenticato di dire un'altra cosa - la costruzione della matrice richiede più tempo della sua soluzione :) quindi potrei aver bisogno di parallelizzarla.
Qual è la fonte dei dati? // formato, struttura dei dati
Voglio dire, da cosa costruiamo la matrice? Un mucchio di buffer? Un albero? Da [...] ?
![Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных](/i/community/logo_mql5_small.png)
- www.mql5.com
Nikolai, grazie per la tua reattività. Non c'è CUDA e non c'è codice.
Oh, ho dimenticato un'altra cosa - la matrice richiede più tempo per costruirla che per risolverla :), quindi potrebbe essere necessario parallelizzare la costruzione.
Intendevo lo schema, non l'implementazione. Naturalmente, CUDA è diverso, ma lo schema generale è lo stesso.
Sono d'accordo con Vladimir, non stai dando abbastanza informazioni per aiutarti.
Non credo che qualcun altro si unirà, quindi se non volete renderlo pubblico, potete chiederlo in privato a uno qualsiasi dei presentatori.
Voglio dire, da cosa costruiamo la matrice? Un mucchio di buffer? Un albero? Da [...] ?
Grosso modo, c'è uno spazio di enorme dimensionalità (10 -- 1000 e più), per il quale dobbiamo risolvere il problema MNC.
La soluzione del problema ANM si riduce a
(1) costruire equazioni delle derivate
(2) risolvendo un sistema di equazioni derivate in (1)
Ora (1) prende la parte del leone del tempo di soluzione. Più grande è la dimensionalità, più grande è la frazione.
Gli algoritmi paralleli hanno solo due caratteristiche che danno loro un vantaggio rispetto agli algoritmi sequenziali.
Sono l'algoritmo di pettinatura, dove ogni dente prende il suo filo e lo tira per tutta la lunghezza.
E la piramide rotola/srotola. Lo srotolamento è meno comune, per lo più l'arricciamento.
Se l'enunciato del problema non include nessuna di queste caratteristiche, il solutore parallelo non darà un vantaggio, e più spesso sarà più lento a causa del costoso caricamento della memoria.
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Ci sono molti argomenti su OpenCL, ma i compiti citati sono troppo lontani dal commercio.
Quindi cosa può dare OpenCL ai commercianti?
Sì, non ho ancora studiato OpenCL quindi voglio imparare e chiarire i punti principali: