OpenCL: MQL5'te dahili uygulama testleri - sayfa 21

 
Urain :

Evet, sanırım anladım, sevmiyorsun

1. Algoritmaların karmaşıklığı ve uygulamadan bellek taşması

2. ve kopyalama aşamasında bile geçiş yapabilmek istiyorsunuz.

ZY 100000 elemanı kopyalamanın ve ardından 998000 ofset yapmanın gerekli olmadığını.

3. Ancak, aynı verileri birçok kez kopyalamanıza değil, önceden hazırlanmış bir CL arabelleğinden yeni bir ofset ile yeni bir görev için almanıza izin verdiği için, şimdi ofset seçeneği bırakılmalıdır.

1. Hayır. Gereksiz kopyalama için zaman kaybından memnun değil. Float kullanılması durumunda, yine de boşluğa kopyalamanız gerekir.

2. Evet.

3. Evet.

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

Sınıf. Etkileyici. Lezzetli gözlemeler.

//---

OpenCL ile ilgili bir yazı olacak mı? Pratikte bu konuya henüz yaklaşmadım, ancak gelecekte okumak çok ilginç olurdu. Veya en azından yardımda, nasıl kullanılacağına dair birkaç örnek komut dosyası. Yeterli bilgi yok.

 

Tek bir CPU çekirdeğine kıyasla kartımda x 200 kat daha hızlı alabildim.

 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!

Lütfen test edin ve sonuçları gönderin.

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

Kart bellekten çekmiyorsa - geçmişi (CountBars) veya geçiş sayısını (CountPass) azaltın, bu daha az arzu edilir

Fragmanda Prog (çok kanallı test cihazı modeli)

Dosyalar:
 
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 )
Çok sıcak olmayan ütümde bile artış görülebilir. Yararlı test. Teşekkür ederim.
 

Benim sonucum, 133 kat hızlanma:

 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))
 
Şaşırtıcı bir şekilde, tek bir çekirdekte i7, karşılaştırılabilir frekanslarda (i7 için - yaklaşık 3.8 GHz, 1100T - 3.7 için) X6 1100T'den iki kat daha hızlı çalışır. Bunların bu tür hesaplamalar olduğu açıktır, ancak düşük bir iş parçacığında CPU hızındaki fark korkunçtur.
 
Mathemat :
Şaşırtıcı bir şekilde, tek bir çekirdekte i7, karşılaştırılabilir frekanslarda (i7 için - yaklaşık 3.8 GHz, 1100T - 3.7 için) X6 1100T'den iki kat daha hızlı çalışır. Bunların bu tür hesaplamalar olduğu açıktır, ancak düşük bir iş parçacığında CPU hızındaki fark korkunçtur.

Çok düşündüm, Google'ı okuyun.

Turpumu kaşıdım.

Ya kendileri için en gelişmiş mql-derleyici-iyileştiriciyi sıkıştırdılar ve bize vermiyorlar ya da artık bilmiyorum.

Bu olmaz. "İnanmıyorum!" (c) KSS

Ve büyük olasılıkla Intel için optimize edilmiş bir kod üretecine sahipler. AMD ayrımcılığı.

Herhangi bir rezalet için! BM'ye şikayet edeceğim.

 
genç istihbarat)
 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 )

Nedense günlüklerde CPU ile ilgili tek bir satır bulamadım.

Intel Celeron G530 2.4GHz

 

Ve anlamadığım bir şey var:

OpenCL 1.1 (2 birim, 1660 MHz, 1024 Mb, sürüm 295.73) ile GeForce GT 440'a sahibim GPU süresi = 1513 ms

OpenCL 1.1 (1 birim, 1620 MHz, 512 Mb, sürüm 285.62) ile Swan GeForce GT 520 GPU süresi = 234 ms

bu nasıl mümkün olabilir?

Burada GeForce GT 440 ve burada GeForce GT 520 özellikleri karşılaştırdı, benimki her açıdan daha büyük ve yürütme süresi 6,5 kat daha uzun.

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