Your fortran call to 'mpi_bcast' needs a status parameter at the end of
the argument list.  Also, I don't think 'MPI_INT' is correct for
fortran, it should be 'MPI_INTEGER'.  With these changes the program
works OK.

T. Rosmond

On Fri, 2010-05-21 at 11:40 +0200, Pankatz, Klaus wrote:
> Hi folks,
> 
> openMPI 1.4.1 seems to have another problem with my machine, or something on 
> it. 
> 
> This little program here (compiled with mpif90) startet with mpiexec -np 4 
> a.out produces the following output:
> Suriprisingly the same thing written in C-Code (compiled with mpiCC) works 
> without a problem.
> May it be a interference with other MPI-distributions although I think I have 
> deleted all?
> 
> Note: The error occurs also with my climate model. The error is nearly the 
> same, only with MPI_ERR_TYPE: invalid root.
> I've compiled openMPI not as root root, but in my home-directory.
> 
> Thanks for your advice, 
> Klaus
>  
> My machine:
> > OpenMPI-version 1.4.1 compiled with Lahey Fortran 95 (lf95).
> > OpenMPI was compiled "out of the box" only changing to the Lahey compiler 
> > with a setenv $FC lf95
> >
> > The System: Linux marvin 2.6.27.6-1 #1 SMP Sat Nov 15 20:19:04 CET 2008 
> > x86_64 GNU/Linux
> >
> > Compiler: Lahey/Fujitsu Linux64 Fortran Compiler Release L8.10a
> 
> ***************************************
> Output:
> [marvin:21997] *** An error occurred in MPI_Bcast
> [marvin:21997] *** on communicator MPI_COMM_WORLD
> [marvin:21997] *** MPI_ERR_TYPE: invalid datatype
> [marvin:21997] *** MPI_ERRORS_ARE_FATAL (your MPI job will now abort)
> Process 1 : k= 10 before
> --------------------------------------------------------------------------
> mpiexec has exited due to process rank 1 with PID 21997 on
> node marvin exiting without calling "finalize". This may
> have caused other processes in the application to be
> terminated by signals sent by mpiexec (as reported here).
> --------------------------------------------------------------------------
> [marvin:21993] 3 more processes have sent help message help-mpi-errors.txt / 
> mpi_errors_are_fatal
> [marvin:21993] Set MCA parameter "orte_base_help_aggregate" to 0 to see all 
> help / error messages
> Process 3 : k= 10 before
> ************************************************************
> Program Fortran90:
>   include 'mpif.h'
> 
>   integer k, rank, size, ierror, tag, p
> 
> 
>   call MPI_INIT(ierror)
>   call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror)
>   call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror)
>   if (rank == 0) then 
>      k = 20
>   else 
>      k = 10
>   end if
>   do p= 0,size,1
>      
>      if (rank == p) then
>         print*, 'Process', p,': k=', k,  'before'
>      
>      end if
>      
>   enddo 
>   call MPI_Bcast(k, 1, MPI_INT,0,MPI_COMM_WORLD)
>   do p =0,size,1
>      if (rank == p) then
>         print*, 'Process', p, ': k=', k, 'after'
>   end if   
>   enddo
>   call MPI_Finalize(ierror)
>    
>   end  
> ********************************************************
> Program C-Code:
> 
> #include <mpi.h>
> #include <stdio.h>
> int main (int argc, char *argv[])
>         {
>         int k,id,p,size;
>         MPI_Init(&argc,&argv);
>         MPI_Comm_rank(MPI_COMM_WORLD, &id);
>         MPI_Comm_size(MPI_COMM_WORLD, &size);
>         if(id == 0)
>                 k = 20;
>         else
>                 k = 10;
>         for(p=0; p<size; p++){
>                 if(id == p)
>                         printf("Process %d: k= %d before\n",id,k);
>         }
>         //note MPI_Bcast must be put where all other processes
>         //can see it.
>         MPI_Bcast(&k,1,MPI_INT,0,MPI_COMM_WORLD);
>         for(p=0; p<size; p++){
>                 if(id == p)
>                         printf("Process %d: k= %d after\n",id,k);
>         }
>         MPI_Finalize();
>       return 0 ;
>       }
> ***************************************************************
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users

Reply via email to