Я пытаюсь использовать MPI с языком программирования D. D полностью поддерживает C ABI и может связываться с любым кодом C и вызывать его. Я сделал очевидные вещи и перевел заголовок MPI на D. Затем я перевел тестовую программу из Википедия в D. Я скомпилировал ее с помощью следующей команды:
dmd test.d -L-lmpistubs
Это работает, когда я просто запускаю ./test
и печатаю:
0: We have 1 processors
Однако, когда я запускаю mpiexec -n 8 test
, он ничего не печатает. Насколько я понимаю, для исполняемых файлов MPI требуется множество странных параметров компоновки, поэтому для автоматизации процесса существуют такие инструменты, как mpicc
. Однако это не помогает мне, если я пытаюсь использовать MPI в D. Я предполагаю, что это потому, что я не использую правильные параметры компоновщика. Может кто-нибудь сказать мне, что делает mpicc
и как я могу заставить DMD делать то же самое?
Изменить: я нашел ответ, используя mpicc -showme
. Это показывает, какие команды mpicc
пересылаются gcc
. Однако я также понял, что неправильно перевел заголовочный файл. Следующий вопрос: Как это сделать правильно.
strace -f mpicc test.c
или что-то в этом роде, чтобы найти параметры компоновщика? Я предполагаю, что он вызываетld
или что-то вроде дочернего процесса. - person gmfawcett   schedule 04.08.2011