cs205-lecture-examples

Example codes used during Harvard CS205 lectures
git clone https://git.0xfab.ch/cs205-lecture-examples.git
Log | Files | Refs | README | LICENSE

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 }