OpenCL:MQL5での内部実装テスト - ページ 45

 
MetaDriver:
.........
"      out[i]=0;         \r\n" // после десятитысячного шага итерации этот оператор начнёт выполняться в каждом цикле.
"   }                    \r\n" // т.е. на выходе из цикла по любому будем иметь out[i] = 0;
......... 
なぜ?
 
joo:
なぜ?
out[i]+=u;       // если к неотрицательному числу прибавить число u большее 10000
if(out[i]>10000)  // то результат будет больше 10000 (true)
  out[i]=0;      // тогда ... = 0
 

И?...

あなたの考え方についていけません、ごめんなさい。

 
joo:

И?...

И...では

"      out[i]=0;         \r\n" // после десятитысячного шага итерации этот оператор начнёт выполняться в каждом цикле.
"   }                    \r\n" // т.е. на выходе из цикла по любому будем иметь out[i] = 0;
 

Andrey、それは簡単です。out[ i ]は10000より大きくはできず、大きくなるとすぐに配列の値がゼロになります - 条件によって。u=10001から、常にゼロになります。

ここからは、さらに大きな値のuを0に足していきます。でも、あまり大きくはない、40億以上は確実にない。したがって,配列の値は正であり,ちょうど10000より大きくなります.したがって、再びゼロとなる。といった具合に。そして、ループの外側で、iを0に足すのです。

 

これは理解できる。不明なのは、なぜ私のOut[]配列がVladimirの 配列と同じものを含むのか、ということです。

"__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";
 
joo: クリアです。なぜ、私の配列Out[]がVladimirの 配列と同じ値を含むのか、その理由は明らかではありません。

なぜなら、ループの外では、配列の値がすでに0であるとき、i = get_global_id(0) がそれに追加されるからです。

では、すべての値をプリントアウトしてください。

 
590のスリはほぼ揃ったので、次のテストはいつになるのでしょうか?
 
casinonsk:
590のスリはほぼ揃ったので、次のテストはいつになるかな?
今度はあなたが何かを書く番です。)
 
casinonsk:
590のスリもほぼ揃ったし......次のテストはいつになるんだろう?
あなたのこのスリの初期テストを実行し、ここに投稿してください。せめてもの楽しみは...。