Getting ready

We will compile the following example source code (example.cpp):

#include <iostream>  #ifdef HAVE_MPI#include <mpi.h>#endifint main() {#ifdef HAVE_MPI  // initialize MPI  MPI_Init(NULL, NULL);  // query and print the rank  int rank;  MPI_Comm_rank(MPI_COMM_WORLD, &rank);  std::cout << "hello from rank " << rank << std::endl;  // initialize MPI  MPI_Finalize();#else  std::cout << "hello from a sequential binary" << std::endl;#endif /* HAVE_MPI */}

The code contains preprocessor statements (#ifdef HAVE_MPI ... #else ... #endif) so that we can compile either a sequential or a parallel executable with the same source code.

Get CMake Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.