2011-08-04 3 views
10

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을 사용하여 답변을 찾았습니다. 어떤 명령 mpiccgcc으로 전달되는지 보여줍니다. 그러나, 나는 또한 내가 헤더 파일 번역을 잘못했다는 것을 깨달았다. 다음 질문 : How do to it right.

+0

번역 할 때 extern (C)을 사용 했습니까? –

+2

링커 옵션을 찾기 위해'strace -f mpicc test.c' 같은 것을 실행 해 보셨습니까? 나는 자식 프로세스로서'ld' 또는 무엇인가를 호출한다고 가정한다. – gmfawcett

답변

2

mpicc는 다른 스크립트 및 프로그램의 일반적인 이름입니다. 그들 중 일부는 -echo, -show, -compile-info, -link-info 또는 -showme과 같은 옵션 또는 실제로 호출되는 것을 표시하는 환경 옵션이 있습니다.

는 스크립트가 쉬, 배쉬, 펄, 파이썬으로 작성 될 수있다 인 경우

file -k `which mpicc` 

에 실제로 무엇인지 확인하십시오. 당신은 그것을 쉽게보고 올바른 옵션을 찾을 수 있습니다. 그것이 프로그램 인 경우 ,

strings `which mpicc` 

때때로 strings 옵션 이름 및/또는 스크립트의 작업을 제어하는 ​​환경 변수를 추출 할 수 실행 해보십시오.

또한 mpicc 대부분은 컴파일러의 이름을 얻기 위해 CC env 변수를 검사합니다. 스크립트 나 프로그램을 작성하여 인수를 인쇄하고 CC env를이 프로그램에 설정할 수 있습니다.