dsi*_*cha 10 parallel-processing linker d mpi mpiexec
我正在尝试使用D编程语言的MPI.D完全支持C ABI,可以链接并调用任何C代码.我已经完成了显而易见的事情并将MPI标题翻译为D.然后我将测试程序从维基百科翻译成D.我使用以下命令编译它:
dmd test.d -L-lmpistubs
它在我刚运行时起作用./test,并打印:
0: We have 1 processors
但是,当我跑步时mpiexec -n 8 test,它什么都不打印.我的理解是MPI可执行文件需要一堆奇怪的链接选项,这就是mpicc存在自动化过程的工具的原因.但是,如果我在D中尝试使用MPI,这对我没有帮助.我认为这是因为我没有使用正确的链接器选项.有人可以告诉我mpicc,我可以做什么以及如何让DMD做同样的事情?
编辑:我找到了答案mpicc -showme.这显示了mpicc转发的命令gcc.但是,我也意识到我做错了头文件翻译.下一个问题: 如何做对.
mpicc 是不同脚本甚至程序的通用名称。其中一些有诸如-echo、-show、-compile-info、-link-info或-showme环境选项之类的选项来显示实际调用的内容。
尝试检查它实际上是什么
file -k `which mpicc`
Run Code Online (Sandbox Code Playgroud)
如果是脚本,可以用sh、bash、perl、python编写。您可以轻松查看它并找到正确的选项。如果是程序,尝试运行
strings `which mpicc`
Run Code Online (Sandbox Code Playgroud)
有时strings可以提取控制脚本工作的选项名称和/或环境变量。
另外,大多数 mpicc 检查 CC 环境变量来获取编译器的名称。您可以编写一个脚本或程序,仅打印其参数并将 CC env 设置为此程序。