开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Gcc and Linux Fedora 20
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
Openmp
问题(Question):
请问各位高手,小弟我最近在学openmp,有个关于parallel for的问题。
#pragma omp parallel for private(s)
for(s=0;s<120;s++)
myfun(*output,*input,s);
*output和*input都是128*128的float point array
喂入的资料(Input):
每个s循环都会在myfun使用*input来计算出一个新的float point array,叫*new
然后输出成 *output+=*new;
预期的正确结果(Expected Output):
我预期有使用openmp和没有使用openmp结果一样
错误结果(Wrong Output):
但我发现二者还是有差异大部分的差都在10^-5左右,但是有少部分值的差到0.2,
例如正确值=25.3,使用openmp后的值=25.1
*input在myfun中,不会被改变,但是*output则是不断累加。
我试了很久,找不出原因。
各位不知道有没有建议,感谢
程式码(Code):(请善用置底文网页, 记得排版)
补充说明(Supplement):