Hi,

today I installed openmpi-1.9a1r28730 and tried to test MPI_Iexscan()
on my machine (Solaris 10 sparc, Sun C 5.12). Unfortunately my program
breaks.

tyr xxx 105 mpicc iexscan.c 
tyr xxx 106 mpiexec -np 2 iexscan
[tyr:21094] *** An error occurred in MPI_Iexscan
[tyr:21094] *** reported by process [4097966081,0]
[tyr:21094] *** on communicator MPI_COMM_WORLD
[tyr:21094] *** MPI_ERR_INTERN: internal error
[tyr:21094] *** MPI_ERRORS_ARE_FATAL (processes in this communicator
  will now abort,
[tyr:21094] ***    and potentially your MPI job)
[tyr.informatik.hs-fulda.de:21092] 1 more process has sent help
  message help-mpi-errors.txt / mpi_errors_are_fatal
[tyr.informatik.hs-fulda.de:21092] Set MCA parameter
  "orte_base_help_aggregate" to 0 to see all help / error messages
tyr xxx 107 
tyr xxx 107 ompi_info |grep "MPI: "
                Open MPI: 1.9a1r28730
tyr xxx 108 


That's the program I used for my test.

#include <stdio.h>
#include "mpi.h"

#define MAXLEN 10000

int main(int argc, char *argv[])
{
   int out[MAXLEN], in[MAXLEN], i, j, k;
   int myself, tasks;
   MPI_Request request;

   MPI_Init(&argc, &argv);
   MPI_Comm_rank(MPI_COMM_WORLD, &myself);
   MPI_Comm_size(MPI_COMM_WORLD, &tasks);

   for(j = 1; j <= MAXLEN; j *= 10) {
      for(i = 0; i < j; i++) {
        out[i] = i;
      }
      MPI_Iexscan(out, in, j, MPI_INT, MPI_SUM, MPI_COMM_WORLD, &request);
      MPI_Wait(&request,  MPI_STATUS_IGNORE);

      if (myself != 0)
        for(k = 0; k < j; k++) {
          if(in[k] != k * myself) {  
            fprintf (stderr, "bad answer (%d) at index %d of %d "
                     "(should be %d)\n", in[k], k, j, k*(myself));
            break; 
          }
        }
   }
   MPI_Barrier(MPI_COMM_WORLD);
   MPI_Finalize();
   return 0;
}


Do you have any ideas what's going wrong? Is the internal MPI error
a real internal error or is something wrong with my program, which
results in an internal error? Thank you very much for any help in
advance.


Kind regards

Siegmar

Reply via email to