0

我需要一点帮助。我尝试使用 opemmp,但我有一个段错误。当我评论 #pragma... 程序运行正常,但使用 #pragma 我得到 seg 和更多警告,我不知道我做错了什么,我是 opemmp 的新手,欢迎任何帮助。这是我的代码。

http://pastebin.com/KXrkxQXx

我用 -g3 编译到 gdb,但是说 seg fault occour on

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff70eb700 (LWP 19010)]
0x0000000000400c5a in condicoes_iniciais ()

感谢帮助。抱歉英语不好。

4

1 回答 1

0

我还没有完全阅读你的代码,但我看到了一个可以告诉你的错误。

xnew在第 125 行,为每个线程分配内存,并在第 140 行将此指针设为私有。当您在 OpenMP 中将变量声明为私有时,它的值在开头是未定义的,因此您缺少分配内存的地址。例如:

int a = 10;
#pragma omp parallel private(a)
{
  a += 5; // wrong, a is not initialized in the thread
}

要解决该问题,请声明xnewfirstprivate. 其他变量也是如此。

于 2013-09-16T17:12:49.107 回答