如何使用OpenMP并行化这个数组和?

Tar*_*a16 5 c arrays parallel-processing openmp

如何使用OpenMP并行化这个数组和?什么应该分享,什么应该是私人的?

这是数组和的代码..

main()         
{        
    int a[10], i, n, sum=0;    

    printf("enter no. of elements");
    scanf("%d",&n); 
    printf("enter the elements");   

    for(i=0;i<n;i++)    
        scanf("%d",&a[i]);

    for (i=0;i<n;i++)
        sum=sum+a[i];

    for(i=0;i<n;i++)
        printf("\n a[%d] = %d", i, a[i]);

    printf("\n sum = %d",sum);

}
Run Code Online (Sandbox Code Playgroud)

小智 14

你应该使用这样的减少:

#pragma omp parallel for reduction (+:sum)
for (i=0;i<n;i++)
  sum=sum+a[i];
Run Code Online (Sandbox Code Playgroud)

  • 鉴于 i 在其他地方定义,是否应该将其标记为私有以避免竞争条件? (2认同)