【发布时间】:2011-10-20 03:45:32
【问题描述】:
我正在尝试将 MPI 与 D 编程语言一起使用。 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.
【问题讨论】:
-
你翻译的时候有没有用extern(C)?
-
您是否尝试过运行
strace -f mpicc test.c或类似的东西来寻找链接器选项?我假设它正在调用ld或作为子进程的东西。
标签: linker parallel-processing d mpi mpiexec