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 для этой программы.

Другие вопросы по тегам