gpt4 book ai didi

在 C 和两个嵌套循环中使用 OpenMP 时发生崩溃

转载 作者:行者123 更新时间:2023-11-30 16:47:03 24 4
gpt4 key购买 nike

我在使用 OpenMP 的 C 代码中遇到了奇怪的行为。以下代码片段经常崩溃:

#define XLEN        (5)
#define YLEN (5)

int do_something(void)
{
int c,d;
double data[YLEN][XLEN];

#pragma omp parallel for

for(c=0;c<XLEN;c++)
{
for(d=0;d<YLEN;d++)
{

/*
In the real code here I calculate a result which is a function of c and d, save it in a temporary variable and then write it in the critical section. However this is not necessary for this minimal example.
*/

#pragma omp critical

{
data[d][c]=0.0f;
}
}
}

return 0;
}

int main(void)
{
do_something();
}

我使用的是 Mac OS X,我的代码是使用 GCC(版本 6,来自 MacPorts)或 Clang(版本 3.8,也来自 MacPorts)编译的。

最佳答案

发布一分钟后找到解决方案,d变量应该在最外层循环内声明,如下

int do_something(void)
{
int c;
double data[YLEN][XLEN];

#pragma omp parallel for

for(c=0;c<XLEN;c++)
{
int d;

for(d=0;d<YLEN;d++)
{

等等...

关于在 C 和两个嵌套循环中使用 OpenMP 时发生崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43500073/

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