"OpenCL: Paralel dünyalara köprü" makalesi için tartışma

 

Yeni makale OpenCL: Paralel dünyalara köprü yayınlandı:

Ocak 2012'nin sonlarında, MetaTrader 5'in geliştirilmesinin arkasındaki yazılım geliştirme şirketi, MQL5'te OpenCL için yerel desteği duyurdu. Açıklayıcı bir örneğin kullanıldığı makale, MQL5 ortamında OpenCL'deki programlama temellerini ortaya koymakta ve çalışma hızını artırmak için programın daha önce denenmemiş optimizasyonuna birkaç örnek sunmaktadır.

Yukarıdaki işlemlerin ardından, resim aşağıdaki gibi olacaktır:

Şekil 8. Çekirdeğin parametrelerinin ayarlanmasının sonuçları

Şekil 8. Çekirdeğin parametrelerinin ayarlanmasının sonuçları


Yazar: Sceptic Philozoff

 

Çok teşekkür ederim!

Uzun zamandır OpenCL ile ilgili bir makale bekliyordum.

Şimdi okuyacağım. :)

 
Çok fazla bukaf :) Ama bukaf çok gerekli ve yararlı, bu graniti çiğneyeceğim. Teşekkür ederim!
 
joo: Uzun zamandır OpenCL ile ilgili bir yazı bekliyordum.

Okuyacağım. :)

Muhtemelen çok fazla ihtiyacınız yok. Zaten hepsini biliyor olmalısınız.

Bir sonraki yazıda ciddi olacak, donanım üzerine çok şey olacak.

 
Evet. Bunu dahil etmek için gerçekten çok erken, ancak elbette bu standardı uzmanlaşmaya uyarlamak gerekiyor. Belki de altıncı thester'ın bir sonraki sürümünde bunu yapmak mümkün olacaktır, bu işlevselliğe daha önce sahip olmak istiyorum....
 
GKS: Evet. Açmak için çok erken.

Etkinleştirmek için çok erken olan nedir, lütfen açıklayın. OpenCL ise - zaten etkinleştirildi. Tüm deneyler doğrudan MetaEditor 5'te gerçekleştirilmiştir.

Not: Önemli olan, OCL aracılığıyla kodlayıcının aslında daha önce erişemediği bir şeye erişebilmesidir. Bunlar:

- Visual Studio'ya dahil edilebilen ancak OCL olmadan MQL5 'e dahil edilemeyen (S)SSEx (dll'leri saymazsak).

- Ayrık GPU'lardaki hesaplamalara erişim, bu da herhangi bir dll benzeri hile olmadan MQL5'te tek bir çekirdekte yapılabilecekleri ek olarak hızlandırır.
.

 
Mathemat:

1. Muhtemelen çok fazla ihtiyacınız yoktur. Tüm bu şeyleri nasıl yapacağınızı zaten biliyor olmalısınız.

2. Bir sonraki makalede ciddi olacak, donanımla ilgili çok şey olacak.

1. İhtiyacım var.

2. Harika!

Soru benim için hala belirsizliğini koruyor: OCL programının CPU üzerinde yürütülmesine neden "emülasyon" diyorsunuz? CPU, GPU ile birlikte, cihaz için ilgili bir sürücü varsa ve tüm işlemci çekirdekleri yüklüyse OCL programının çalışabileceği cihazlardan yalnızca biridir.

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
joo: Soru benim için hala belirsizliğini koruyor: Neden bir OCL programını CPU üzerinde çalıştırmaya "emülasyon" diyorsunuz?

Çünkü emülasyon budur, yavaş emülasyon. CPU'da (Intel sayesinde, açıkça yasaklamadığınız takdirde vektörleştirmeyi arayan akıllı bir derleyiciye sahiptir) paralelleştirme (S)SSEx talimatları ve belki de bağımlılık analizi ile yapılırken, GPU'lar SIMD Motorları ile ilgili çok daha fazla olanağa sahiptir. Ayrıca daha geniş veri yolları ve daha hızlı bellek vardır - özellikle yerel ve özel bellek.

Donanım hakkında. Ana öneriler AMD donanımı için geçerli olacaktır. Ancak bunların birçoğu biraz değiştirilmiş bir terminoloji ile NVidia donanımı için de geçerlidir.

 
Mathemat:

Çünkü bu bir emülasyondur, yavaş emülasyon. CPU'larda (Intel sayesinde, açıkça yasaklamadığınız takdirde vektörleştirmeyi arayan akıllı bir derleyiciye sahiptir), paralelleştirme (S)SSEx talimatları ve muhtemelen bağımlılık analizi ile yapılırken, GPU'lar SIMD Motorları ile ilgili çok daha fazla olanağa sahiptir. Ayrıca daha geniş veri yolları ve daha hızlı bellek vardır - özellikle yerel ve özel bellek.

Donanım hakkında. Ana öneriler AMD donanımı için geçerli olacaktır. Ancak bunların birçoğu biraz değiştirilmiş bir terminoloji ile NVidia donanımı için de geçerlidir.

OpenCL (Açık Hesaplama Dili), CPU'lar, GPU'lar ve diğer işlemciler arasında genel amaçlı paralel programlama için açık ve telifsiz bir standarttır ve yazılım geliştiricilere bu heterojen işleme platformlarının gücüne taşınabilir ve verimli erişim sağlar.

Bakınız - GPU'lar için OCL'den ve diğer cihazlar için emülasyon modundan bahsedilmemektedir. OpenCL, birden fazla hesaplama çekirdeğine sahip ve OCL desteği olan tüm cihazlarda paralel hesaplamalar düzenlemek için evrensel bir programlama dilidir. GPU'lar için özelleştirilmiş olan CUDA veya ATI Stream değildir.

Ayrıca, bazı durumlarda CPU'lardaki paralelleştirme ve OCL hesaplamaları GPU'lardan bile daha hızlıdır. Şimdi programlarımın ayarlarında bir cihaz seçmeyi zorunlu hale getiriyorum, çünkü hesaplamaların hızı doğrudan işlenen veri miktarına ve hesaplamaların "ciddiyetine" bağlıdır (ayrıca giriş ayarlarına da bağlıdır) - bazen GPU'da, bazen CPU'da daha hızlıdır.

 
joo:

OpenCL (Açık Hesaplama Dili), CPU'lar, GPU'lar ve diğer işlemciler arasında genel amaçlı paralel programlama için açık, telifsiz bir standarttır ve yazılım geliştiricilere bu heterojen işleme platformlarının gücüne taşınabilir ve verimli erişim sağlar.

Bakınız - GPU'lar için OCL'den ve diğer cihazlar için emülasyon modundan bahsedilmemektedir. OpenCL, birden fazla hesaplama çekirdeğine sahip ve OCL desteği olan tüm cihazlarda paralel hesaplamalar düzenlemek için evrensel bir programlama dilidir. GPU'lar için tasarlanmış olan CUDA veya ATI Stream değildir.

CPU bir cihaz olarak görüldüğü için belki de bazı açılardan haklısınız. Ancak bazı veriler bunun daha çok emülasyona benzediğini gösteriyor. Örneğin, CPU durumunda CLBufferWrite() aygıt belleğine bir tampon yazmanın sadece "bir tik için" yapıldığına dair şüpheler vardır, çünkü CPU'nun yalnızca bir global belleği vardır. Bununla birlikte, CPU'nun da bir önbelleği var, ancak ona ne olduğunu ve nasıl çalıştığını bilmiyorum.

Ayrıca, bazı durumlarda CPU'daki paralelleştirme ve OCL hesaplamaları GPU'dakinden bile daha hızlıdır.

Evet, örneğin dot( )'un skaler çarpımının CPU'da daha hızlı olduğu durumlar var. Ancak karşılaştırma bir Core 2 Duo ile bağlantıdakinden daha güçlü bir grafik kartı arasında olsaydı neyin daha hızlı olacağı konusunda spekülasyon yapmazdım. Özellikle de algoritmayı optimize etmeye özen gösterirseniz. Ne derseniz deyin, CPU ve GPU için farklıdır.

 
Mathemat:

Etkinleştirmek için erken olan nedir, lütfen açıklayın. OpenCL ise - zaten etkinleştirilmiştir. Tüm deneyler doğrudan MetaEditor 5'te gerçekleştirilmiştir.

Not: Asıl önemli olan, OCL aracılığıyla kodlayıcının daha önce erişemediği bir şeye erişebilmesidir. Bunlar:

- Visual Studio'ya dahil edilebilen ancak OCL olmadan MQL5 'e dahil edilemeyen (S)SSEx (dll'leri saymazsak).

- Ayrık GPU'lardaki hesaplamalara erişim, MQL5'te herhangi bir dll tipi hile olmadan tek bir çekirdekte yapılabilecekleri ek olarak hızlandırır.
.

Bulut bilişim için uyarlamayı kastetmiştim, her işlemci çekirdeğinin birçok bilgisayarla ağa bağlı grafik hızlandırıcıların birçok "aç arısı" tarafından desteklendiğini hayal ederseniz, gerçekten harika ve hızlı olacaktır.

İşin yarısı bitti, şimdi sadece bulut için açma meselesi....