我在使用 ifort 时遇到问题。我用 ifort/mpich1 编译了一个代码,但是每当我尝试在多个节点上运行它时,代码都会到达某个点并挂起并出现错误:
symbol lookup error ... undefined symbol __svml_round2
在四处寻找时,我很确定这是由于计算节点上未获取 ifortvars shell 脚本(如果我尝试在一个节点上连续触发代码,但没有获取 ifort vars 我得到相同确切的错误)。
绕过这个问题的最佳方法是什么?通过 mpirun 运行时,似乎我的“.bashrc”文件没有执行,因为我在 .bashrc 文件中有“source ...”命令。我还尝试将该行添加到 /etc/bash.bashrc 文件中,但没有成功。或者,我认为编译时的静态链接可能会解决问题,所以我包括了
-i-static
-static
使用 ifort 编译但无济于事时,我仍然收到错误消息。
有谁知道如何绕过这个问题,本质上是如何使用 ifort 编译以便在运行编译程序时不需要“source ifortvars”(更理想的解决方案),或者如何推出我的路径,或者如何通过 MPI 调用获取变量?谢谢。