J'essaie d'utiliser MPI avec le langage de programmation D. D prend entièrement en charge le C ABI et peut lier et appeler n'importe quel code C. Je l'ai fait les choses évidentes et traduit l'en-tête de MPI à D. Je puis traduis a test program from Wikipedia à D. Je l'ai compilé avec la commande suivante:Options MPI et D: Linker
dmd test.d -L-lmpistubs
Il fonctionne quand je viens de lancer ./test
et impressions:
0: We have 1 processors
Cependant, quand je lance avec mpiexec -n 8 test
, il imprime rien. Ma compréhension est que les exécutables MPI nécessitent un tas d'options de liaison étranges, ce qui explique pourquoi des outils tels que mpicc
existent pour automatiser le processus. Cependant, cela ne m'aide pas si j'essaie d'utiliser MPI dans D. Je suppose que c'est parce que je n'utilise pas les bonnes options de l'éditeur de liens. Quelqu'un peut-il me dire ce que fait mpicc
et comment je peux faire DMD faire la même chose? Editer: J'ai trouvé la réponse en utilisant mpicc -showme
. Cela montre ce qui commande mpicc
à gcc
. Cependant, j'ai également réalisé que j'avais mal fait la traduction du fichier d'en-tête. Question suivante: How do to it right.
avez-vous utilisé extern (C) lors de la traduction? –
avez-vous essayé d'exécuter 'strace -f mpicc test.c' ou quelque chose comme ça, pour chercher les options de l'éditeur de liens? Je suppose qu'il appelle 'ld' ou quelque chose comme un processus enfant. – gmfawcett