Math578 - Alexiades

              Towards Parallelism: Part 1
Parallelizing is painful... especially the first time... it takes time, so let's start preparing...

  • Start by reading about Parallel Computing and about Distributed Computing on Wikipedia.
      Our interest is on distributed memory computing via message passing, so pay more attention to those...
  • It will be done by "domain decomposition", using the MPI library.
  • Current Intel terminology on clusters-nodes-sockets-cores-...

  • Parallelization can be done and tested on your own laptop, but don't expect to see speedup...
  • After debugging/testing your code on your laptop, you will port it to a real cluster, which takes some work...
  • Got us a class account on UT's ISAAC cluster (successor to Newton cluster), see below.
      If you already have an account on ISAAC/Newton cluster, let me know.
  • Also take a look at the Guide to High Performance Computing by Shane Sawyer
  • Then take a look at the excellent, extensive tutorial from Cornell:
        Parallel Programming Concepts and High-Performance Computing
                  About MPI ( Message Passing Interface )
  • Read about MPI on wikipedia, to get an idea. We'll talk about it in class...
  • Check if your Unix/Linux system has some MPI installed.
      Try: which mpiexec it should return the path to it. If you get nothing, it may still be there somewhere...
      Try: which mpirun , Try: which mpicc
      If your Linux system has some MPI installed, fine ... BUT be aware:  
       mpicc and mpirun must come from the same MPI implementation.
    It is best to install your own openMPI (or MPICH) and put the path to it in your Makefile.

  • In any case, you can easily install your own 'openMPI', under Linux, as follows:
      1. Get the latest stable version ( v4.1.0 ?) from open-MPI.org
      2. Unpack it: gtar zxf openmpi-X.Y.Z.tar.gz
      3. cd openmpi-X.Y.Z
      4. read the INSTALL file and follow the instructions.
      Another option is to install MPICH , which is another implementation of the MPI standard.
      This also exists for MS_Win, but then you'll need MS_Win compiler... not sure if this can work out...
      best by far is to install VirtualBox and Linux (ubuntu is probably the most user-friendly).

    Note: Do NOT confuse "openMPI" (an implementation of MPI) with "OpenMP" (shared memory programming standard)!

    MPI has native bindings for Fortran and for C/C++. However, now Python is also an option with:
  • mpi4py , you can call Fortran and C code directly through wrappers
    or
  • boost module, has native python bindings built directly on the C++ mpi bindings.

  • A good, detailed, reference is this   MPI tutorial , from LLNL.
                    ISAAC: UTK's Advanced Computing Facility (ACF)
  • Connect to ISAAC portal with your NetID:   account request and ask to be added to class account: ACF-UTK0151
  • After your account is set, direct login to : ISAAC portal to ACF   UTK's Advanced Computing Facility