我正在尝试使用D编程语言的MPI。 D完全支持C ABI,可以链接并调用任何C代码。我已经完成了显而易见的事情,并将MPI标题翻译为D.然后我将a test program from Wikipedia翻译为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
的命令。但是,我也意识到我做错了头文件翻译。下一个问题:How do to it right.
答案 0 :(得分:2)
mpicc是不同脚本甚至程序的通用名称。
其中一些选项包含-echo
,-show
,-compile-info
,-link-info
或-showme
或环境选项,以显示实际调用的内容。
尝试使用
检查实际内容 file -k `which mpicc`
如果是脚本,可以用sh,bash,perl,python编写。您可以轻松查看它并找到正确的选项。 如果是程序,请尝试运行
strings `which mpicc`
有时strings
可以提取控制脚本工作的选项名称和/或环境变量。
此外,大多数mpicc检查CC env变量以获取编译器的名称。您可以编写一个脚本或程序,只打印其参数并将CC env设置为此程序。