【问题标题】:mpicc hangs when called from makefile; runs fine as single command从 makefile 调用时 mpicc 挂起;作为单个命令运行良好
【发布时间】:2013-06-25 04:18:11
【问题描述】:

我正在尝试编译 WRF(怀疑是否相关)并且遇到了一个问题,即使用编译脚本运行时 mpicc 会挂起。 icc 和 mpif90 没有问题。编译脚本使用 #!/bin/csh -f

执行

只是为了冗长,这里是一个例子。我运行脚本并到达这里

make[3]: Entering directory `/home/jason/wrf/wrf3.5/external/RSL_LITE'
mpicc  -DMPI2_SUPPORT -DMPI2_THREAD_SUPPORT -DFSEEKO64_OK  -w -O3  -DDM_PARALLEL -DMAX_HISTORY=25 -DNMM_CORE=0  -c rsl_bcast.c

然后挂起。那么我自己运行那条线

jason@server:~/wrf/wrf3.5$ cd /home/jason/wrf/wrf3.5/external/RSL_LITE
jason@server:wrf3.5/external/RSL_LITE$ mpicc  -DMPI2_SUPPORT -DMPI2_THREAD_SUPPORT -DFSEEKO64_OK  -w -O3  -DDM_PARALLEL -DMAX_HISTORY=25 -DNMM_CORE=0  -c rsl_bcast.c
jason@server:wrf3.5/external/RSL_LITE$

立即编译。再次启动编译脚本会做完全相同的事情,但在下一个文件上。我不知道该怎么做,这在谷歌上基本上是不可能的。

【问题讨论】:

  • 会不会是不同的编译器?在终端中输入which mpicc,并在调用mpicc 之前将此命令放入脚本中。此外,将-v 选项添加到 mpicc 以增加详细程度。
  • 否定的,相同的 mpicc。
  • -v 选项在挂起之前是否显示任何内容?
  • 如果被mpicc 调用的编译器需要许可证(例如浮动网络许可证),它可能会由于许可证服务器此时不可用或许可证路径环境变量而挂起没有在csh 脚本中正确设置。当您手动编译文件时,它会生成一个对象 .o 文件,因此 makefile 会跳过该源文件并继续下一个源文件。

标签: compilation makefile mpi icc


【解决方案1】:

如果你像这样启动它,命令是否有效

env -i $SHELL -c 'cd /home/jason/wrf/wrf3.5/external/RSL_LITE && mpicc -DMPI2_SUPPORT -DMPI2_THREAD_SUPPORT -DFSEEKO64_OK -w -O3 -DDM_PARALLEL -DMAX_HISTORY=25 -DNMM_CORE=0 -c rsl_bcast.c

?可能是缺少环境变量是罪魁祸首。

另外,命令中那些多余的空格是什么?您可以尝试运行uniname -bcp Makefile 以查看其中是否有任何非[ \t\n] 字符可能会干扰命令行?

【讨论】:

    【解决方案2】:

    出于存档目的,解决方案是添加“-cc=icc”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 2017-12-06
      • 2017-10-06
      相关资源
      最近更新 更多