Hi Viswanath, I have some opportunity to work with both boost and mpi. Just wanted to mention that boost::mpi::environment calls MPI_Init internally. Your program does not work since you have declared boost::mpi::environment as a global object and then you have also called MPI_Init. Either you remove the global objects (env) or you initialize that inside main. Here is the snippet of the program : int main(int argc, char *argv[]) { mpi::environment env(argc, argv, boost::mpi::threading::multiple); mpi::communicator world; if (world.rank() ==0) { cout << "#Master: Thread support :" << env.thread_level() <<endl; } } Thanks, Hirak Balaji, Pavan balaji at anl.gov <mailto:discuss%40mpich.org?Subject=Re%3A%20%5Bmpich-discuss%5D%20Nemesis%20engine%20query%20by%20Viswanath&In-Reply-To=%3C8A837C95-3617-4F5C-9ED1-DFA6840913A5%40anl.gov%3E> Mon Aug 3 10:48:20 CDT 2015 * Previous message: [mpich-discuss] Nemesis engine query by Viswanath<http://lists.mpich.org/pipermail/discuss/2015-August/004112.html> * Next message: [mpich-discuss] question about valgrind errors I am getting<http://lists.mpich.org/pipermail/discuss/2015-August/004113.html> * Messages sorted by: [ date ]<http://lists.mpich.org/pipermail/discuss/2015-August/date.html#4114> [ thread ]<http://lists.mpich.org/pipermail/discuss/2015-August/thread.html#4114> [ subject ]<http://lists.mpich.org/pipermail/discuss/2015-August/subject.html#4114> [ author ]<http://lists.mpich.org/pipermail/discuss/2015-August/author.html#4114> ________________________________ I first tried your program after removing the boost declarations, and it worked correctly: #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<vector> #include<pthread.h> #include<mpi.h> using namespace std; #define MASTER 0 int main(int argc, char *argv[]) { int rankID, numprocessors,provided; int returnvalue = MPI_Init_thread(&argc,&argv,MPI_THREAD_MULTIPLE,&provided); printf("\n VALUE OF PROVIDED IS %d",provided); printf("\n VALUE OF MPI_THREAD_MULTIPLE IS %d",MPI_THREAD_MULTIPLE); if(provided < MPI_THREAD_MULTIPLE) { printf("\n THREAD LIBRARY DOESN'T HAVE MULTITHREADING SUPPORT:"); } MPI_Finalize(); return 0; } With respect to Boost, yes, MPICH works correctly with Boost. But it is possible that something is not setup correctly in your installation of Boost. Did you make sure you are linking with the correct MPI library? -- Pavan From: Viswanath Krishnamurthy Reply-To: "discuss at mpich.org<https://lists.mpich.org/mailman/listinfo/discuss><mailto:discuss at mpich.org<https://lists.mpich.org/mailman/listinfo/discuss>>" Date: Monday, August 3, 2015 at 8:28 AM To: "discuss at mpich.org<https://lists.mpich.org/mailman/listinfo/discuss><mailto:discuss at mpich.org<https://lists.mpich.org/mailman/listinfo/discuss>>" Subject: Re: [mpich-discuss] Nemesis engine query by Viswanath Hi, Thanks for the previous post on MPI_Init_thread. Here is the sample program which failed #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<vector> #include<pthread.h> #include<mpi.h> #include <boost/mpi/environment.hpp> #include <boost/mpi/communicator.hpp> #include <boost/serialization/vector.hpp> #include <boost/mpi.hpp> using namespace std; using namespace boost::serialization; using namespace boost::archive; namespace mpi = boost::mpi; // using mpi library under boost namespace mpi::environment env; mpi::communicator world; #define MASTER 0 // Aim of this program is to print the Rank of each process and size of number of MPI Run int main(int argc, char *argv[]) { // Declarations and prototypes int rankID, numprocessors,provided; // Any serial code goes in here // Initialize the MPI Environment over here //MPI_Init(&argc,&argv); int returnvalue = MPI_Init_thread(&argc,&argv,MPI_THREAD_MULTIPLE,&provided); printf("\n VALUE OF PROVIDED IS %d",provided); printf("\n VALUE OF MPI_THREAD_MULTIPLE IS %d",MPI_THREAD_MULTIPLE); if(provided < MPI_THREAD_MULTIPLE) { printf("\n THREAD LIBRARY DOESN'T HAVE MULTITHREADING SUPPORT:"); //exit(1); } // Terminate the MPI Environment MPI_Finalize(); } Error got: Assertion failed in file /home/viswa/libraries/mpich-3.1.4/src/include/mpiimplthreadpost.h at line 163: depth > 0 && depth < 10 internal ABORT - process 1 internal ABORT - process 0 I tried to use boost library in my MPI Code. Is MPI_Init_thread designed to work with Boost libraries?. If not, please suggest an alternative to send vectors(STL types) using MPI. MPI version - 3.1.4 CPU Info: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 2 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 44 Stepping: 2 CPU MHz: 3458.000 BogoMIPS: 6916.00 Hypervisor vendor: VMware Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 12288K NUMA node0 CPU(s): 0-7 _______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss