Intel MPI Benchmark

From OnnoWiki
Revision as of 11:54, 25 July 2011 by Onnowpurbo (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Intel MPI Benchmark From Rocks Clusters

Intel MPI Benchmark Contents [hide]

   * 1 Initial steps
   * 2 Get the source:
   * 3 Build the application:
   * 4 Running IMB
   * 5 Viewing output

[edit] Initial steps

Create directory structure in the shared applications mount point:

  1. cd /share/apps
  2. mkdir benchmarks
  3. mkdir benchmarks/IMB
  4. cd benchmarks/IMB

[edit] Get the source:

IMB is available on the Intel web site: http://www.intel.com/cd/software/products/asmo-na/eng/cluster/clustertoolkit/219848.htm

Once you've downloaded the application, copy it to your master node and unpack it.

  1. cd /share/apps/benchmarks/IMB
  2. tar -zxvf IMB_2.3.tar.gz

[edit] Build the application:

  1. cd IMB_2.3/src

IMB calls include files from the Makefile. You can uncomment/comment/add include files in the beginning of the Makefile. There are two include files below that can be used with a default installation of rocks using the compute roll, and one for use when you've added the Intel Roll.

This shows the include section at the beginning of the Makefile, with additions I've added for make_[intel,gnu,path,pgi]. The uncommented include file is the active include file.

          1. User configurable options #####
  1. include make_intel

include make_gnu

  1. include make_path
  2. include make_pgi
  3. include make_ia32
  4. include make_ia64
  5. include make_sun
  6. include make_solaris
  7. include make_dec
  8. include make_ibm_sp
  9. include make_sr2201
  10. include make_vpp
  11. include make_t3e
  12. include make_sgi
  13. include make_sx4
      1. End User configurable options ###

make_gnu

COMPILER = gnu MPICH = /opt/mpich/gnu MPI_HOME = ${MPICH} MPI_INCLUDE = $(MPI_HOME)/include LIB_PATH = LIBS = CC = ${MPI_HOME}/bin/mpicc OPTFLAGS = -O CLINKER = ${CC} LDFLAGS = CPPFLAGS =

make_intel

COMPILER = intel MPICH = /opt/mpich/intel MPI_HOME = ${MPICH} MPI_INCLUDE = $(MPI_HOME)/include LIB_PATH = LIBS = CC = ${MPI_HOME}/bin/mpicc OPTFLAGS = -O CLINKER = ${CC} LDFLAGS = CPPFLAGS =

Uncomment the include file you need and build the executable. The example below shows the IMB-MPI1 executable built with the GNU compilers:

  1. make
  2. cp IMB-MPI1-gnu ../../

[edit] Running IMB

Now we've built IMB. There are many ways to run it, I'll show how to use it with an interactive PBS session and also a PBS script.

First, running in an interactive PBS session:

Prepare an output directory to write data at the location where you want to test performance. I'll assume you have all directories on the master node, and want to write output files in the home directory.

$ su - user $ mkdir output_files

Start the Interactive session:

$ qsub -I -lnodes=[n]:ppn=[p]

$ mpiexec /share/apps/benchmarks/IMB/IMB-MPI1-gnu


Using a PBS Script:

  1. !/bin/bash
  1. PBS -N IMB
  1. PBS -e IMB.err
  1. PBS -o IMB.out
  1. PBS -m aeb
  1. PBS -M user
  1. PBS -l nodes=[n]:ppn=[p]
  1. PBS -l walltime=30:00:00

PBS_O_WORKDIR='/home/user/output_files' export PBS_O_WORKDIR

      1. ---------------------------------------
      2. BEGINNING OF EXECUTION
      3. ---------------------------------------

echo The master node of this job is `hostname` echo The working directory is `echo $PBS_O_WORKDIR` echo This job runs on the following nodes: echo `cat $PBS_NODEFILE`

      1. end of information preamble

cd $PBS_O_WORKDIR cmd="mpiexec /share/apps/benchmarks/IMB/IMB-MPI1-gnu" echo "running bounce with: $cmd in directory "`pwd` $cmd >& $PBS_O_WORKDIR/log.IMB.$PBS_JOBID

Running IMB as shown above uses the defaults and runs all tests. To learn more about running specific tests and configurable options, refer to the userguide: /share/apps/benchmarks/IMB/IMB_2.3/doc [edit] Viewing output

gnuplot may not be included by default in your distribution. Here's one way to add the package:

  1. up2date --install gnuplot

Once you have gnuplot, you can plot results, example shown:

$ gnuplot gnuplot> plot '12p1ppn.intel' u 1:3 w lp lw 2 p 2, '12p2ppn.intel' u 1:3 w ld lw 2 p2 gnuplot> set title "Intel MPI Benchmark Send/Receive & AlltoAll Tests" gnuplot> set xlabel "Number of Bytes Transferred" gnuplot> set ylabel "Time in Microseconds"

Here are examples of what you can do with plots (very simple plots)

http://www.hpcclusters.org/public/benchmarks/ExampleBenchmark.pdf

http://www.hpcclusters.org/public/benchmarks/SendRecv8Core.pdf

Referensi

Pranala Menarik