我正在尝试使用D编程语言与MPI进行交互。D完全支持C ABI,并且可以链接和调用任何C代码。我已经完成了一些基本工作,将MPI头文件翻译为D语言。然后,我将从维基百科复制的测试程序翻译成了D语言。我使用以下命令编译它:
dmd test.d -L-lmpistubs
当我只运行
0: We have 1 processors
但是,当我运行
编辑:我使用
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
的命令。但是,我也意识到我之前的头文件翻译是错误的。下一个问题是:如何正确地翻译头文件?
strace -f mpicc test.c
这样的命令,查找链接器选项吗?我猜它会调用ld
或一些其他子进程。 - gmfawcett