In you code you call MPI_Init_thread
with MPI_THREAD_MULTIPLE
, but call returns something not equal to MPI_THREAD_MULTIPLE:
MPI_Init_thread(&argc,&argv,MPI_THREAD_MULTIPLE,&provided);
if(provided!=MPI_THREAD_MULTIPLE)
This means that you have MPI library installed which don't support MPI_THREAD_MULTIPLE. You need to rebuild or reinstall you MPI library with version, configured for MPI_THREAD_MULTIPLE support. In MPICH2, for example, there were only 2 data transport layers with support of MPI_THREAD_MULTIPLE: nemesis and sock. Don't know about MVAPICH, but check its configure parameters and configure output.