Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: [OMPI users] problem with MPI_Iexscan
From: Siegmar Gross (Siegmar.Gross_at_[hidden])
Date: 2013-07-08 13:27:10


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