OpenCL: test di implementazione interna in MQL5 - pagina 21

 
Urain:

Sì, penso di aver capito, non sei soddisfatto di

1. la complicazione degli algoritmi e gli overrun di memoria dall'uso di

2. e volete essere in grado di compensare in fase di copia.

Così non dovete copiare 100000 elementi e poi fare 998000 offset.

3. Ma dovremmo lasciare la variante con offset, che abbiamo ora, perché ci permette di non copiare uno stesso dato molte volte, ma di prenderlo per un nuovo compito da un CL-buffer già esistente con un nuovo offset.

1. no. Non mi piace perdere tempo con la copiatura extra. Anche se, se usiamo float, dovremo comunque copiare nello spazio.

2. Sì.

3. Sì.

 
Сторонникам всемирного заговора и полным параноикам, ну или просто любителям по управлять ценой, посвящается! ;) - MQL4 форум
  • www.mql5.com
Сторонникам всемирного заговора и полным параноикам, ну или просто любителям по управлять ценой, посвящается! ;) - MQL4 форум
 

Bello. Impressionante. Frittelle deliziose.

//---

Ci sarà un articolo su OpenCL? Non mi sono ancora avvicinato a questo argomento nella pratica, ma sarebbe molto interessante leggerlo in prospettiva. O almeno un paio di script di esempio nell'aiuto su come usarlo. Non ci sono abbastanza informazioni in giro.

 

Sono riuscito a ottenere un aumento di velocità di x200x sulla mia scheda rispetto a un singolo core della CPU.

2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  CpuTime/GpuTime = 216.0292397660819
2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  Result on Cpu МахResult==1.3431 at 819 pass
2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  CPU time = 36941 ms
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  Result on Gpu МахResult==1.3431 at 819 pass
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  GPU time = 171 ms
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  OpenCL init OK!

Per favore, prova e pubblica i risultati.

CPU: AuthenticAMD AMD Phenom(tm) II X6 1100 T Processor with OpenCL 1.1 (6 units, 3311 MHz, 16345 Mb, version 2.0)
GPU: Advanced Micro Devices, Inc. Cayman with OpenCL 1.1 (20 units, 750 MHz, 1024 Mb, version CAL 1.4.1664 (VM))

Se la carta non tira la memoria, riducete la storia (CountBars) o il numero di passaggi (CountPass) che è meno desiderabile.

Rimorchio del tester multicanale

 
2012.03.04 22:24:07     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 1513 ms
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.80839 at 1002 pass
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 44055 ms
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.80839 at 1002 pass
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       CpuTime/GpuTime = 29.11764705882353
2012.03.04 22:27:16     Terminal        GPU: NVIDIA Corporation GeForce GT 440 with OpenCL 1.1 (2 units, 1660 MHz, 1024 Mb, version 295.73)
2012.03.04 22:27:16     Terminal        CPU: AuthenticAMD AMD Athlon(tm) II X4 630 Processor with OpenCL 1.1 (4 units, 2812 MHz, 2048 Mb, version 2.0)
Anche sul mio hardware non proprio fantastico, il guadagno è visibile. Test utile. Grazie.
 

Il mio risultato, un'accelerazione di 133 volte:

2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       CpuTime/GpuTime = 133.8285714285714
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.24101 at 1079 pass
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 18736 ms
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.24101 at 1079 pass
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 140 ms
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.04 23:21:47     Terminal        CPU: GenuineIntel  Intel(R) Core(TM) i7-2600 CPU @ 3.40 GHz with OpenCL 1.1 (8 units, 3392 MHz, 16366 Mb, version 2.0)
2012.03.04 23:21:47     Terminal        GPU: Advanced Micro Devices, Inc. Barts with OpenCL 1.1 (14 units, 900 MHz, 1024 Mb, version CAL 1.4.1664 (VM))
 
Sorprendentemente, su un singolo core, l'i7 è due volte più veloce dell'X6 1100T - a frequenze comparabili (l'i7 è circa 3,8 GHz, il 1100T è 3,7). È comprensibile che si tratti di questi calcoli, ma la differenza di velocità della CPU su un thread basso è mostruosa.
 
Mathemat:
È incredibile che su un singolo core l'i7 sia 2 volte più veloce dell'X6 1100T - a frequenze comparabili (l'i7 è intorno ai 3,8 GHz, il 1100T è 3,7). È comprensibile che si tratti di tale calcolo, ma la differenza di velocità della CPU su un thread basso è mostruosa.

Pensare molto, leggere Google.

Mi sono grattato la testa.

O hanno il più avanzato mql-compiler-optimizer bloccato per loro stessi e non lo danno a noi, o non lo so più.

Non funziona così. "Non ci credo!" (c) KSS.

E molto probabilmente hanno un codogeneratore ottimizzato per Intel.

È un oltraggio comunque! Mi lamenterò con l'ONU.

 
junior Intel)
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 234 ms
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.03434 at 315 pass
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 27471 ms
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.03434 at 315 pass
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       CpuTime/GpuTime = 117.3974358974359
2012.03.05 01:54:17     Terminal        GPU: NVIDIA Corporation GeForce GT 520 with OpenCL 1.1 (1 units, 1620 MHz, 512 Mb, version 285.62)

Non sono riuscito a trovare una riga sulla CPU nei log per qualche motivo.

Intel Celeron G530 2.4GHz

 

È qui che non capisco:

Ho una GeForce GT 440 con OpenCL 1.1 (2 unità, 1660 MHz, 1024 Mb, versione 295.73) tempo GPU = 1513 ms

Ho GeForce GT 520 con OpenCL 1.1 (1 unità, 1620 MHz, 512 Mb, versione 285.62) tempo GPU = 234 ms

Come è possibile?

Qui GeForce GT 440 e qui GeForce GT 520 specifiche confronto, il mio è da tutti i parametri maggiore, ma il tempo di esecuzione è 6,5 volte maggiore.

NVIDIA GeForce GT 440 | NVIDIA
NVIDIA GeForce GT 440 | NVIDIA
  • www.nvidia.ru
Установи GeForce в свой ПК для максимальной производительности и разгони свою цифровую жизнь. Смотри потоковые HD фильмы и выводи фотографии высокого разрешения без задержек. Создай дома 3D кинотеатр с помощью Blu-Ray 3D™ и NVIDIA® GeForce®. Разгони свои любимые приложения и раздвинь границы возможностей интернет с новым поколением браузеров с...