OpenCL: sfide reali

 

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:

  1. Non è un programma separato che riceve dati in entrata e in uscita? Quindi non c'è nessuna interazione da parte di MQL?
  2. Vale la pena implementare la ricerca di array in OpenCL dove tutto ciò che serve è ottenere la conferma che esiste una corrispondenza?
  3. Durante l'ottimizzazione, ogni thread deve eseguire la propria inizializzazione OpenCL e non c'è la possibilità di connettersi al thread già attivo?
  4. Quando si ottimizza, la scheda grafica non è rallentata da più thread OpenCL contemporaneamente?
 
Roffild:

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:

Beh, studia, Internet ti aiuterà. Non lasciarti trasportare dalle domande del forum, o meglio dalle domande di base. Tutte le informazioni su "come funziona" sono su Internet e negli articoli del forum. Io, per esempio, ho il desiderio di aiutare quando vedo che l'uomo stesso arando nello studio e già visibile un certo livello di padronanza del materiale. Non voglio aiutare gli scrocconi che sono nella postura di "eccomi, insegnami già!", e voglio solo "cervelli impostati" :)

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 capisco bene la domanda. Se intendi l'ottimizzazione nel tester/ottimizzatore delle strategie del terminale, penso che debba essere così. Non ho provato a eseguire OPTZL dall'ottimizzatore. L'ho fatto nel tester, ma lì tutto è coerente e un kernel può essere usato più volte, è ovvio senza alcuna spiegazione.
4 Quando si ottimizza, la scheda grafica non è rallentata da più thread OpenCL contemporaneamente?

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. :)

 
Roffild: Ci sono molti thread su OpenCL ma i compiti delineati nell'esempio sono troppo lontani dall'essere commerciali.

È 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.

 
Roffild:

Quindi cosa può dare OpenCL ai commercianti?

Sui punti 1-4, ti è già stato risposto, mi azzardo a rispondere alla tua domanda principale (naturalmente, questo è solo il mio punto di vista): la stragrande maggioranza dei commercianti non otterrà nulla da OpenCL, sarebbe meglio lasciare questo "pane" ai programmatori.
 
Gente, chi sta facendo lo shuffle? È 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.
 
TheXpert:
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.

Risolvere gli SLAE in OpenCL

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.

 
TheXpert:

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: Стандартные константы, перечисления и структуры / Структуры данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных - Документация по MQL5
 
TheXpert:

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.

 
MetaDriver:

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.