OpenCL: внутренние тесты реализации в MQL5 - страница 45

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

Andrey Dik
13537
Andrey Dik  

И?...

Не поспеваю за полётом твоей мысли, извини.


Vladimir Gomonov
8301
Vladimir Gomonov  
joo:

И?...

И... тогда...

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

Андрей, ну ведь все просто: out[ i ] не может быть больше 10000, и как только оно больше, значение массива обнуляется - по условию. Начиная с u=10001 оно будет обнуляться всегда.

Дальше мы начинаем прибавлять к нулю еще большие значения u. Но не слишком большие, не больше 4 миллиардов точно. Следовательно, значение массива положительно и точно больше 10000. Поэтому - нуль снова. И так далее. А дальше, вне цикла, к нулю прибавляется i.

Andrey Dik
13537
Andrey Dik  

Это понятно. Не понятно другое, почему мой массив Out[]  будет содержать то же самое, что и массив Владимира:

"__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";
Sceptic Philozoff
17690
Sceptic Philozoff  
joo: Это понятно. Не понятно другое, почему мой массив Out[]  будет содержать то же самое, что и массив Владимира:

Потому что вне цикла, когда значение массива уже равно нулю, к нему прибавляется i = get_global_id(0).

Ну возьми и распечатай все значения.

Sergey
810
Sergey  
Я тут sli из 590 почти собрал когда следующий тест будем гонять?
Vladimir Gomonov
8301
Vladimir Gomonov  
casinonsk:
Я тут sli из 590 почти собрал когда следующий тест будем гонять?
Теперь твоя очередь чёнить написать. )
Sceptic Philozoff
17690
Sceptic Philozoff  
casinonsk:
Я тут sli из 590 почти собрал когда следующий тест будем гонять?
Прогоните ранние тесты на этом Вашем sli и выложите тут. Хоть какая-то забава...