Building a Ubuntu Based High Performance Computing Cluster

Posted: September 10, 2014 in Technology
Tags: , , ,

Recently I tried to build a cluster out of my Laptop and Desktop using Ubuntu. Following is the step by step guideline on how to do same.

Configuration:
My PC is running Ubuntu 14.04 i386 and My Laptop is running Ubuntu x86_64 version. So yes, you can build a cluster successfully out of two different systems.
Both the systems should be on the same subnet.
In this case, IP address of my Laptop : 192.168.1.102/24
IP of my PC : 192.168.1.103/24

password-less ssh login for both the systems
Followed the tutorial from
http://www.tecmint.com/ssh-passw…

apt-get install following packages on both the systems:
libopenmpi-dev
openmpi-bin
mpich2

and other basic developer tools such as gcc etc. which we normally need for development.
In my case openmpi libraries got installed to
/usr/lib/openmpi/lib/
So I added the following to my .bashrc file:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/openmpi/lib/

Now your system is ready.
Lets test it now.
Open a editor of your choice (I prefer vim) and type the following program:
#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
int main ( int argc, char **argv )
{

int rank, size;
MPI_Init ( &argc, &argv );
MPI_Comm_rank ( MPI_COMM_WORLD, &rank );
MPI_Comm_size ( MPI_COMM_WORLD, &size );
printf ( “Hi, I am %d of %d\n”, rank, size );
system ( “hostname” );
MPI_Finalize ();
exit ( EXIT_SUCCESS );
}

Save the program as hello.c in your home directory.
Now compile the above program as
mpicc -o hello hello.c

mpicc is nothing but a fancy wrapper of gcc.
repeat the above steps for another system also.

Create a file named hosts.txt (it can be any name) on either of the machine with the following contents.
192.168.1.102
192.168.1.103

You can replace above ip addresses with the ones you have for your nodes.
Now lets run it as follows:
mpirun -np 4 -hostfile hosts.txt ~/hello

You will see 4 outputs most probably two from either of the systems.
Hi, I am 0 of 4
jkapil-desktop
Hi, I am 1 of 4
jkapil-laptop
Hi, I am 2 of 4
jkapil-desktop
Hi, I am 3 of 4
jkapil-laptop

The order may get shuffled depending on the scheduling of the processes on both systems and which system return the output first.
But yes, it did not serve my purpose as I will have to search for now MPI enabled equivalents of the application I am using but yes, its a start.
Welcome to the world of Supercomputing.

Here is a link to Quora Post where I posted this in original.

Advertisements
Comments
  1. Brian says:

    The same thing was explained just 1 year back here:
    http://aciss-computing.uoregon.edu/2013/09/05/how-to-parallel-programming/

    Welcome to the modern world! 😉

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s