MPI и D: параметры компоновщика

Я пытаюсь использовать 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. Однако я также понял, что неправильно сделал перевод заголовка. Следующий вопрос: Как это сделать правильно.

Ответ 1

mpicc - это общее название различных скриптов и даже программ. Некоторые из них имеют опции, такие как -echo, -show, -compile-info, -link-info или -showme или параметр среды, чтобы показать, что на самом деле называется.

Попробуйте проверить, что это на самом деле с помощью

 file -k `which mpicc`

Если это script, его можно записать в sh, bash, perl, python. Вы можете легко просмотреть его и найти правильный вариант. Если это программа, попробуйте запустить

 strings `which mpicc`

Иногда strings может извлекать имена опций и/или переменные среды, которые управляют работой script.

Кроме того, большинство mpicc проверяют переменную CC env, чтобы получить имя компилятора. Вы можете написать script или программу, которая будет просто печатать свои аргументы и устанавливать CC env для этой программы.