Hi,
The code fails in tcgi_alt_pbegin which is the routine that initializes MPI. You will find that routine in src/tools/ga-5-1/armci/tcgmsg/tcgmsg-mpi/misc.c. Essentially this routine contains plain and straightforward MPI calls. It checks whether MPI is initialized, if not it initializes MPI, and it figures out how many processors you have and what the rank of the current processor is. I cannot see anything wrong with that. So the only tricky point is in argc and argv. The C-code must have these command line arguments, but a normal Fortran program does not provide those. Therefore a special function needs to be called to pick these command line arguments up. My guess is that something went wrong there and that argc or argv are actually invalud.
To figure this out you can stick the following code in tcgi_alt_pbegin:
int i;
for (i=0; i<*argc; i++) {
printf("argument %d = %s\n",i,*argv[i]);
fflush(NULL);
}
If I haven't made any typos then this should give you the command line arguments (the first argument should be the name of the executable). If the code didn't pick the command line arguments up correctly the code should seg-fault in one of the print statements. Could you give this a try please?
Huub
|