OpenCL: MQL5'te dahili uygulama testleri - sayfa 56

 
Ashes : Yardımcı olmadı

Bana ne yaptığını ayrıntılı olarak anlat. AMD APP SDK'sını kaldırdığınızdan beri.

Bu arada, belki ParallelTester_00-01x betiğinde CLContextCreate() işlevine 0'a eşit bir parametre eklemediniz (ana bilgisayarda, yani CPU'da yürütüldüğünden emin olmak için). Benim yazımda bundan bahsedilmedi.

 
Mathemat :
Bana ne yaptığını ayrıntılı olarak anlat. AMD APP SDK'sını kaldırdığınızdan beri.

Uygun Setup.exe, Uninstall'ı çalıştırarak AMD APP SDK'sını kaldırın. Yeniden başlat.

Yüklü Intel OCL (intel_ocl_sdk_1.5_x64_setup.exe), yalnızca RunTime. Yeniden başlat.

MT5 - tarafından başlatıldı. Tavsiyeniz üzerine kayıt düzeltildi. Yeniden başlat. MT5'i başlatmak bir serseri.

Mql5 tavsiyesine yol eklendi, hem x64 hem de x32 tırnaklı ve tırnaksız denendi. Kayıt defterini her düzenledikten sonra, yeniden başlatın, MT5'i başlatın - aynı yumurtalar, yandan görünüm.

Şimdi HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors şöyle görünür:

(Varsayılan) REG_SZ (değer atanmamış)

C:\Program Files (x86)\Intel\OpenCL SDK\1.5\bin\x86\intelocl.dll REG_DWORD 0x00000000 (0)

 
Ashes : Şimdi HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors şöyle görünür:

(Varsayılan) REG_SZ (değer atanmamış)

C:\Program Files (x86)\Intel\OpenCL SDK\1.5\bin\x86\intelocl.dll REG_DWORD 0x00000000 (0)

oraya baktın mı? Örneğin, bu yolda böyle bir şeyim yok (ama sadece runtime'ı indirdim ve kurdum, belki de bu yüzden yok).

İkincisi, tam yol olmadan intelocl.dll dosyasını oluşturdum. Muhtemelen zaten çalışma zamanı yüklemesi sırasında kaydedildi.

PS Tam yollarla denendi. OpenCL metatrader'ı tam yollarla (her ikisi de) göremiyorum. Ancak ad olarak intelocl.dll'yi belirtirseniz, bilgisayarı yeniden başlatmadan bile her şey hemen görünür hale gelir.

Sistemde aynı isimli iki dosyadan "doğru" olanı nasıl seçiliyor bilmiyorum.

Lütfen süreç hakkında buradan bilgi veriniz. Yine de ilginç, aniden bazı nüanslar var. Ben kendim burada uzun zamandır acı çekiyorum ve hala gerçekten sevdiğim sonucu "sertleştiriyorum".

PPS Bu arada Intel kaynağındayken Intel SDK'yı tamamen yıkıp yeniden yüklememi tavsiye ettiler, yani. sadece bir kaldırıcı ile değil, aynı zamanda system32 ve sysWOW64 dizinlerine girin ve orada Intel'in ocl'si ile ilgili her şeyi silin. Bunlar intelocl*.dll, opencl*.dll ve diğerleri dosyalarıdır. Burada bir yerde - http://software.intel.com/en-us/forums/intel-opencl-sdk/ . Bulursam daha net link atarım.

Faydalı bağlantılar: http://software.intel.com/en-us/articles/opencl-release-notes/

Ve işte özellikle yararlı bir tanesi: http://software.intel.com/en-us/forums/showthread.php?t=102023&o=a&s=lr , Uri Levy'nin (Intel'in) tavsiyesi bu konuda gerçekten yardımcı olabilir. Kısacası, hala tefli bir oyun.

 
MetaDriver (s. 53):

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

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

Ama nasıl olması ilginç:

630. yapıdaki bu komut dosyası bir şekilde böyle başlamıyor. Mesaj yok, döngüye giriyor, 100'de taş yükleniyor. Ve makul bir süre içinde çıkmıyor. Ama zaten Intel çalışma zamanım var.

 
Mathemat :

Ama nasıl olması ilginç:

630. yapıdaki bu komut dosyası bir şekilde böyle başlamıyor. Mesaj yok, döngüye giriyor, 100'de taş yükleniyor. Ve makul bir süre içinde çıkmıyor. Ama zaten Intel çalışma zamanım var.

Yeniden derlendi. Benim için çalışıyor.

 2012.04 . 21 00 : 33 : 21      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 326.6
2012.04 . 21 00 : 33 : 21      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       Result on Cpu МахResult== 4.15901 at 208 pass
2012.04 . 21 00 : 33 : 21      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       Соunt inticators = 16 ; Count history bars = 50000 ; Count pass = 512
2012.04 . 21 00 : 33 : 21      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       CPU time = 40825 ms
2012.04 . 21 00 : 32 : 40      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       Result on Gpu МахResult== 4.15901 at 208 pass
2012.04 . 21 00 : 32 : 40      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       Соunt inticators = 16 ; Count history bars = 50000 ; Count pass = 512
2012.04 . 21 00 : 32 : 40      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       GPU time = 125 ms
2012.04 . 21 00 : 32 : 40      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       OpenCL init OK!

 
MetaDriver : Yeniden derlendi. Benim için çalışıyor.

Bu sonuçlar CPU'da mı? Eğer öyleyse, beni korkutuyorsun...

Erken heyecanlandım. Başlatıldı - anlaşılır bir şey değil. Uzman günlüğünde tek bir giriş yok. Her ne kadar senaryo başlamış ve hemen tüm taşı kendisi ile doldurmuş olsa da. Yani bir şeyi tüm gücüyle dövüyor ama CLContextCreate() 'e asla ulaşamıyor (eğer yapsaydı bir şey söylerdi değil mi?).

Yeni bir şey. Intel çalışma zamanı, AMD SDK'da derlenen kodu anlamıyormuş gibi. OCL_Device hem 0 hem de -1 olarak ayarlayın. İşe yaramaz.

Genel olarak, platformun seçilememesi sakıncalıdır. Böyle bir fırsatımız olmalı. Yeniden yüklemekten bıktınız.

 
Mathemat :

Bu sonuçlar CPU'da mı? Eğer öyleyse, beni korkutuyorsun...

Hayır, GPU'su. Ancak OpenCL cihazı seçilebilir. Burada CPU'da:

 2012.04 . 21 06 : 20 : 18      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 74.28571428571429
2012.04 . 21 06 : 20 : 18      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       Result on Cpu МахResult== 3.53209 at 36 pass
2012.04 . 21 06 : 20 : 18      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       Соunt inticators = 16 ; Count history bars = 50000 ; Count pass = 512
2012.04 . 21 06 : 20 : 18      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       CPU time = 40560 ms
2012.04 . 21 06 : 19 : 38      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       Result on Gpu МахResult== 3.53209 at 36 pass
2012.04 . 21 06 : 19 : 38      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       Соunt inticators = 16 ; Count history bars = 50000 ; Count pass = 512
2012.04 . 21 06 : 19 : 38      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       GPU time = 546 ms
2012.04 . 21 06 : 19 : 37      ParallelTester_00- 02 -{ 16 x7x3} (EURUSD,M1)       OpenCL init OK!

Erken mutluydum. Başlatıldı - anlaşılır bir şey değil. Uzman günlüğünde tek bir giriş yok. Her ne kadar senaryo başlamış ve hemen tüm taşı kendisi ile doldurmuş olsa da. Yani bir şeyi tüm gücüyle dövüyor ama CLContextCreate()'e asla ulaşamıyor (eğer yapsaydı bir şey söylerdi değil mi?).

Yeni bir şey. Intel çalışma zamanı, AMD SDK'da derlenen kodu anlamıyormuş gibi. OCL_Device hem 0 hem de -1 olarak ayarlayın. İşe yaramaz.

Genel olarak, platformun seçilememesi sakıncalıdır. Böyle bir fırsatımız olmalı. Yeniden yüklemekten bıktınız.

Pekala, şantajcı. :)

Tamam, orijinali saklayın. Bununla istediğini yap.

Kod, AMD SDK'da derlenmiyor. En azından OCL kodu. OCL programı, mql kodunun yürütülmesi sırasında zaten derlenmiştir. OCL ek bileşenindeki EX5 dosyasında yalnızca mql/ocl-driver köprü işlevleri derlenir. Sürücü üreticisine bağlı olarak farklı makine kodlarını derlediklerini sanmıyorum. Her ne kadar yalnızca geliştiriciler bu noktayı tam olarak açıklığa kavuşturabilir.

 
MetaDriver : Kod, AMD SDK'da derlenmiyor.
Bu anlaşılabilir bir durum, çok dilsiz söylüyorum (peki, ben profesyonel bir kodlayıcı değilim). Ancak yine de bir şeyler OpenCL "kütüphanesinin" üreticisine bağlıdır (doğrudan dahili işlevler, API değil).
 
Mathemat :

oraya baktın mı Örneğin, bu yolda böyle bir şeyim yok (ama sadece runtime'ı indirdim ve kurdum, belki de bu yüzden yok).

İkincisi, tam yol olmadan intelocl.dll dosyasını oluşturdum. Muhtemelen zaten çalışma zamanı yüklemesi sırasında kaydedildi.

...

"Çıplak" intelocl.dll ilk kontrol edilenlerden biriydi. Bu ada sahip bir dosya hem x64 hem de x86 klasörlerinde bulunur.

 
Ashes : "Çıplak" intelocl.dll ilk kontrol edilenlerden biriydi. Bu ada sahip bir dosya hem x64 hem de x86 klasörlerinde bulunur.

Sonra ne yapacağımı bilmiyorum. Destek Ekibi talep edene kadar ben de bir çözüm aramak için işkence gördüm. Muhtemelen tam bir çözüm değil, ama bilgisayarımda çalıştı.

Muhtemelen, her şeyden önce, eski SDK'nın izlerini nasıl temiz bir şekilde kaldıracağınızı öğrenmeniz gerekir.