CMake Cookbook
上QQ阅读APP看书,第一时间看更新

Getting ready

The example code (hello-mpi.cpp, downloaded from http://www.mpitutorial.com), which we will compile in this recipe, will initialize the MPI library, have every process print its name, and eventually finalize the library:

#include <iostream>

#include <mpi.h>

int main(int argc, char **argv) {
// Initialize the MPI environment. The two arguments to MPI Init are not
// currently used by MPI implementations, but are there in case future
// implementations might need the arguments.
MPI_Init(NULL, NULL);

// Get the number of processes
int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size);

// Get the rank of the process
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);

// Get the name of the processor
char processor_name[MPI_MAX_PROCESSOR_NAME];
int name_len;
MPI_Get_processor_name(processor_name, &name_len);

// Print off a hello world message
std::cout << "Hello world from processor " << processor_name << ", rank "
<< world_rank << " out of " << world_size << " processors" << std::endl;

// Finalize the MPI environment. No more MPI calls can be made after this
MPI_Finalize();
}