我需要一点帮助。我尝试使用opemmp,我有一个seg错误。当我评论#pragma ...程序运行正常,但是#pragma我得到了seg和更多的警告,我不知道我做错了什么,我在opemmp上的新功能,欢迎任何帮助。 这是我的代码。
我用-g3编译为gdb,但是说
上出现了seg故障Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff70eb700 (LWP 19010)]
0x0000000000400c5a in condicoes_iniciais ()
感谢您的帮助。抱歉英语不好。
答案 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
。其他变量也是如此。