MPI를 D 프로그래밍 언어와 함께 사용하려고합니다. D는 C ABI를 완전히 지원하며 모든 C 코드와 연결하고 호출 할 수 있습니다. 나는 명백한 물건을 수행하고 그때 D. I에 a test program from Wikipedia 다음 명령으로 컴파일 번역 D.에 MPI 헤더를 번역 한 : 난 그냥 ./test
을 실행할 때MPI 및 D : 링커 옵션
dmd test.d -L-lmpistubs
그것은 작동하고, 인쇄 : 내가 mpiexec -n 8 test
으로 실행할 때
0: We have 1 processors
그러나, 그것은 아무것도 출력하지 않습니다. 필자는 MPI 실행 파일에 이상한 연결 옵션이 필요하다는 것을 알고 있습니다. 따라서 프로세스를 자동화하기 위해 mpicc
과 같은 도구가 존재합니다. 그러나, MPI를 D에서 사용하려고한다면이 점이 도움이되지 않습니다. 올바른 링커 옵션을 사용하지 않아서라고 생각합니다. 누군가 mpicc
이 무엇을하는지 말해 주실 수 있습니까? 어떻게 DMD를 만들 수 있습니까?
편집 : 답변 : mpicc -showme
을 사용하여 답변을 찾았습니다. 어떤 명령 mpicc
이 gcc
으로 전달되는지 보여줍니다. 그러나, 나는 또한 내가 헤더 파일 번역을 잘못했다는 것을 깨달았다. 다음 질문 : How do to it right.
번역 할 때 extern (C)을 사용 했습니까? –
링커 옵션을 찾기 위해'strace -f mpicc test.c' 같은 것을 실행 해 보셨습니까? 나는 자식 프로세스로서'ld' 또는 무엇인가를 호출한다고 가정한다. – gmfawcett