OpenCL: MQL5'te dahili uygulama testleri - sayfa 50

 
Mathemat :
Önemli olan bu. En azından bir miktar harici GPU varsa, CLContextCreate() içindeki argüman açıkça bir CPU seçemez.

Böyle olmamalı - https://www.mql5.com/ru/docs/opencl/clcontextcreate

Seçenekler

cihaz

[içinde] Sistemdeki OpenCL cihazının sırayla numarası. Belirli bir sayı yerine, aşağıdaki değerlerden birini belirleyebilirsiniz: CL_USE_ANY - OpenCL destekli herhangi bir kullanılabilir aygıtın kullanılmasına izin verilir; CL_USE_GPU_ONLY - OpenCL öykünmesi yasaktır ve yalnızca OpenCL desteğine (video kartları) sahip özel cihazlar kullanılabilir .

Документация по MQL5: Работа с OpenCL / CLContextCreate
Документация по MQL5: Работа с OpenCL / CLContextCreate
  • www.mql5.com
Работа с OpenCL / CLContextCreate - Документация по MQL5
 

Evet, olmamalı gibi. Bu numarayı nereden alacağınız ve ardından doğru olanı seçeceğiniz yer burası mı?

https://www.mql5.com/ru/docs/opencl/clgetinfointeger ? Ancak yalnızca tek bir özellik vardır - cihaz sayısı, CL_DEVICE_COUNT .

Bana göre sistemde bir tane bu nedenle 1 de döner.

Документация по MQL5: Работа с OpenCL / CLGetInfoInteger
Документация по MQL5: Работа с OpenCL / CLGetInfoInteger
  • www.mql5.com
Работа с OpenCL / CLGetInfoInteger - Документация по MQL5
 
En son 619 derlemesine yükseltmeyi ve programlarınızı yeniden derlemeyi unutmayın. Bu yapıda, OpenCL başlatma ilkesi değişti.
 
Mathemat :

Evet, olmamalı gibi. Bu numarayı nereden alacağınız ve ardından doğru olanı seçeceğiniz yer burası mı?



CL_USE_GPU_ONLY belirtmeyi denemeniz gerekiyor, ardından video kartı alınacak ve numaraya gerek yok.
 
Rosh : CL_USE_GPU_ONLY belirtmeyi denemeniz gerekiyor daha sonra ekran kartı çekilecek ve numaraya gerek yok.
Bu temiz. Ancak mevcut ayrı video ile tam olarak CPU'yu belirtmek istiyorum. Ve nasıl yapacağım?
 

Muhteşem! Yani HD4200 bir OpenCL cihazı değil, öyle mi?

CPU'da gerçekten saf bir öykünme var gibi görünüyor. Severim!

Bu aynı i3'ü öğretirdi ...

AMD APP SDK'sının i3'teki MT5'te neden düzgün çalışmadığından belli belirsiz şüphelenmeye başladım: orada tüm çekirdekler gerçek değil ve AMD'nin hiper iş parçacığı teknolojisi yok. Muhtemelen ve bu nedenle sürücü bir şekilde çarpık bir şekilde yükselir.

Yoksa hala bir losyon mu - cihazı resmen tanıyan MT5'in kendisinde, ama aslında hiçbir faydası yok mu?

 
Mathemat :
Önemli olan bu. En azından bir miktar harici GPU varsa, CLContextCreate() içindeki argüman açıkça bir CPU seçemez.

Bu, CPU'da (bu cihaz numarası 1'e sahibim):

 2012.04 . 08 21 : 03 : 01      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      CpuTime/GpuTime = 74.73506433823529
2012.04 . 08 21 : 03 : 01      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      Result on Cpu МахResult== 4.54091 at 2233 pass
2012.04 . 08 21 : 03 : 01      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      Соunt inticators = 16 ; Count history bars = 50000 ; Count pass = 4096
2012.04 . 08 21 : 03 : 01      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      CPU time = 325247 ms
2012.04 . 08 20 : 57 : 36      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      Result on Gpu МахResult== 4.54091 at 2233 pass
2012.04 . 08 20 : 57 : 36      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      Соunt inticators = 16 ; Count history bars = 50000 ; Count pass = 4096
2012.04 . 08 20 : 57 : 36      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      GPU time = 4352 ms
2012.04 . 08 20 : 57 : 32      ParallelTester_00- 02 -( 16 x7x3) (USDJPY,M30)      OpenCL init OK!

CLContextCreate ( device ) parametresini bir komut dosyası parametresine çekti. Tüm seçenekleri dürtebilirsiniz.

// Ya başka bir gizli katil kombinasyonu varsa ?? :))

 

2012.04.08 22:01:08    Terminal    CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 8040 Mb, version 2.0 (sse2))

2012.04.08 22:05:59    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    CpuTime/GpuTime = 26.95192501511792
2012.04.08 22:05:59    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    Result on Cpu МахResult==4.98137 at 1628 pass
2012.04.08 22:05:59    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 22:05:59    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    CPU time = 267417 ms
2012.04.08 22:01:32    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    Result on Gpu МахResult==4.98137 at 1628 pass
2012.04.08 22:01:32    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 22:01:32    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    GPU time = 9922 ms
2012.04.08 22:01:22    ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1)    OpenCL init OK!


Teşekkürler, farketmemiştim...

Aslında, oranların oranının 3'e 1 olacağından neredeyse hiç şüphem yoktu: 3 kat daha fazla çekirdeğiniz var, 74.735 / 26.952 ~ 2.77. Ve yine de memnun ediyor: daha fazla çekirdek - daha fazla kazanç! AMD de burada vergi ödedi - çekirdek sayısı nedeniyle!

Ama diğerlerinin ne alacağını merak ediyorum - diyelim ki i5 Sandy Bridge kimde?

Ve eğer birinin bir Buldozer e'si varsa, sonunda oraya uçabilir ... işe yaramayabilir, çünkü işe yaramayabilir. FPU ile gergindi.

 
MetaDriver :

Ve bu testte, nedense benim ütüm seninkini kırdı.

2012.04.09 01:09:36        ParallelTester_00-02-316x7x3j (EURUSD,H1)          CpuTime/GpuTime = 161.0007722007722

2012.04.09 01:09:36    ParallelTester_00-02-316x7x3j (EURUSD,H1)    Result on Cpu МахResult==4.85831 at 2497 pass
2012.04.09 01:09:36    ParallelTester_00-02-316x7x3j (EURUSD,H1)    Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.09 01:09:36    ParallelTester_00-02-316x7x3j (EURUSD,H1)    CPU time = 208496 ms
2012.04.09 01:06:08    ParallelTester_00-02-316x7x3j (EURUSD,H1)    Result on Gpu МахResult==4.85831 at 2497 pass
2012.04.09 01:06:08    ParallelTester_00-02-316x7x3j (EURUSD,H1)    Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.09 01:06:08    ParallelTester_00-02-316x7x3j (EURUSD,H1)    GPU time = 1295 ms

2012.04.09 01:06:07        ParallelTester_00-02-316x7x3j (EURUSD,H1)           OpenCL init OK!


Ve işte OpenCL CPU'daki bu test (4 çekirdeğin tümü %100 yüklendi)

2012.04.09 01:11:15    ParallelTester_00-02-316x7x3j (EURUSD,H1)    GPU time = 68547 ms

2012.04.09 01:10:07    ParallelTester_00-02-316x7x3j (EURUSD,H1)    OpenCL init OK!


GPU'da 480 sinek var ve CPU 4'te 120 kat fark var yani bir seferde 120 kat daha fazla hesaplama yapılabiliyor ama CPU GPU'nun sadece 68547/1295=52,9 katı gerisinde. Bu, CPU iş parçacığının GPU iş parçacığından daha hızlı olduğu, ancak GPU'nun yalnızca daha fazla eşzamanlı görev gerçekleştirebildiği için kazandığı anlamına gelir. Doğru şekilde anladım?


CPU'da ölçekleme %100'den çok daha azdır (yaklaşık %76), 4x yerine yalnızca 3x hızlanma 208496/68547=3,04

Belki de, bu testin özgüllüğü etkiler.

 

Andrey , bana öyle geliyor ki bir şeyleri karıştırdın: MD bu testi burada yalnızca CPU'da, video olmadan yayınladı, yani. doğrudan CPU öykünmesini seçerek. Anladığım kadarıyla ilk testiniz videoda.

Ve OpenCL'yi taklit eden taşınızın sonucu (ikinci testiniz), benimkiyle karşılaştırıldığında bile şüpheli bir şekilde zayıf görünüyor ("GPU"da yaklaşık 10 saniyem vardı).

Bir şeyi yanlış anladıysam, beni düzeltin.