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`
Если это скрипт, он может быть написан на sh, bash, perl, python. Вы можете легко просмотреть его и найти правильный вариант. Если это программа, попробуйте запустить
strings `which mpicc`
Иногда strings
может извлекать имена опций и / или переменные окружения, которые контролируют работу скрипта.
Кроме того, большая часть mpicc проверяет переменную CC env, чтобы получить имя компилятора. Вы можете написать скрипт или программу, которая будет просто печатать свои аргументы и устанавливать CC env для этой программы.