Openmp段错误

时间:2013-09-16 16:51:17

标签: segmentation-fault

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

http://pastebin.com/KXrkxQXx

我用-g3编译为gdb,但是说

上出现了seg故障
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff70eb700 (LWP 19010)]
0x0000000000400c5a in condicoes_iniciais ()

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

1 个答案:

答案 0 :(得分:0)

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

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

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

要解决该问题,请将xnew声明为firstprivate。其他变量也是如此。