linux - 如何导出计算节点的路径,并行编程

标签 linux bash mpi intel-fortran

我在使用 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 进行编译,以便在运行编译的程序时不需要“获取 ifortvars”(更理想的解决方案),或者如何推出我的路径,或者如何通过 MPI 调用获取变量?谢谢。

最佳答案

您可以将环境变量作为 mpirun/mpirun_rsh 命令的一部分提供。

例如

导出 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib;mpirun_rsh -ssh -host -np 2 -hostfile hoSTList/home/usr1/app.exe -x/home/usr1/config/appconfig.xml

关于linux - 如何导出计算节点的路径,并行编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842880/

相关文章:

linux - UNIX shell 脚本在作为计划任务运行时失败

linux - Bash- 在一行中从数组中求和值

bash - 在 bash 中执行命令时路径中有多个可执行文件时生成警告

c - 在MPI和C中,如何将结构体信息发送到从属进程并接收它们?

c++ - MPI_Recv/MPI_Send 开销

mysql - Linux bash MySQL 载入文件

linux - Debian Server.exe 错误

bash - 循环 sed 的结果

python - python 脚本是由 mpirun 还是 mpiexec 启动的?

linux - _SC_CLK_TCK 没有定义