gpt4 book ai didi

c - 使用 OpenMP : Parallel reduction calculation is invalid 时出错

转载 作者:太空宇宙 更新时间:2023-11-04 08:21:47 25 4
gpt4 key购买 nike

在使用 C 和 OpenMP 对一组数据进行并行处理时,我的 for 循环不断出现以下错误。

Parallel reduction calculation is invalid!
Parallel atomic calculation is invalid!

代码是:

#pragma omp parallel for num_threads(numberOfThreads \
reduction(+:number_in_circle) shared(count)
for(count = 0; count < iterations; count++)
//calculate number in circle

# pragma omp parallel for num_threads(numberOfThreads) private(x, y,\
dist_sqrd) shared(count, number_in_circle, iterations)
for(count = 0; count < iterations; count++)
//calculate number_in_circle using atomic instruction to add to it.

是我的语法有问题还是循环本身有问题?

最佳答案

我不确定您的 OpenMP 指令副本是否 100% 正确,但此处肯定存在问题:

#pragma omp parallel for num_threads(numberOfThreads \
reduction(+:number_in_circle) shared(count)
for(count = 0; count < iterations; count++)
  • num_threads(numberOfThreads 缺少右括号
  • shared(count) 无效,因为 count 是您要并行化的 for 循环的索引。尝试将此类索引定义为私有(private)既愚蠢又 explicitly forbidden by the OpenMP standard这同样适用于您引用的第二条指令。

关于 atomicreduction 子句错误,您的代码片段中没有足够的建议。

关于c - 使用 OpenMP : Parallel reduction calculation is invalid 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com