MQL'de asenkron ve çok iş parçacıklı programlama - sayfa 23

 
Maxim Romanov :
Opencl'in neden uygun olmadığını bana açıklayın. Terminalde, opencl kodu yazma yeteneği uygulanır ve bu çoklu okumadır. Burada yazdıkları çoklu iş parçacığı ile bu çip arasındaki farkların ne olduğunu kendim için anlamak istiyorum.
Ya da kim bilir, açıklayın ki anlayayım.

VPS sunucularında ekran kartı yoktur veya varsa çok uygun maliyetli değildir))
Evet, LAN'daki çoğu kullanıcı için bile vidyushki opencl'i desteklemez))
Opencl altında kodun kendisini yazmanın karmaşıklığından bahsetmiyorum bile.
Evet, bir seçenek var, ancak çok dar bir insan çevresi için.

 
Roman :

VPS sunucularında ekran kartı yoktur veya varsa çok uygun maliyetli değildir))
Evet, LAN'daki çoğu kullanıcı için bile vidyushki opencl'i desteklemez))
Opencl altında kodun kendisini yazmanın karmaşıklığından bahsetmiyorum bile.
Evet, bir seçenek var ama çok dar bir insan çevresi için.

İşlemcide opencl da çalışıyor. Siz sadece kodu yürütecek cihazı seçin. Bu sadece video kartları teknolojisi için değil. Sunucularda, sorunun vidyuhi ile olduğunu biliyorum.
 
Maxim Romanov :
İşlemcide opencl da çalışıyor. Siz sadece kodu yürütecek cihazı seçin. Bu sadece video kartları teknolojisi için değil. Sunucularda, sorunun vidyuhi ile olduğunu biliyorum.

Ama opencl'in işlemcilerde de çalıştığını bilmiyordum. Opencl hakkında okumak için Renat'ın makalesine ulaşamam gibi değil.
Burada da opencl ile ilgili bir gönderi gözden kaçtı, ancak tüm programcıları opencl'e koyamazsınız, normal görev yöntemlerini kutudan çıkarmayın, bir şekilde daha kullanışlı görünüyorlar))
Opencl herhangi bir işlemcide çalışıyor mu? Yoksa modele de mi bağlı?

 
Roman :

Ama opencl'in işlemcilerde de çalıştığını bilmiyordum. Opencl hakkında okumak için Renat'ın makalesine ulaşamam gibi değil.
Burada da opencl ile ilgili bir gönderi gözden kaçtı, ancak tüm programcıları opencl'e koyamazsınız, normal görev yöntemlerini kutudan çıkarmayın, bir şekilde daha kullanışlı görünüyorlar))
Opencl herhangi bir işlemcide çalışıyor mu? Yoksa modele de mi bağlı?

Evet gibi görünüyor, Intel ve AMD'de çalışması gerekiyor, sadece sürücüyü yüklemeniz gerekiyor. AMD'de denedim ve işe yaradı.
 
Maxim Romanov :
Evet gibi görünüyor, Intel ve AMD'de çalışması gerekiyor, sadece sürücüyü yüklemeniz gerekiyor. AMD'de denedim ve işe yaradı.

Yine de, işlemci modeline veya sürücülere bir miktar bağımlılık yüzdesi olduğu ortaya çıktı.
Bu, örneğin işini dağıtan (satan) herkes için uygun olmayabilir.
Burada programın taşınabilirliğine önem verenler var, bence bu da önemli bir parametre.

Ve opencl özel dll ile çalışabilir mi?
onlar. dll'den dışa aktarılan işlevleri eşzamansız olarak çağırın mı?
Görevlerle çalışmak için düzenli bir sınıf vardı, işlevlerinizi dll'den eşzamansız olarak da çağırabilirsiniz.
Yani, normal işlevsellik, kod yazarken çok daha kullanışlı ve daha erişilebilir.

 

Ulaştırma departmanı başkanından haber almamamız üzücü - çok iş parçacıklı hangi özel görevi uygulamak istiyorsunuz? Probleme önerilen çözümün basit bir blok diyagramını çizin.

İnatla görevleri, başlangıçta amaçlanmadığı MCL'ye sıkıştırmaya çalışıyorsunuz. Hiç kelimeden. Hazır çözümler var - neredeyse tüm PL'ler için bir API'si olan ZeroMQ'ya bakın. Ayrıca, nazik insan Ding Li , ZeroMQ'yu MQL4/5 ile birlikte kullanmak için birçok örnek içeren bir kütüphane geliştirmiştir. Bu konuyla ilgili forumdaki konuyu pratik kod örnekleriyle okuyun.

Bir harçta suyu ne (konu başlatıcı) eziyorsunuz? Yoksa piyasaya da bağlı mısınız?

İyi şanlar

Interesting Whitepapers - zeromq
  • zeromq.org
Unlike other (centralised) messaging systems which are based on the well-understood theoretical foundation, there are almost no resources regarding distributed messaging in general and ØMQ in particular that an interested reader can be pointed to. The goal of this paper is to explain the elementary concepts of ØMQ architecture, how they fit...
 
Roman :

Ve opencl özel dll ile çalışabilir mi?
onlar. dll'den dışa aktarılan işlevleri eşzamansız olarak çağırın mı?
Görevlerle çalışmak için düzenli bir sınıf vardı, işlevlerinizi dll'den eşzamansız olarak da çağırabilirsiniz.
Yani, normal işlevsellik, kod yazarken çok daha kullanışlı ve daha erişilebilir.

DLL işlevini çağırın. DLL'de bir iş parçacığı oluşturup ona veri iletirsiniz, iş parçacığının bağlantısını kesin ve unutun - görevini kendi başına tamamlayacaktır. DLL'deki bir iş parçacığı ayrıldığında, terminal iş parçacığı serbest bırakılır. Tüm süreç, inanıyorum ki, bir milisaniyeden daha az sürüyor. İş parçacığının bağlantısını kesmeden bile, veritabanına yazma işleminin 4-5 ms olduğuna karar verdim. Terminalden gelen asenkron çağrıya üzülmemek için 60 tik/dk yeterlidir.

 
Vladimir Perervenko :

Ulaştırma departmanı başkanından haber almamamız üzücü - çok iş parçacıklı hangi özel görevi uygulamak istiyorsunuz? Probleme önerilen çözümün basit bir blok diyagramını çizin.

İnatla görevleri, başlangıçta amaçlanmadığı MCL'ye sıkıştırmaya çalışıyorsunuz. Hiç kelimeden. Hazır çözümler var - neredeyse tüm PL'ler için bir API'si olan ZeroMQ'ya bakın. Ayrıca nazik insan Ding Li , ZeroMQ'yu MQL4/5 ile birlikte kullanmak için birçok örnek içeren bir kütüphane geliştirmiştir. Bu konuyla ilgili forumdaki konuyu pratik kod örnekleriyle okuyun.

Bir harçta suyu ne (konu başlatıcı) eziyorsunuz? Yoksa piyasaya da bağlı mısınız?

İyi şanlar

Üçüncü taraf çözümleri kullanmamaya çalışıyorum.
Ağ görevim için zaten bir çözüm buldum, onu incelemek, uygulamak ve beyni kullanmamak için kalıyor.
Ancak burada aynı zamanda engellenmeyen çağrılara ve eşzamansızlığa da ihtiyaç duyan programcılar var.
Bu yüzden, işlevselliği dilin düzenli sunumuna dahil etmeyi önerdim. Ve bu, geliştiricilerin takdirine bağlı, ana fikir ve sağlam.
Terminalin neden EventLoop'u uygulamak için tasarlanmadığını düşünüyorsunuz? Özellikle kelimeden tamamen ...
Yerel aracılar hangi algoritma üzerinde çalışıyor? Muhtemelen iş parçacığı havuzunda? Onları kim yönetiyor, görevleri dağıtıyor?
Yani benzer bir algoritma zaten terminalde var, neden işlevselliği genişletmek için kullanmıyorsunuz?
Programcılara kod yazmak için eşzamansız bir yol verin.
Ben fikirden yanayım, eğer kimse uyumsuzluğa ihtiyaç duymuyorsa, ne diyebilirim ki, birçoğunun tek bir iş parçacığına sıkışıp kalmasına üzülüyorum.


 
Yuriy Asaulenko :

DLL işlevini çağırın. DLL'de bir iş parçacığı oluşturup ona veri iletirsiniz, iş parçacığını ayırır ve unutursunuz - görevini kendi başına tamamlayacaktır. DLL'deki bir iş parçacığı ayrıldığında, terminal iş parçacığı serbest bırakılır. Tüm süreç, inanıyorum ki, bir milisaniyeden daha az sürüyor. İş parçacığının bağlantısını kesmeden bile, veritabanına yazma işleminin 4-5 ms olduğuna karar verdim. Terminalden gelen asenkron bir çağrıya üzülmemek için 60 tik/sn yeterli.

Burada başka bir fikir için teşekkürler, yerel makalelere göre dll yazabilirim, ancak ne yazık ki giriş noktası, başlatma, bellek ayırma , iş parçacığı oluşturma vb. için prosedürü açıklamıyorlar.
Bu konuyla ilgili ne kadar literatür araştırsam da, giriş noktası ile nasıl doğru çalışılacağını bulamıyorum. Bu konuda herhangi bir bilgi varsa lütfen bana bildirin.
Ya da öğretebilirsen, bilgiyi seve seve kabul ederim.
Programcı olmak için çalışmadım, her şeyi kendim çalışırım, bu yüzden beni sıkmayın ))

 
Maxim Romanov :
Opencl'in neden uygun olmadığını bana açıklayın. Terminalde, opencl kodu yazma yeteneği uygulanır ve bu çoklu okumadır. Burada yazdıkları çoklu iş parçacığı ile bu çip arasındaki farkların ne olduğunu kendim için anlamak istiyorum.
Ya da kim bilir, açıklayın ki anlayayım.
Dürüst olmak gerekirse, opencl dikkatli bir şekilde incelenmemiştir. Bu kararın bir tür bağımlılığını yakaladım ve ilgilenmeyi bıraktım. Kabloları bir yerden bir yere çekip sümüğe bir şeyler vidalaman gerektiğini düşündüm. Belki kesinlikle yanlış ama burada opencl kullanan uygulayıcılarla tanışmadım ve ön yargımı kıracak kimse yoktu. Belki daha sonra birbirimizi daha iyi tanıdıkça bakış açımı değiştiririm ya da tam tersi. Her durumda, dışa bağımlılık can sıkıcıdır, çünkü program taşınabilirliği benim için çok önemlidir.