2011-08-04 11 views
10

Estoy tratando de usar MPI con el lenguaje de programación D. D es totalmente compatible con C ABI y puede enlazar y llamar a cualquier código C. He hecho las cosas obvias y traducido la cabecera de MPI a continuación, D. traduje a test program from Wikipedia a D. I recopilados con el siguiente comando:MPI y D: Opciones del vinculador

dmd test.d -L-lmpistubs

funciona cuando acabo de correr ./test, y las impresiones:

0: We have 1 processors

Sin embargo, cuando corro con mpiexec -n 8 test, se imprime nada. Tengo entendido que los ejecutables de MPI requieren un montón de opciones de enlace extrañas, por lo que existen herramientas como mpicc para automatizar el proceso. Sin embargo, esto no me ayuda si estoy tratando de usar MPI en D. Supongo que es porque no estoy usando las opciones correctas del enlazador. ¿Puede alguien decirme qué hace mpicc y cómo puedo hacer que DMD haga lo mismo?

Editar: He encontrado la respuesta usando mpicc -showme. Esto muestra qué comandos mpicc reenvía a gcc. Sin embargo, también me di cuenta de que hice mal la traducción del archivo de encabezado. Siguiente pregunta: How do to it right.

+0

usaste extern (C) cuando estabas traduciendo? –

+2

¿Ha intentado ejecutar 'strace -f mpicc test.c' o algo así, para buscar las opciones del enlazador? Supongo que está llamando 'ld' o algo así como un proceso secundario. – gmfawcett

Respuesta

2

mpicc es el nombre común de diferentes scripts e incluso programas. Algunos de ellos tienen opciones como -echo, -show, -compile-info, -link-info o -showme o la opción de entorno para mostrar lo que realmente se llama.

intenta comprobar qué es lo que realmente con

file -k `which mpicc` 

Si se trata de la escritura, se puede escribir en sh, bash, Perl, Python. Puedes verlo fácilmente y encontrar la opción correcta. Si se trata de un programa, intente ejecutar

strings `which mpicc` 

veces strings puede extraer nombres de opciones y/o variables de entorno que controla el trabajo de guión.

Además, la mayoría de mpicc comprueba la variable de entorno CC para obtener el nombre del compilador. Puede escribir un script o un programa que simplemente imprima sus argumentos y establezca CC env en este programa.