DirectX - sayfa 2

 
Rorschach :

https://www.mql5.com/ru/forum/227736

Gölgelendiriciye taşındı. İlk 15 saniye kaynak kodu işlemcide çalışır, ardından gpu sürümü çalışır.

"Derlemeden önce, Canvas.mqh dosyasındaki m_pixels[] dizisini protected:'den public:'e aktarmak gerekir"

Hmm. İlginç. Aynı hızda çıkıyor. Muhtemelen 3B dönüşüm olmadığı için.

Bu kodla denemeniz gerekiyor.


PS, orijinal kitaplıkları düzeltmemek için bu yapıyı kullanır

 #define protected public
#include <Canvas\Canvas.mqh>
#undef protected

ZYZY

Oh hayır! Üzgünüm - kodda bir hata yaptım ve bu nedenle CPU bölümünün hiç yürütülmediğini fark etmedim. Düzeltildi.
Sonuç, GPU aracılığıyla 2,5 kat daha hızlıdır.

Çok mutlu. Bu uygulama için çok teşekkür ederim. Biraz düzeltti.

Dosyalar:
 
Rorschach :

https://www.mql5.com/ru/forum/227736

Gölgelendiriciye taşındı. İlk 15 saniye kaynak kodu işlemcide çalışır, ardından gpu sürümü çalışır.

Aynı şeyi bu kodla yapmak ve hesaplamaların karmaşıklığına (ağırlık merkezlerindeki artış) bağlı olarak performans kazancının nasıl değiştiğini görmek ilginç.

Bu kod, işi hızlandırmak için bir dizi sinüs kullanmaz, sadece sinüsü hesaplar . Dönen yerçekimi merkezlerinin sayısını da değiştirebilirsiniz.

Dosyalar:
Swirl2.mq5  5 kb
 
Nikolai Semko :

Bu kodla denemeniz gerekiyor.

Göstergeyi tamamen GPU üzerinde hesaplamak istiyorum, bu kadar çok veriyi nasıl göndereceğimi bulmam gerekiyor.

Nikolay Semko :

Sonuç, GPU aracılığıyla 2,5 kat daha hızlıdır.

Nikolay Semko :

Bu kod, işi hızlandırmak için bir dizi sinüs kullanmaz, sadece sinüsü hesaplar .

XRGB( uchar ( 128 + 127 * sin (d* 45 )), uchar ( 128 + 127 * sin (d* 70 )), uchar ( 128 + 127 * sin (d* 25 )));

Bu arada, gölgelendiricide bu formülü kullanıyorum, yani hızlanma ~10 kat.

Nikolay Semko :

Aynı şeyi bu kodla yapmak ve hesaplamaların karmaşıklığına (ağırlık merkezlerindeki artış) bağlı olarak performans kazancının nasıl değiştiğini görmek ilginç.

yapmaya çalışacağım.

 
Rorschach :

Göstergeyi tamamen GPU üzerinde hesaplamak istiyorum, bu kadar çok veriyi nasıl göndereceğimi bulmam gerekiyor.

Bu arada, gölgelendiricide bu formülü kullanıyorum, yani hızlanma ~10 kat.

yapmaya çalışacağım.

Bence sonuçlar ilham vermeli.

Evet, bu gerçekten de MQL5'e çok güzel bir eklenti! Bunun için MQ ekibine teşekkürler.

Sonuçta, bir programa basitçe bir kaynak ekleyerek, video kartı kaynaklarının kullanımı nedeniyle zaman zaman matematiksel hesaplamaların performansında bir artış elde edebilirsiniz. Bu durumda, işlemcinin kendisi boşaltılır. Onlar. pazar süper seçeneği için.

Ayrıca, OpenCL, kullanıcının yazılımı yüklemesi için belirli eylemler gerektiriyorsa, DirectX varsayılan olarak Windows'ta zaten yüklüdür. Ve en şaşırtıcı olanı, DirectX kullanırken ex5 dosyasının ne kadar arttığına baktım ve dosyanın arttığını hiç görmedim. Çok havalı!!! İnceleyeceğiz ve kullanacağız.

 
Nikolai Semko :

Bence sonuçlar ilham vermeli.

Evet, bu gerçekten de MQL5'e çok güzel bir eklenti! Bunun için MQ ekibine teşekkürler.

Sonuçta, bir programa basitçe bir kaynak ekleyerek, video kartı kaynaklarının kullanımı nedeniyle zaman zaman matematiksel hesaplamaların performansında bir artış elde edebilirsiniz. Bu durumda, işlemcinin kendisi boşaltılır. Onlar. pazar süper seçeneği için.

Ayrıca, OpenCL, kullanıcının yazılımı yüklemesi için belirli eylemler gerektiriyorsa, DirectX varsayılan olarak Windows'ta zaten yüklüdür. Ve en şaşırtıcı olanı, DirectX kullanırken ex5 dosyasının ne kadar arttığına baktım ve dosyanın arttığını hiç görmedim. Çok havalı!!! İnceleyeceğiz ve kullanacağız.

Bu arada, evet, DX, OCL'den daha çok yönlüdür. Aynı özellikler + 3D. CPU üzerinde bir çalışma modu vardır ve bunun için bir sürücü kurmanıza gerek yoktur.

 
Rorschach :

Bu arada, gölgelendiricide bu formülü kullanıyorum, yani hızlanma ~10 kat.

Aynı şekilde, 2,5 kez saymanız gerekir. Optimizasyon CPU'yu etkiledi, ancak GPU'yu etkilemedi.

Nikolay Semko :

Aynı şeyi bu kodla yapmak ve hesaplamaların karmaşıklığına (ağırlık merkezlerindeki artış) bağlı olarak performans kazancının nasıl değiştiğini görmek ilginç.

Bu kod, işi hızlandırmak için bir dizi sinüs kullanmaz, sadece sinüsü hesaplar . Dönen yerçekimi merkezlerinin sayısını da değiştirebilirsiniz.

Optimizasyonu açtım. Taşımayı kolaylaştırmak için kodu 3 döngüye değiştirdi. 512 merkezin sınırlandırılması. Varsayılan olarak, GPU'da hemen başlar.

Dosyalar:
pixel.zip  1 kb
 
Rorschach :

Aynı şekilde, 2,5 kez saymanız gerekir. Optimizasyon CPU'yu etkiledi, ancak GPU'yu etkilemedi.

Optimizasyonu açtım. Taşımayı kolaylaştırmak için kodu 3 döngüye değiştirdi. 512 merkezin sınırlandırılması. Varsayılan olarak, GPU'da hemen başlar.

Çok teşekkürler!
Basit hesaplamalarda 2,5 kat kolay - ayrıca çok iyi bir sonuç. 3D'de sonucun daha da havalı olacağını düşünüyorum.

 
Rorschach :

Aynı şekilde, 2,5 kez saymanız gerekir. Optimizasyon CPU'yu etkiledi, ancak GPU'yu etkilemedi.

Optimizasyonu açtım. Taşımayı kolaylaştırmak için kodu 3 döngüye değiştirdi. 512 merkezin sınırlandırılması. Varsayılan olarak, GPU'da hemen başlar.

Bir OpenCl uygulaması istediniz. Bir şey oldu. Kod için üzgünüm, taramak için zaman yoktu. Ana şey, işe yaramasıdır.

__kernel void Func( int N, __global double *XP, __global double *YP, __global uchar *h, __global uint *buf)
{
   size_t X = get_global_id( 0 );
   size_t Width = get_global_size( 0 );
   size_t Y = get_global_id( 1 );
   
   float2 p;
   double D= 0 ,S1= 0 ,S2= 0 ;
   
   for ( int w= 0 ;w<N;w++){ 
      p.x = XP[w]-X;
      p.y = YP[w]-Y;
      D = fast_length(p);
      S2+=D;
       if (w<N/ 2 )
         S1+=D;
   }   
   //
   double d=S1/S2;
   buf[Y*Width+X] = upsample(upsample(( uchar ) 0xFF ,( uchar )h[( int )(d* 11520 )]),upsample(( uchar )h[( int )(d* 17920 )],( uchar )h[( int )(d* 6400 )]));
}
Dosyalar:
Swirl2_OCL.mq5  14 kb
test_002.zip  1 kb
 
Serhii Shevchuk :

Bir OpenCl uygulaması istediniz. Bir şey oldu. Kod için üzgünüm, taramak için zaman yoktu. Ana şey, işe yaramasıdır.

VAY! Vay canına! Dürüst olmak gerekirse benim için beklenmedik bir şekilde. Mütevazı grafik kartımla 10 kattan fazla galibiyet.
Çok teşekkürler!

 
Serhii Shevchuk :

Bir OpenCl uygulaması istediniz. Bir şey oldu. Kod için üzgünüm, taramak için zaman yoktu. Ana şey, işe yaramasıdır.

Çok teşekkürler!

İkili hesaplamalarınız var mı? O zaman sonuç özellikle etkileyici.