Я мог бы сойти с ума здесь, но я продолжаю перекомпилировать точный один и тот же код и получаю разные ответы.Я не использую никаких случайных значений вообще.Я строго придерживаюсь плавающих и одномерных массивов (я хочу в конечном итоге перенести это в CUDA).
Возможно ли на стороне компилятора, что мой тот же код переделан таким образом, что он вообще не работает?
Я запускаю .exe, просто нажимая на него, и он работает нормально, но когда я нажимаю «Скомпилировать и запустить» (Dev C ++ 4.9.9.2), ни одно из моих изображений не получается правильным.... хотя иногда они делают.
... есть понимание, как это исправить?Если я могу оказать дополнительную помощь, пожалуйста, скажите мне.
Многое оценено.
Редактировать: Вот блок кода, который, если я его закомментирую, все будет работать как надо.(Это полностью детерминировано, если я закомментирую этот блок) - это электромагнитный симулятор, если это вообще помогает:
//***********************************************************************
// Update HZ in PML regions (hzx,hzy)
//***********************************************************************
boundaryIndex = 0;
for (regionIndex = 1; regionIndex < NUMBEROFREGIONS; regionIndex++) {
xStart = regionData[regionIndex].xStart;
xStop = regionData[regionIndex].xStop ;
yStart = regionData[regionIndex].yStart;
yStop = regionData[regionIndex].yStop ;
for (i = xStart; i < xStop; i++) {
for (j = yStart; j < yStop; j++) {
hzx = hz[i*xSize+j] - hzy[boundaryIndex]; // extract hzx
hzx = dahz[i*xSize+j] * hzx + dbhz[i*xSize+j] * ( ey[i*(xSize+1)+j] - ey[(i+1)*(xSize+1)+j] ); // dahz,dbhz holds dahzx,dbhzx
hzy[boundaryIndex] = dahzy[boundaryIndex] * hzy[boundaryIndex] + dbhzy[boundaryIndex] * ( ex[i*ySize+j+1] - ex[i*ySize+j] );
hz[i*xSize+j] = hzx + hzy[boundaryIndex]; // update hz
boundaryIndex++;
} //jForLoop /
} //iForLoop /
} //
где, NUMBEROFREGIONS является константой (8), Xsize определяется во время компиляции (128здесь).