MPI和D:链接器选项

时间:2011-08-04 16:01:15

标签: linker parallel-processing d mpi mpiexec

我正在尝试使用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.

1 个答案:

答案 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设置为此程序。