Can't speak to the MPI layer, but you definitely cannot hardwire thread support to "off" for ORTE.
On Mar 10, 2011, at 10:57 AM, George Bosilca wrote: > > On Mar 10, 2011, at 11:23 , Eugene Loh wrote: > >> Any comments on this? > > Good luck? > > george. > > >> We wanted to clean up MPI_THREAD_MULTIPLE support in the trunk and port >> these changes back to 1.5.x, but it's unclear to me what our expectations >> should be about any MPI_THREAD_MULTIPLE test succeeding. How do we assess >> (test) our changes? Or, should we just hardwire thread support to be off, >> as we have done with progress threads? >> >> -------- Original Message -------- >> Subject: [OMPI devel] multi-threaded test >> Date: Tue, 08 Mar 2011 11:24:20 -0800 >> From: Eugene Loh <eugene....@oracle.com> >> To: Open MPI Developers <de...@open-mpi.org> >> >> I've been assigned CMR 2728, which is to apply some thread-support >> changes to 1.5.x. The trac ticket has amusing language about "needs >> testing". I'm not sure what that means. We rather consistently say >> that we don't promise anything with regards to true thread support. We >> specifically say certain BTLs are off limits and we say things are >> poorly tested and can be expected to break. Given all that, what does >> it mean to test thread support in OMPI? >> >> One option, specifically in the context of this CMR, is to test only >> configuration options and so on. I've done this. >> >> Another possibility is to confirm that simple run-time tests of >> multi-threaded message passing succeed. I'm having trouble with this. >> >> Attached is a simple test. It passes over sm but fails over TCP. (One >> or both of the initial messages is not received.) >> >> How high should I set my sights on this? >> >> >> #include <stdio.h> >> #include <omp.h> >> #include <mpi.h> >> #include <string.h> /* memset */ >> >> >> #define N 10000 >> int main(int argc, char **argv) { >> int np, me, buf[2][N], provided; >> >> /* init some stuff */ >> MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &provided); >> MPI_Comm_size(MPI_COMM_WORLD,&np); >> MPI_Comm_rank(MPI_COMM_WORLD,&me); >> if ( provided < MPI_THREAD_MULTIPLE ) MPI_Abort(MPI_COMM_WORLD,-1); >> >> /* initialize the buffers */ >> memset(buf[0], 0, N * sizeof(int)); >> memset(buf[1], 0, N * sizeof(int)); >> >> /* test */ >> #pragma omp parallel num_threads(2) >> { >> int id = omp_get_thread_num(); >> MPI_Status st; >> printf("%d %d in parallel region\n", me, id); fflush(stdout); >> >> /* pingpong */ >> if ( me == 0 ) { >> MPI_Send(buf[id],N,MPI_INT,1,7+id,MPI_COMM_WORLD ); printf("%d %d >> sent\n",me,id); fflush(stdout); >> MPI_Recv(buf[id],N,MPI_INT,1,7+id,MPI_COMM_WORLD,&st); printf("%d %d >> recd\n",me,id); fflush(stdout); >> } else { >> MPI_Recv(buf[id],N,MPI_INT,0,7+id,MPI_COMM_WORLD,&st); printf("%d %d >> recd\n",me,id); fflush(stdout); >> MPI_Send(buf[id],N,MPI_INT,0,7+id,MPI_COMM_WORLD ); printf("%d %d >> sent\n",me,id); fflush(stdout); >> } >> } >> >> MPI_Finalize(); >> >> return 0; >> } >> >> >> #!/bin/csh >> >> mpicc -xopenmp -m64 -O5 main.c >> >> mpirun -np 2 --mca btl self,sm ./a.out >> mpirun -np 2 --mca btl self,tcp ./a.out >> >> >> _______________________________________________ >> devel mailing list >> de...@open-mpi.org >> http://www.open-mpi.org/mailman/listinfo.cgi/devel >> _______________________________________________ >> devel mailing list >> de...@open-mpi.org >> http://www.open-mpi.org/mailman/listinfo.cgi/devel > > George Bosilca > Research Assistant Professor > Innovative Computing Laboratory > Department of Electrical Engineering and Computer Science > University of Tennessee, Knoxville > http://web.eecs.utk.edu/~bosilca/ > > > _______________________________________________ > devel mailing list > de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/devel