OpenCL: MQL5'te dahili uygulama testleri - sayfa 51

 
Mathemat :

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

CPU-schnom GPU'yu düşündünüz - benimkinden daha fazla çekirdek. Ve 4 çekirdekli (cihaz 1) temiz bir CPU'ya güvendim.
 
joo : Benden daha fazla CPU çekirdeğin vardı. Ve 4 çekirdekli temiz bir CPU'ya güvendim.

Hayır, hayır, Andrew . imho, ben de 2 çekirdekli temiz bir CPU'da düşündüm. "için" 3 argüman var. Birincisi sadece betonarme, ikincisi ve üçüncüsü o kadar sağlam değil:

1. Sistemimde sadece bir OpenCL cihazım var. Öte yandan, her durumda, bu cihazlardan birinin bir ana bilgisayar olması gerekir, yani. çıplak CPU. Bunlar. GPU değil, GPU Caps üzerinde test ettim.

Bu yüzden OpenCL'yi taklit eden CPU cihazının SSE2 ve üstünü destekleyen herhangi bir mücevher olabileceğinden şüpheleniyorum. Entegre grafiklere sahip olup olmaması önemli değil. Bu arada Intel Core i5-750 dahil.

2. CPU grafiğim Intel HD Graphics. 6 boru hattı var, ancak 24 işlemci var (iş parçacığı, uçuyor?). Sizin ve benim sahip olduklarımıza yakın olan grafik özelliklerini daire içine aldım.

Sinek frekansı, taş frekansından çok daha düşük olduğu için, daha düşük bir frekansta 24 GPU iş parçacığının, saf bir CPU'ya kıyasla yürütmeyi 25 kattan fazla hızlandıracağını hayal edemiyorum (ki bu bende vardı). Geriye tek bir şey kalıyor: bu bir GPU değil, bir OpenCL CPU öykünmesi. Belki yanlış düşünüyorum ama Intel taşlarının grafik kısmının mimarisi hakkında daha detaylı veriye sahip değilim.

Entegre grafikleriniz benimkiyle hemen hemen aynı - Intel HD Graphics 2000 - ama orada bir şeyler ters gitti. Sandy Bridge serisinden neredeyse en iyi Intel taşının bu kadar garip bir şekilde düşük sonucunu nasıl açıklayacağımı bilmiyorum. Üzerindeki hızlanma, kaba tahminlere göre 50 civarında olmalıdır.

3. Resmi olarak, yalnızca Ivy Bridge, Intel HD Graphics 2500 ve 4000 ile birlikte tümleşik Intel grafikleri için OpenCL desteğine sahip olacaktır (AMD entegre uçlarından çok daha hızlı olan 64 hızlı uçma olacaktır). Ve şimdi gerçekten görünmüyor.

Ben de i3'ün neden hesaplamaları hızlandırmadığını henüz çözemedim.

 
Mathemat :

...

Ben de i3'ün neden hesaplamaları hızlandırmadığını henüz çözemedim.

Yaşasın! Kazanıldı!

2012.04.09 15:32:01 Terminal CPU: OrijinalIntel Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz, OpenCL 1.1 (4 ünite, 3092 MHz, 4008 Mb, sürüm 2.0)
2012.04.09 15:32:01 Terminal MetaTrader 5 x64 build 619 başladı (MetaQuotes Software Corp.)

2012.04.09 16:00:18 ParallelTester_00-02-316x7x3j (USDJPY,H1) CpuTime/GpuTime = 2.604419002781939
2012.04.09 16:00:18 ParallelTester_00-02-316x7x3j (USDJPY,H1) Sonucu Cpu MaxResult==3.64642 at 1594 pass
2012.04.09 16:00:18 ParallelTester_00-02-316x7x3j (USDJPY,H1) Sayı göstergeleri = 16; Sayma geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.09 16:00:18 ParallelTester_00-02-316x7x3j (USDJPY,H1) CPU zamanı = 243409 ms
2012.04.09 15:56:15 ParallelTester_00-02-316x7x3j (USDJPY,H1) Gpu'da Sonuç MaxResult==3.64642, 1594 geçişinde
2012.04.09 15:56:15 ParallelTester_00-02-316x7x3j (USDJPY,H1) Sayı göstergeleri = 16; Sayma geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.09 15:56:15 ParallelTester_00-02-316x7x3j (USDJPY,H1) GPU süresi = 93460 ms
2012.04.09 15:54:41 ParallelTester_00-02-316x7x3j (USDJPY,H1) OpenCL başlat Tamam!
2012.04.09 15:42:27 ParallelTester_00-02-316x7x3j (EURUSD,M1) CpuTime/GpuTime = 2.573211516347179
2012.04.09 15:42:27 ParallelTester_00-02-316x7x3j (EURUSD,M1) Sonucu Cpu MaxResult==3.82222 at 3357 pass
2012.04.09 15:42:27 ParallelTester_00-02-316x7x3j (EURUSD,M1) Cunt göstergeleri = 16; Sayma geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.09 15:42:27 ParallelTester_00-02-316x7x3j (EURUSD,M1) CPU zamanı = 243907 ms
2012.04.09 15:38:23 ParallelTester_00-02-316x7x3j (EURUSD,M1) Gpu'da Sonuç MaxResult==3.82222 3357 geçişinde
2012.04.09 15:38:23 ParallelTester_00-02-316x7x3j (EURUSD,M1) Cunt intikatörleri = 16; Sayma geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.09 15:38:23 ParallelTester_00-02-316x7x3j (EURUSD,M1) GPU süresi = 94787 ms
2012.04.09 15:36:49 ParallelTester_00-02-316x7x3j (EURUSD,M1) OpenCL başlat TAMAM!

 
Ashes :

Yaşasın! Kazanıldı!

2012.04.09 15:32:01 Terminal CPU: OrijinalIntel Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz, OpenCL 1.1 (4 ünite, 3092 MHz, 4008 Mb, sürüm 2.0)
2012.04.09 15:32:01 Terminal MetaTrader 5 x64 build 619 başladı (MetaQuotes Software Corp.)

2012.04.09 16:00:18 ParallelTester_00-02-316x7x3j (USDJPY,H1) CpuTime/GpuTime = 2.604419002781939

2012.04.09 16:00:18 ParallelTester_00-02-316x7x3j (USDJPY,H1) CPU zamanı = 243409 ms
2012.04.09 15:56:15 ParallelTester_00-02-316x7x3j (USDJPY,H1) Gpu'da Sonuç MaxResult==3.64642, 1594 geçişinde
2012.04.09 15:56:15 ParallelTester_00-02-316x7x3j (USDJPY,H1) Sayı göstergeleri = 16; Sayı geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.09 15:56:15 ParallelTester_00-02-316x7x3j (USDJPY,H1) GPU süresi = 93460 ms

Eh, bu zaten 0.7'den daha iyi, en azından biraz hızlanma. Ve sen ne yaptın?

Her ne kadar ... çok zayıf. Pentium G840'ımda şöyle:

2012.04.08 22:01:08 Terminal CPU: OrijinalIntel Intel(R) Pentium(R) CPU G840 @ 2.80GHz, OpenCL 1.2 (2 birim, 2793 MHz, 8040 Mb, sürüm 2.0 (sse2))

2012.04.09 22:11:35 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) CpuTime/GpuTime = 26.0524992748719
2012.04.09 22:11:35 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Cpu Sonucu MaxResult==4.04242 1775 geçişinde
2012.04.09 22:11:35 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Sayı göstergeleri = 16; Sayı geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.09 22:11:35 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) CPU zamanı = 269461 ms
2012.04.09 22:07:05 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Gpu Sonucu MaxResult==4.04242 1775 geçişinde
2012.04.09 22:07:05 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Sayı göstergeleri = 16; Sayı geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.09 22:07:05 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) GPU süresi = 10343 ms
2012.04.09 22:06:55 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) OpenCL başlat Tamam!

Ne düşünüyorsunuz, bir bütçe taşı aynı şirketten daha güçlü bir tanesini neredeyse bir büyüklük sırasına göre atlarsa, normal mi değil mi? Mimarileri hemen hemen aynı ve i3 komut seti en azından daha zayıf değil...

 
Mathemat :

Eh, bu zaten 0.7'den daha iyi, en azından biraz hızlanma. Ve sen ne yaptın?

Her ne kadar ... çok zayıf. Pentium G840'ımda şöyle:

Ne düşünüyorsunuz, bir bütçe taşı aynı şirketten daha güçlü bir tanesini neredeyse bir büyüklük sırasına göre atlarsa, normal mi değil mi? Mimarileri hemen hemen aynı ve i3 komut seti en azından daha zayıf değil...

HD Graphics sürücüsünü güncelledi ve yeni AMD OpenCL SDK'yı İngilizce ile kurdu.

Performans farkıyla ilgili olarak şunu varsayıyorum: OCL sürümleri farklıdır + başlangıçta frekans açısından CPU'ya göre GPU'nun bir avantajına sahipsiniz (GPU bölümünün aynı olduğu varsayılarak).

 
Ashes : Performans farkıyla ilgili olarak, şunu varsayacağım: OCL sürümleri farklıdır + başlangıçta frekans açısından CPU'ya göre GPU'nun bir avantajına sahipsiniz (GPU bölümünün aynı olduğu varsayılarak).

Herhangi bir GPU OpenCL cihazım yok, cevabımı görün joo . Ve buna da sahip olmamalısın (entegre grafiklerden bahsediyorum). Her şey CPU çekirdeklerindeki en saf öykünmeyle devam ediyor. Evet ve frekans avantajı maksimum 2 katıdır ve performans büyüklük sırasına göre farklılık gösterir. Sorun.

İkincisi, sürüm farkı, burada yayınlanan tüm testlerde kesinlikle performansı etkilemez. Ve 1.1'de her şey aynı hızdaydı (G840'ımda).

 
Mathemat :

Herhangi bir GPU OpenCL cihazım yok, cevabımı görün joo . Ve buna da sahip olmamalısın (entegre grafiklerden bahsediyorum). Her şey CPU çekirdeklerindeki en saf öykünmeyle devam ediyor. Evet ve frekans avantajı maksimum 2 katıdır ve performans büyüklük sırasına göre farklılık gösterir. Sorun.

İkincisi, sürüm farkı, burada yayınlanan tüm testlerde kesinlikle performansı etkilemez. Ve 1.1'de her şey aynı hızdaydı (G840'ımda).

Haklısın gibi görünüyor. erken sevinmiştim. Komut dosyasındaki GPU hesaplamasının 4 çekirdeğe / iş parçacığına paralel olduğu (CPU yükü %100) ve CPU kısmının pratik olarak tek çekirdekte (%25-30) çalıştığı işlemci yükünden görülebilir.

Yani 4 * 0.7 (ek yük?) ~= 2.8 - GPU / CPU çıkıyor.

AMD SDK'nın x64 sürümündeki "yabancı" donanımdaki tüm özellikleri kullanmaması dışında (anladığım kadarıyla x32'niz var). HD Grafik sürücü sürümü (Intel Corporation, 14/02/2012, 8.15.10.2653).

G840 ve i3-2100'ün intel.com ile karşılaştırılması:

not. Hata, seninle 8040Mb'ı kaçırdım (yani x32/x64 çıktı).

 
Mathemat :

İkincisi, sürüm farkı, burada yayınlanan tüm testlerde kesinlikle performansı etkilemez. Ve 1.1'de her şey aynı hızdaydı (G840'ımda).

OpenCL 1.2, 1.1'e yaklaşık %10'luk bir kazanç sağladı:

2012.04.10 09:41:19 Terminal MetaTrader 5 x64 build 619 başladı (MetaQuotes Software Corp.)
2012.04.10 09:41:19 Terminal CPU: OrijinalIntel Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz, OpenCL 1.1 (4 ünite, 3092 MHz, 4008 Mb, sürüm 2.0)

2012.04.10 09:41:30 ParallelTester_00-02-316x7x3j (EURUSD,M1) OpenCL başlat TAMAM!
2012.04.10 09:43:04 ParallelTester_00-02-316x7x3j (EURUSD,M1) GPU süresi = 94365 ms
2012.04.10 09:43:04 ParallelTester_00-02-316x7x3j (EURUSD,M1) Sayı göstergeleri = 16; Sayma geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.10 09:43:04 ParallelTester_00-02-316x7x3j (EURUSD,M1) Gpu'da Sonuç 1914 geçişinde MaxResult==3.52408
2012.04.10 09:47:09 ParallelTester_00-02-316x7x3j (EURUSD,M1) CPU zamanı = 244968 ms
2012.04.10 09:47:09 ParallelTester_00-02-316x7x3j (EURUSD,M1) Sayı göstergeleri = 16; Sayma geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.10 09:47:09 ParallelTester_00-02-316x7x3j (EURUSD,M1) Cpu'da Sonuç 1914 geçişinde MaxResult==3.52408
2012.04.10 09:47:09 ParallelTester_00-02-316x7x3j (EURUSD,M1) CpuTime/GpuTime = 2.595962486091242
2012.04.10 10:20:22 ParallelTester_00-02-316x7x3j (EURUSD,M1) OpenCL başlat TAMAM!
2012.04.10 10:21:56 ParallelTester_00-02-316x7x3j (EURUSD,M1) GPU süresi = 93756 ms
2012.04.10 10:21:56 ParallelTester_00-02-316x7x3j (EURUSD,M1) Sayı göstergeleri = 16; Sayma geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.10 10:21:56 ParallelTester_00-02-316x7x3j (EURUSD,M1) Gpu'da Sonuç MaxResult==4.06735 1519 geçişinde
2012.04.10 10:25:58 ParallelTester_00-02-316x7x3j (EURUSD,M1) CPU zamanı = 242426 ms
2012.04.10 10:25:58 ParallelTester_00-02-316x7x3j (EURUSD,M1) Sayı göstergeleri = 16; Sayma geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.10 10:25:58 ParallelTester_00-02-316x7x3j (EURUSD,M1) Sonucu Cpu MaxResult==4.06735 at 1519 pass
2012.04.10 10:25:58 ParallelTester_00-02-316x7x3j (EURUSD,M1) CpuTime/GpuTime = 2.585711847775076


2012.04.10 11:33:50 Terminal MetaTrader 5 x64 build 619 başladı (MetaQuotes Software Corp.)
2012.04.10 11:33:50 Terminal CPU: OrijinalIntel Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz, OpenCL 1.2 (4 ünite, 3092 MHz, 4008 Mb, sürüm 2.0 (sse2,avx))

2012.04.10 11:34:14 ParallelTester_00-02-316x7x3j (EURUSD,M1) OpenCL başlat Tamam!
2012.04.10 11:35:41 ParallelTester_00-02-316x7x3j (EURUSD,M1) GPU süresi = 86923 ms
2012.04.10 11:35:41 ParallelTester_00-02-316x7x3j (EURUSD,M1) Sayı göstergeleri = 16; Sayı geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.10 11:35:41 ParallelTester_00-02-316x7x3j (EURUSD,M1) Gpu'da Sonuç MaxResult==4.27665 970 geçişinde
2012.04.10 11:39:48 ParallelTester_00-02-316x7x3j (EURUSD,M1) CPU zamanı = 246965 ms
2012.04.10 11:39:48 ParallelTester_00-02-316x7x3j (EURUSD,M1) Sayı göstergeleri = 16; Sayı geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.10 11:39:48 ParallelTester_00-02-316x7x3j (EURUSD,M1) Sonucu Cpu MaxResult==4.27665 at 970 pass
2012.04.10 11:39:48 ParallelTester_00-02-316x7x3j (EURUSD,M1) CpuTime/GpuTime = 2.841192779816619
2012.04.10 11:47:50 ParallelTester_00-02-316x7x3j (EURUSD,M1) OpenCL başlat TAMAM!
2012.04.10 11:49:18 ParallelTester_00-02-316x7x3j (EURUSD,M1) GPU süresi = 87610 ms
2012.04.10 11:49:18 ParallelTester_00-02-316x7x3j (EURUSD,M1) Cunt göstergeleri = 16; Sayı geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.10 11:49:18 ParallelTester_00-02-316x7x3j (EURUSD,M1) Gpu'da Sonuç MaxResult==4.43566 781 geçişte
2012.04.10 11:53:24 ParallelTester_00-02-316x7x3j (EURUSD,M1) CPU zamanı = 245873 ms
2012.04.10 11:53:24 ParallelTester_00-02-316x7x3j (EURUSD,M1) Sayı göstergeleri = 16; Sayma geçmişi çubukları = 50000; Sayı geçişi = 4096
2012.04.10 11:53:24 ParallelTester_00-02-316x7x3j (EURUSD,M1) Sonucu Cpu MaxResult==4.43566 at 781 pass
2012.04.10 11:53:24 ParallelTester_00-02-316x7x3j (EURUSD,M1) CpuTime/GpuTime = 2.806449035498231

 
Anladığım kadarıyla iki boyutlu/çok boyutlu veri içeren bir diziyi GPU'ya aktarmak istiyorsak, veri gösterimini yapı olarak kullanabilir ve yapıyı aktarabilir miyiz?
 
Ashes : OpenCL 1.2, 1.1'e göre yaklaşık %10'luk bir kazanç sağladı:

Evet, bunun hakkında. Yine de, kazanç kritik değildir, bazen değil.

AMD SDK'nın "yabancı" donanımdaki tüm özellikleri kullanmaması dışında

Başlangıçta böyle bir hipotezim vardı.

Ancak GPU Caps yardımcı programının CPU OpenCL testleri oldukça iyi geçiyor, kontrol ettim. Yardımcı program, herhangi bir şey varsa, römorkta. Yalnızca CPU öykünmelerini çevirin.

Bazı testlerde, i3'teki fps G840'takinden birkaç kat daha yüksektir (4D Quaternion Julia Set'te - yaklaşık 17'ye karşı 4-5).

Yani, AMD'nin burada harika bir iş çıkardığı ortaya çıktı.

Sorun, bir nedenden dolayı G840'ı "anlayan", ancak AMD APP SDK'nın kurulu olduğu Intel'in daha soğuk taşlarını "anlamayan" terminalde. 1 hafta önce servise mesaj attım ama cevap gelmedi.

Dosyalar: