大家帮我看看这个openmp中的for问题?
串行代码是这样:
for (int i = 0; i < 1000; i++)
if(!BuildJPGTexture(IDR_JPG_PPNAME1 + i, tPPName[i]))
return false;
我把这段代码改成并行后是这样:
#pragma omp parallel for reduction(*:sum)
for (int i = 0; i < 1000; i++)
if(!BuildJPGTexture(IDR_JPG_PPDEVICE1 + i, tPPDevice[i]))
sum=0;
if(sum == 0 )
return false;
因为for中不可以在没有做完1000次时就跳出循环,所以我就加了一个*逻辑,在做完1000次后才根据sum的结果来返回。可是为什么我的这段代码编译可以通过,但却实现不了原来那段串行代码的功能。
我openmp刚上手,请高手们帮我看看是什么问题,或者有没有效率更高的一段代码来替换原来的串行代码。