我正在尝试在Linux机器上运行并行代码(数值模拟)。我已经在我的笔记本电脑(OSX)上测试了代码配置,一切正常。当我运送到较大的(Linux)机器时,它会在第一个时间步长上发生段错误。
我没有编写代码,也不想进行调试。我希望有可能用不同的编译器或标志来解决问题。
在我的笔记本电脑(OSX)上,我使用默认编译器运行代码。
cc --version
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.5.0
在我工作的Linux机器上,我正在使用
cc --version
cc (Ubuntu 4.9.4-2ubuntu1~14.04.1) 4.9.4
我在Linux机器上尝试了4.9.4和4.8.4,两者都给出了相同的段错误。
我的Makefile
设置以下指令:
CFLAGS = -O3
LDFLAGS = -I`pwd` -I$(SRCDIR) -I/usr/bin/include -I/usr/include/mpi
LIBFLAGS = -lm -lnetcdf -lmpi -L/usr/bin/lib
我知道这是一个黑暗中的镜头,但如果有人有改变的建议,我可以尝试让这个在linux机器上工作,我将非常感激。如果你已经不熟悉,我只是一个普通的科学家,而不是一个计算机科学家,所以这对我来说大部分都是黑魔法。
感谢。
答案 0 :(得分:0)
我没有编写代码,也不想进行调试。
好吧,如果你拒绝帮助自己,你就必须贿赂别人为你做这件事。
我希望用不同的编译器或标志解决问题是可能的。
这很有可能,但找到正确的标志需要首先理解问题。
否则,您正在尝试program by coincidence,这很少会带来成功。