Dear All, Installed openmpi 1.10.0 and gcc-5.2 using Fink (http://www.finkproject.org) but nothing is changed with my code.
Regarding the MPI_Finalize error in my previous mail, it should be my fault. I had removed all mpi stuff in /usr/local/ manually and the openmpi-1.10.0 had been installed then the error message didn’t appear now. Maybe some old version of openmpi stuff still remained there. Anyway, I found the reason of my problem. The code is : void Block::MPISendEqualInterChangeData( DIRECTION dir, int rank, int id ) { GetEqualInterChangeData( dir, cf[0] ); int N = GetNumGrid(); int nb = 6*N*N*1; nb = 1010; // float *buf = new float[ nb ]; float *buf = (float *)malloc( sizeof(float)*nb); for( int i = 0; i < nb; i++ ) buf[i] = 0.0; MPI_Request req; MPI_Status status; int tag = 100 * id + (int)dir; MPI_Isend( buf, nb, MPI_REAL4, rank, tag, MPI_COMM_WORLD, &req ); MPI_Wait( &req, &status ); // delete [] buf; free( buf ); } This works. If the “nb” value changes to more than “1010”, MPI_Wait will stall. This means the upper limit of MPI_Isend would be 4 x 1010 = 4040 bytes. If this is true, is there any way to increase this?. I guess this should be wrong and there should be something wrong with my system. Any idea and suggestions are really appreciated. Thank you. 2015/11/03 8:05、Jeff Squyres (jsquyres) <jsquy...@cisco.com> のメール: > On Oct 29, 2015, at 10:24 PM, ABE Hiroshi <hab...@gmail.com> wrote: >> >> Regarding my code I mentioned in my original mail, the behaviour is very >> weird. MPI_Isend is called from the different named function, it works. >> And I wrote a sample program to try to reproduce my problem but it works >> fine, except the problem of MPI_Finalize. >> >> So I decided to make gcc-5.2 and make openmpi on it, which seems to be a >> recommendation of the FINK project. > > Ok. Per the prior mail, if you can make a small reproducer, that would be > most helpful in tracking down the issue. > > Thanks! ABE Hiroshi from Tokorozawa, JAPAN