MetaTrader 5 Python Kullanıcı Grubu - Metatrader'da Python nasıl kullanılır - sayfa 25

 
fxsaber :

Kodun OpenCL bölümünde nasıl hata ayıkladınız?

Başlatma ve yazdırma sonuçları.
 
Fast235 :

Renat, lütfen OpenCL'nin çok sayıda diziyle çalışmanın hangi durumlarda avantaj sağlayacağını veya bir Uzman Danışmanın çok sayıda sembol ve göstergeye sahip olup olmadığını yazın.

Çapraz bağları olmayan ve paralel olarak analiz edilebilen milyonlarca diziyi toplayabilirseniz, hızlandırabilirsiniz.

Genel olarak, görevlerinin sınırlarını çözen ve anlayan kişi, sorusuna kolayca cevap verecektir. Sınırları anlamamakla birlikte (ve sadece "eğer" hayalleri vardır, sürekli olarak çözülen görevlerin ıstırabıyla birlikte , paralellik sadece harika bir fikir olarak kalır.

Çoğu görev ne yazık ki etkili bir şekilde paralelleştirilemez.

 
Renat Fatkhullin :

Çapraz bağları olmayan ve paralel olarak analiz edilebilen milyonlarca diziyi toplayabilirseniz, hızlandırabilirsiniz.

Genel olarak, görevlerinin sınırlarını çözen ve anlayan kişi, sorusuna kolayca cevap verecektir. Sınırları anlamamakla birlikte (ve sadece "ne olursa" hayalleri vardır) , sürekli olarak çözülen görevlerin ıstırabı ile paralellik sadece harika bir fikir olarak kalır.

Çoğu görev ne yazık ki etkili bir şekilde paralelleştirilemez.

hesaplamalarda eşlik eden anlar olduğu gerçeği hakkında, hatırlıyorum, bu yüzden soru kafamda ortaya çıktı

 
Renat Fatkhullin :
Başlatma ve sonuçları yazdırma.

OpenCL kodunun içine bir çıktı koymak mümkün müdür?

 

OpenCL hakkında kabalık varsa

Tek tek N çift değerlerinin yazılabileceği büyük (vektör) kayıtlara sahip bir işlemci olduğunu hayal edebilirsiniz (örneğin, N=64 olsun, sonra 64 değer kayıt defterine yazılabilir).
Bu tür kayıtlar eklenebilir, çoğaltılabilir, vb. kendi aralarında, bir komut için N çiftler üzerinde bir eylem gerçekleştirebileceğiniz ortaya çıktı.

Ama sınırlamalar var.

Aynı register içindeki değerler üzerinde işlem yapamazsınız, yani. örneğin, bir kaydın değerlerinin bir kısmını birbirine ekleyemezsiniz.
Frekans açısından, böyle bir işlemci geleneksel bir CPU'dan çok daha düşüktür, bu nedenle onu bir değerin sıralı işlenmesinin gerekli olduğu görevlerde kullanmak mantıklı değildir.
Daha düşük frekansın yanı sıra bir de hafıza sınırlaması vardır, sadece özel hafızadan değerleri yükleyebilir ve kaldırabilirsiniz.
RAM'den gelen veriler bu özel belleğe kopyalanabilir, ancak yalnızca çok dar (yavaş) bir kanal üzerinden.
Bu nedenle, büyük miktarda veri işlemeniz gereken görevler de OpenCL için pek uygun değildir.

 
fxsaber :

OpenCL kodunun içine bir çıktı koymak mümkün müdür?

Dışarıda.

Eğitim programını çoğaltmayalım. OpenCL hakkında bizim tarafımızdan ve genel olarak İnternette oluşturulan ve ayrıntılı olarak açıklanan her şeyi alın ve okuyun.

OpenCL araması:




Genel olarak, Google'da "opencl ticaret" konusunda kaynaklarımızdan çok sayıda materyalin bulunması çok ilginçtir:


 
Renat Fatkhullin :

Tek iş parçacığı/OpenCL modlarında Python 3.8 ve MQL5'teki karşılaştırmalar şunlardır: saniye cinsinden süre, ne kadar düşükse o kadar iyi

pi-single.py
pi-multi.py
Hız PI.mq5 tek
Hız PI.mq5 OpenCL
4.1743
0.2101
4.1836
0.1025

Numa aracılığıyla JIT modunda Python, donanım:

  • Windows 10 x64, Intel Xeon E5-2690 v3 @ 2.60GHz
  • GeForce RTX 2080

OpenCL kullanmanın bir örneği çok basittir ve optimizasyonunda gösterişsizdir. OpenCL için görev çok büyük olmasa da ve hazırlık için genel giderler onun için işe yarasa da, yine de çok daha iyi bir sonuç gösterdi.

OpenCL ile düzenli olarak çok büyük paralel hesaplamaları çalıştırabilirsiniz. Giriş eşiği büyük değil, nasıl kullanılacağını anlamak için bir gün yeterli.

Oynatma dosyaları ektedir.

OpenCL'de PI hesaplama ile ilgili bu problemin 7 yıl önce çözüldüğü ortaya çıktı:

OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • www.mql5.com
Настоящая статья открывает небольшой цикл публикаций, посвященных программированию на OpenCL, или Open Computing Language. Платформа MetaTrader 5 в ее текущем воплощении до подключения OpenCL не позволяла напрямую, т.е. нативно, использовать преимущества многоядерных процессоров для ускорения вычислений. В разделе "Статьи", правда, еще полтора...
 
Anlayana kadar.
Single thread: the value of PI is 3.141592653590
Single thread: calculated in 7.382561 seconds
OpenCL not found. Error code= 5100
OpenCL initialization failed with 5100

Neyin indirileceğine doğrudan bağlantısı olan var mı? Intel kayıt gerektirir.


Shl İşlemcideki Intel GPU'da, video bağdaştırıcı sürücüsünü çökertmeniz, ardından Intel_OpenCL_driver'ı yüklemeniz, ardından video bağdaştırıcı sürücüsünü yüklemeniz gerekir. Böylece her şey çalıştı ve video yavaşlamıyor.

 

Vict :

Korkarım ki bu özelliğin aktif kullanımı, fırlatmayı birkaç dakikalık bir göreve dönüştürecek.

Dönmezse, önbelleğe almayı etkinleştirebilirsiniz.

Renat Fatkhullin'in fotoğrafı.

Tek iş parçacığı/OpenCL modlarında Python 3.8 ve MQL5'teki karşılaştırmalar şunlardır: saniye cinsinden süre, ne kadar düşükse o kadar iyi

pi-single.py
pi-multi.py
Hız PI.mq5 tek
Hız PI.mq5 OpenCL
4.1743
0.2101
4.1836
0.1025

Numa aracılığıyla JIT modunda Python, donanım:

  • Windows 10 x64, Intel Xeon E5-2690 v3 @ 2.60GHz
  • GeForce RTX 2080

Çok iş parçacıklı modda, 10.000 iş parçacığında CPU ile GPU performansını karşılaştırıyorsunuz. Python'da GPU kullanılmaz.

Uygun ekran kartı olan bir bilgisayar bulursam Python kodunu düzeltip bu bilgisayarda test edeceğim.OpenCL'deki yazıları hatırlattığınız için teşekkür ederim. Kodunuzu CPU'da çalıştırmayı deneyeceğim, bir GPU'nun gerekli olduğunu düşündüm.

Genel olarak, kimin daha hızlı olduğunu kanıtlamak için yola çıkmadım. Python'u entegre etme planlarınız hakkında bilgi edinmek daha ilginç.

Python'da planlanan ticaret işlevleri ve kene etkinlikleri var mı?


Yine de GPU gerekli görünüyor, "AMD APP SDK" indirilemiyor.
Документация по MQL5: Торговые функции
Документация по MQL5: Торговые функции
  • www.mql5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция: Ордер – это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк...
 
Ilyas :

OpenCL hakkında kabalık varsa

Tek tek N çift değerlerinin yazılabileceği büyük (vektör) kayıtlara sahip bir işlemci olduğunu hayal edebilirsiniz (örneğin, N=64 olsun, sonra 64 değer kayıt defterine yazılabilir).
Bu tür kayıtlar eklenebilir, çoğaltılabilir, vb. kendi aralarında, bir komut için N çiftler üzerinde bir eylem gerçekleştirebileceğiniz ortaya çıktı.

Ama sınırlamalar var.

Aynı register içindeki değerler üzerinde işlem yapamazsınız, yani. örneğin, bir kaydın değerlerinin bir kısmını birbirine ekleyemezsiniz.
Frekans açısından, böyle bir işlemci geleneksel bir CPU'dan çok daha düşüktür, bu nedenle onu bir değerin sıralı işlenmesinin gerekli olduğu görevlerde kullanmak mantıklı değildir.
Daha düşük frekansa ek olarak bir de hafıza sınırlaması vardır, sadece özel hafızadan değerleri yükleyip kaldırabilirsiniz.
RAM'den gelen veriler bu özel belleğe kopyalanabilir, ancak yalnızca çok dar (yavaş) bir kanal üzerinden.
Bu nedenle, büyük miktarda veri işlemeniz gereken görevler de OpenCL için pek uygun değildir.

PI hesaplama örneğinde vektör yoktur. Orada, toplam miktar birkaç bağımsız parçaya bölünür ve her bir OpenCL çekirdeğine gönderilir. Sonunda, her şey toplanır.

Örneğin, ayrı bir grafik kartı yoksa ve CPU'nun 4 fiziksel çekirdeği + 4 sanal çekirdeği varsa, yürütme sekiz kat daha hızlıdır. Onlar. toplamın parçaları, her bir çekirdekte paralel olarak hesaplanacaktır.

Neden: