この並列化された戻り値は、並列化されていない戻り値と一致しません。OpenMPを使用したC++でのループの並列化
double angle=(PI/180)*atoi(extra);
unsigned int xf;
unsigned int yf;
int j;
#pragma omp parallel for private (j,xf,yf)
for(int i=0;i<width;i++){
for(j=0;j<height;j++){
xf=(unsigned int)ceil(((cos(angle)*(j-(((double)height)/2.0)))-(sin(angle)*(i-(((double)width)/2.0))))+(((double)height)/2.0));
yf=(unsigned int)ceil(((sin(angle)*(j-(((double)height)/2.0)))+(cos(angle)*(i-(((double)width)/2.0))))+(((double)width)/2.0));
if(xf<(unsigned int)height && xf>=0 && yf>=0 && yf<(unsigned int)width){
matrixRed2[yf][xf]=matrixRed[i][j];
matrixGreen2[yf][xf]=matrixGreen[i][j];
matrixBlue2[yf][xf]=matrixBlue[i][j];
}
}
}
私はあなたのコードに完全に従っているかどうかはわかりませんが、スレッドが計算するときに 'yf'と' xf'の値が必ず異なっているように見えません。 –