Próbuję użyć MPI z językiem programowania D. D w pełni obsługuje C ABI i może łączyć się z dowolnym kodem C. Zrobiłem oczywistej rzeczy i tłumaczone nagłówek MPI do D. Potem tłumaczone a test program from Wikipedia D. Skompilowałem go za pomocą następującego polecenia:MPI i D: Opcje Linkera
dmd test.d -L-lmpistubs
to działa, kiedy po prostu uruchomić ./test
i drukuje:
0: We have 1 processors
jednak kiedy biegnę z mpiexec -n 8 test
, nic nie drukuje. Rozumiem, że pliki wykonywalne MPI wymagają kilku dziwnych opcji łączenia, dlatego narzędzia takie jak mpicc
istnieją, aby zautomatyzować proces. Jednak to nie pomoże mi, jeśli próbuję użyć MPI w D. Zakładam, że to dlatego, że nie używam właściwych opcji linkera. Czy ktoś może mi powiedzieć, co robi mpicc
i jak mogę zrobić DMD zrobić to samo?
Edytuj: Znalazłem odpowiedź, używając mpicc -showme
. To pokazuje, jakie komendy są przekazywane do mpicc
i przekazywane do . Jednak zdałem sobie również sprawę, że źle zrobiłem tłumaczenie pliku nagłówkowego. Następne pytanie: How do to it right.
użyłeś zewnętrznego (C) podczas tłumaczenia? –
czy próbowałeś uruchomić 'strace -f mpicc test.c' czy coś w tym stylu, aby znaleźć opcje linkera? Zakładam, że nazywa się 'ld' lub coś w rodzaju procesu potomnego. – gmfawcett