OpenCL: MQL5'te dahili uygulama testleri - sayfa 44

 
joo :

Evet gibi görünüyor.

Emin değilim, çünkü zor yapılar kullanmamaya çalışıyorum (gözle görülmesi zor), ama muhtemelen boşuna, çünkü bu kodu hızlandırabilir.

Kodunuz muhtemelen daha yavaş olmalıdır, çünkü b değişkeni döngünün her yinelemesinde yeniden bildirilir.

Kodum hala daha kısa ve daha hızlı. Hem hız hem de denklik için kontrol edebilirsiniz.
 "__kernel void MFractal(                                    \r\n"
"                       __global int *out                   \r\n"
"                      )                                    \r\n"
"  {                                                        \r\n"
"   int i = get_global_id(0);                               \r\n"
"   out[i]= i;                                              \r\n"
"  }                                                        \r\n" ; //;-))
;-)
 
MetaDriver : hala daha kısa ve hızlı. Hem hız hem de denklik için kontrol edebilirsiniz ;-)
Hayır, bu adil değil. Andrey'in kodunu işleyebilir ve hızlandırabilirsiniz.
 
Mathemat :
Hayır, bu adil değil. Andrey'in kodunu işleyebilir ve hızlandırabilirsiniz.

Ne yaptım?

Optimize ediciden ne istenir? Sonuçların denkliğini korurken ek yükü azaltın! Öyleyse kontrol et, her şey kuruşa yaklaşıyor.

:)

// Bu arada !! Bu kod, #define BUF_SIZE 1024*1024*4 ile bile sürücümü çökertmiyor !!!

// Bu bir buluş!

;))))

 
MetaDriver :

Ne yaptım?

Optimize ediciden ne istenir? Sonuçların denkliğini korurken ek yükü azaltın! Öyleyse kontrol et, her şey kuruşa yaklaşıyor.

:)

Birleşiyor mu? nasıl kontrol ettin :Ö
 
joo :
Yakınsak mı? nasıl kontrol ettin :Ö
Nasıl nasıl! Hesap makinesinde! Sekiz parçayı paralel olarak fırlattı ve kontrol etti.
 
MetaDriver :
Nasıl nasıl! Hesap makinesinde! Sekiz parçayı paralel olarak fırlattı ve kontrol etti.

Kürkülatörünüz yalan söylüyor. :)

Döngü 0+1+2+3+...+99999999 kadar ekler. Ve her 10.000 adımda bir değer 0'dır.

Ne yaptın? - sineğin numarasını atadı ve hepsi bu. Sonuçlarım ve sizinkiler nasıl eşleşebilir?

 

Burada biraz sigara içtim ve bundan şüphelendim

 "__kernel void MFractal(                                    \r\n"
"                       __global int *out                   \r\n"
"                      )                                    \r\n"
"  {                                                        \r\n"
"   out[get_global_id(0)]= get_global_id(0);                \r\n"
"  }                                                        \r\n" ;

daha da hızlı koşacak. Gerçek şu ki, get_global_id() büyük olasılıkla bir işlev değil, süper hızlı bir kayıt işlemidir.

Profil oluşturucu olmadan kontrol edilemez. Gerçekten ihtiyacı olan ve isteyen varsa, lütfen sonuçları stüdyodan stüdyoya bildirin. işe yaramak.
 
MetaDriver :

Optimize ediciden ne istenir? Sonuçların denkliğini korurken ek yükü azaltın! Öyleyse kontrol et, her şey kuruşa yaklaşıyor.

// Bu arada !! Bu kod, #define BUF_SIZE 1024*1024*4 ile bile sürücümü çökertmiyor !!!

Daha fazla sigara içti ve sinirlendi. Öte yandan - sürücü düşmediği için sonuçtaki eşdeğerlik zaten eksiktir .

Kahretsin.. Ne büyük bir serseri. :(

 
MetaDriver : ve sinirlendim. Öte yandan - sürücü düşmediği için sonuçtaki eşdeğerlik zaten eksiktir .

Hayır, çok kötü sigara içtin.

1^3 + 2^3 + 3^3 + ... + 1000000000^3 = 1000000000^2 * (1000000000 + 1)^2 / 4

Sol ve sağ - aynı şey, tam denklik.

Sadece sol ifadeyle taşı oldukça uzun bir süre ısıtacaksınız ve doğru olanla - neredeyse anında, işlemci fark etmeyecek ve soğuk kalacaktır.

PS OpenCL 1.2'ye (beta) Yükseltme. Lütfen sürüm numarasından sonra küçük bir eklemeye dikkat edin - sse2.

 2012.03 . 22 07 : 43 : 28      Terminal        CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80 GHz with OpenCL 1.2 ( 2 units, 2793 MHz, 7912 Mb, version 2.0 (sse2))

Çok sert olduğu söylenemez ama bazı testlerde hızlandı. Diyelim ki, Tast_Mand_'da (peki, sen bir sapıksın, Andryukha ) - yüzde 5-10. Biraz ama güzel.

 
joo :

Kürkülatörünüz yalan söylüyor. :)

Döngü 0+1+2+3+...+99999999 kadar ekler. Ve her 10.000 adımda bir değer 0'dır.

Ne yaptın? - sineğin numarasını atadı ve hepsi bu. Sonuçlarım ve sizinkiler nasıl eşleşebilir?

Tekrar kontrol etmen için sana neredeyse bir gün verdim. Hala ısrar ediyor musun? :)

Hadi izleyelim:

 // Это твой код (оригинал)
"  {                                \r\n"
"   int i = get_global_id(0);       \r\n"
"   for(int u=0;u<100000000;u++)   \r\n"
"   {                           \r\n"
"    out[i]+=u;              \r\n"   
"    if(out[i]>10000)     \r\n"
"      out[i]=0;         \r\n" // после десятитысячного шага итерации этот оператор начнёт выполняться в каждом цикле.
"   }                    \r\n" // т.е. на выходе из цикла по любому будем иметь out[i] = 0;
"   out[i]+= i;          \r\n" // ecли к нулю прибавить номер мухи то получится... сам посчитай..... на калькуляторе... :)
"  }                     \r\n" ;// есть ещё вариант, надёжнее - распечатай результаты и сравни.  ;-)))