thread_support.cpp (1063B)
1 #include <iostream> 2 #include <mpi.h> 3 4 int main(int argc, char *argv[]) 5 { 6 int rank, size, version, subversion, provided; 7 MPI_Init_thread(&argc, &argv, MPI_THREAD_FUNNELED, &provided); 8 9 MPI_Get_version(&version, &subversion); 10 MPI_Comm_rank(MPI_COMM_WORLD, &rank); 11 MPI_Comm_size(MPI_COMM_WORLD, &size); 12 const bool isroot = (0 == rank); 13 if (isroot) { // only the root rank executes this code 14 std::cout << "MPI version: " << version << '.' << subversion 15 << '\n'; 16 std::cout << "Total ranks: " << size << '\n'; 17 std::cout << "Thread support: " << provided 18 << " (requested MPI_THREAD_FUNNELED)\n"; 19 std::cout << "MPI_THREAD_SINGLE: " << MPI_THREAD_SINGLE << '\n'; 20 std::cout << "MPI_THREAD_FUNNELED: " << MPI_THREAD_FUNNELED << '\n'; 21 std::cout << "MPI_THREAD_SERIALIZED: " << MPI_THREAD_SERIALIZED << '\n'; 22 std::cout << "MPI_THREAD_MULTIPLE: " << MPI_THREAD_MULTIPLE << '\n'; 23 } 24 25 MPI_Finalize(); 26 return 0; 27 }