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

标签 c arrays parallel-processing openmp

如何使用 OpenMP 使这个数组总和并行化? 什么应该共享,什么应该是私有(private)的?

这是数组求和的代码..

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);

}

最佳答案

你应该像这样使用缩减:

#pragma omp parallel for reduction (+:sum)
for (int i=0;i<n;i++)
  sum=sum+a[i];

关于c - 如何使用 OpenMP 并行化这个数组总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27056090/

相关文章:

java - 最好使用哪种无限循环

c - 结构定义和初始化

c - 我想知道如何终止进程

php - 将包含键和值的字符串转换为数组

c - 为什么原数组也是排序的?

c++ - openMp多个独立for循环的性能问题

从其字节计算整数会给出奇怪的错误结果

javascript - javascript中的对象访问与数组访问

parallel-processing - HBase 如何跨区域服务器分区表?

c - 带有 pragma omp parallel for 的嵌套循环,困惑起来