hi, i need use open-mpi with g95 on debian linux lenny 5.0 - x86_64 i compile it with FC=g95 F77=g95 and test on my example.c file but with g95 mpirun dont use process1 just process 0. perhaps my compile option are wrong ?
i want that mpirun use process 0 and 1 both. hostname paola12 mpicc example.c mpirun -np 2 a.out C Process 0 on paola12 0 [1 3 ] 0 [1.000000 3.000000 ] C Process 0 on paola12 0 [1 3 ] 0 [1.000000 3.000000 ] with gfortran ( 4.3.2 ) + openmpi mpirun -np 2 a.out C Process 0 on paola12 C Process 1 on paola12 0 [2 9 ] 1 [2 9 ] 0 [3.000000 6.000000 ] 1 [3.000000 6.000000 example.c #include <stdlib.h> #include <stdio.h> #include <math.h> #include <mpi.h> int main(int argc, char** argv) { MPI_Init(&argc, &argv); int rank; int namelen; char processor_name[MPI_MAX_PROCESSOR_NAME]; MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Get_processor_name(processor_name, &namelen); printf("C Process %d on %s \n", rank, processor_name); MPI_Barrier(MPI_COMM_WORLD); int size = 2; int *array, *reducedValues; array = (int *) malloc((size) * sizeof (int)); reducedValues = (int *) malloc((size) * sizeof (int)); array[0] = rank+1; array[1] = 3; MPI_Allreduce(array, reducedValues, size, MPI_INTEGER, MPI_PROD, MPI_COMM_WORLD); int i; printf("%d [", rank); for (i = 0; i < size; i++) { printf("%d ", reducedValues[i]); } printf("]\n"); free(reducedValues); free(array); /* Verif triviale pour un seul entier (OK) size=1; int *array1, *reducedValues1; array1 = (int *) malloc((size) * sizeof (int)); reducedValues1 = (int *) malloc((size) * sizeof (int)); array[0] = rank+1; MPI_Allreduce(array1, reducedValues1, size, MPI_INTEGER, MPI_PROD, MPI_COMM_WORLD); printf(" C scalaire %d \n", reducedValues1[0]); free(reducedValues1); free(array1); */ /* Verif pour les doubles */ size=2; double *Darray, *DreducedValues; Darray = (double *) malloc((size) * sizeof (double)); DreducedValues = (double *) malloc((size) * sizeof (double)); Darray[0] = (rank+1)*1.0; Darray[1] = 3.0; MPI_Allreduce(Darray, DreducedValues, size, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); printf("%d [", rank); for (i = 0; i < size; i++) { printf("%f ", DreducedValues[i]); } printf("]\n"); free(DreducedValues); free(Darray); MPI_Finalize(); } greetings. nicolas cordier