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值加到零。但不能太大,肯定不超过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的 数组相同的值。

因为在循环之外,当数组的值已经为零时,i = get_global_id(0)被添加到其中。

好吧,去吧,把所有的数值打印出来。

 
我几乎已经把590的滑块放在一起,下一次测试是什么时候?
 
casinonsk:
我已经差不多把590的滑块凑齐了,下一次测试是什么时候?
现在轮到你写东西了。)
 
casinonsk:
我已经差不多把590的滑块凑齐了,下一次测试什么时候进行?
在你的这个滑轮上运行早期测试,并在这里发布。至少有一些乐趣...