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