Bonjour Shiqing, Shiqing Fan wrote: > Dear François, > > Thanks a lot for your report, it's really a great help for us. :-)
No problem. Your software helps me too, so as soon as you have fixes and new builds please tell me, so that I can try again. > For the issues: > 1) When you got "Conditional jump" errors, normally that means some > uninitialized(or undefined) values were used. The parameters that passed > into PMPI_Init_thread might contain uninitialized values, which could > cause errors (even seg-fault) later. I need some time to run your > application to check where these values exactly are. I'll post another > email when it's done. OK. For this specific problem, though, you do not need Scotch. The involved lines are just below : #define SCOTCH_PTHREAD int main ( int argc, char * argv[]) { ... #ifdef SCOTCH_PTHREAD int thrdlvlreqval; int thrdlvlproval; #endif /* SCOTCH_PTHREAD */ #ifdef SCOTCH_PTHREAD thrdlvlreqval = MPI_THREAD_MULTIPLE; if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (1)"); if (thrdlvlreqval > thrdlvlproval) errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD"); #else /* SCOTCH_PTHREAD */ if (MPI_Init (&argc, &argv) != MPI_SUCCESS) errorPrint ("main: Cannot initialize (2)"); #endif /* SCOTCH_PTHREAD */ ...and the line I used to run it was in my previous post. I don't see the problem in my coding. What did I do wrong ? If you want a Scotch tarball to play with, tell me : the release on the forge is currenlty a 5.1.2, and I am close to releasing a 5.1.3 (I will fix my double-Isend bug before, see below), so I can provide you with a 5.1.3beta along with my test data. [...] > 4) Well, this sounds reasonable, but according to the MPI-1 standard > (see page 40 for non-blocking send/recv, a more detailed explanation in > page 30): > > "A nonblocking send call indicates that the system may start copying > data out of the send buffer. The sender should */not access*/ any part > of the send buffer after a nonblocking send operation is called, until > the send completes." > > So before calling MPI_Wait to complete an isend operation, any access to > the send buffer is illegal. It might be a little strict, but we have to > do what the standard says. Agreed. I will rewrite my piece of code accordingly. I told you there might be bugs in my code. ;-) Best regards, f.p.