应项目需求,需要实现基于超算平台的MPI并行编程任务,在此记录从本地Unix系统移植到超算云平台所遇到的一些坑。
Error While Loading Shared Libraries balabala...
在代码以及编译命令无问题时,有可能是使用了平台默认的编译器(通常版本较低),可以尝试使用版本更高的编译器。
文件读取
由于本渣实现的并行算法需要在算法开始时读取参数文件。
参数文件中包含要算法需要读写的文件路径。
超算云平台的文件是基于分布式文件存储,当我的参数文件中的路径写为相对路径时,不知为何就是获取不到文件。
当我将路径字符串写为绝对路径时就可以了,很迷。。
(绝对不是我的路径写的有问题,因为我的代码中读取参数文件的路径就是相对路径!)
变量的初始化
从本地移植到超算平台后,程序运行会导致core dumped。
MPI程序难调试,搞了两天,终于找到是初始化的问题。
本地环境为Ubuntu环境,C++对象中的变量初始化为0,但是在超算平台上,莫名出现变量初始化为17258600245等类似的奇怪的数字。
(教训,定义变量一定要初始化,尤其是需要移植平台的程序)