10

我正在尝试将 MPI 与 D 编程语言一起使用。D完全支持C ABI,可以链接和调用任何C代码。我已经完成了显而易见的工作并将 MPI 标头翻译为 D。然后我将一个测试程序从 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。但是,我也意识到我做的头文件翻译错误。下一个问题: 如何做到正确。

4

1 回答 1

2

mpicc 是不同脚本甚至程序的通用名称。其中一些具有选项,如, ,-echo-showor environment选项来显示实际调用的内容。-compile-info-link-info-showme

尝试检查它实际上是什么

 file -k `which mpicc`

如果是脚本,可以用sh、bash、perl、python编写。您可以轻松查看它并找到正确的选项。如果是程序,请尝试运行

 strings `which mpicc`

有时strings可以提取控制脚本工作的选项名称和/或环境变量。

此外,大多数 mpicc 检查 CC 环境变量以获取编译器的名称。您可以编写一个脚本或程序,只打印其参数并将 CC env 设置为该程序。

于 2011-08-04T18:04:45.580 回答