UMBC logo
UMBC High Performance Computing Facility
Please note that this page is under construction. We are documenting the 240-node cluster maya that will be available after Summer 2014. Currently, the 84-node cluster tara still operates independently, until it becomes part of maya at the end of Summer 2014. Please see the 2013 Resources Pages under the Resources tab for tara information.
How to run C++ programs on maya

Introduction

Now we'll see how to run a C++ program on the cluster. Before proceeding, make sure you've read the How To Run tutorial first.

Serial Example

Let's try to compile this simple C++ program:
#include <iostream>

using namespace std;

int main(int argc, char** argv)
{
    cout << "Hello World!" << endl;
    return 0;
}


Download: ../code/hello_serial-cpp/hello-serial.cpp
We can compile with GCC's C++ compiler.
[araim1@maya-usr1 hello_serial-cpp]$ g++ hello-serial.cpp -o hello-serial
[araim1@maya-usr1 hello_serial-cpp]$
[araim1@maya-usr1 hello_serial-cpp]$ ./hello-serial
Hello World!
[araim1@maya-usr1 hello_serial-cpp]$
We can also compile the program with the PGI C++ compiler.
[araim1@maya-usr1 hello_serial-cpp]$ module load pgi
[araim1@maya-usr1 hello_serial-cpp]$ pgc++ hello-serial.cpp -o hello-serial
[araim1@maya-usr1 hello_serial-cpp]$ ./hello-serial
Hello World!
[araim1@maya-usr1 hello_serial-cpp]$
Or we can use the Intel C++ compiler.
[araim1@maya-usr1 hello_serial-cpp]$ module load intel/2013_sp1
[araim1@maya-usr1 hello_serial-cpp]$ icpc hello-serial.cpp -o hello-serial
[araim1@maya-usr1 hello_serial-cpp]$ ./hello-serial
Hello World!
[araim1@maya-usr1 hello_serial-cpp]

Parallel Example

Now we'll try to run a slightly more complicated MPI C++ program
#include <iostream>
#include <mpi.h>

using namespace std;

int main(int argc, char* argv[])
{
    MPI::Init(argc, argv);

    int id = MPI::COMM_WORLD.Get_rank();
    int np = MPI::COMM_WORLD.Get_size();
    char processor_name[MPI_MAX_PROCESSOR_NAME];
    int len;

    MPI::Get_processor_name(processor_name, len);

    cout << "Hello world from process " << id
         << " out of " << np
         << ", processor name " << processor_name
         << endl;

    MPI::Finalize();
    return 0;
}


Download: ../code/hello_parallel-cpp/hello_parallel.cpp
The program can be compiled with the MPI C++ compiliation command:
[araim1@maya-usr1 hello_parallel-cpp]$ mpicxx hello_parallel.cpp -o hello_parallel
[araim1@maya-usr1 hello_parallel-cpp]$
Running the hello_parallel program is now exactly the same as running a C MPI program. For more information, see How to run C programs.