Building HPCC

This file documents the use of the x86 Open64 Compiler Suite.
© 2009 Advanced Micro Devices, Inc.

HPCC Info

HPCC stands for High Performance Computing Challenge, and is a benchmark incorporating Linpack and a number of other benchmarks to provide a more complete test of supercomputers than the standalone Linpack test currently used for the Top-500 list. You can find out more at the HPC Challenge web site. To build HPCC, you will need to download the source, configure it to use the open64 compilers, and then build it. HPCC uses a BLAS library for a few of its benchmarks; we recommend the free Goto BLAS library appropriate for your architecture.

Download: HPCC (version 1.0.0).

You will also need a BLAS library. We recommend the Goto BLAS library, see building Goto BLAS.

Then take note of the location of libgoto_opteron-r1.0.0.so. Where 'opteron' will be replaced by your architecture if you are using another architecture.

Building HPCC

After downloading, unpack the source code:

     >tar -xvzf hpcc-1.3.1.tar.gz

You will now have a top-level directory named hpcc-1.3.1. Configure the make system to build with the PathScale compiler. To do this, download either the Make.Linux_Open64_Opteron_GOTO, or the Make.Linux_Open64_em64t_GOTO file (as appropriate for your cluster) and insert into the hpl directory.

If you want to customize the compilation flags used, this is the file to modify. You will need to edit it to set the variable LAdir to point to the correct location for your GOTO BLAS library. If you chose to use a different BLAS library, that is also the location to set it.

One should also have installed mpich2 in your home mpich2 directory, as in $HOME/mpich2.

At this point, you may want skip to the OPTIONAL STREAM performance boost section, but otherwise you are ready to build. Building is achieved by the command:

     >make arch=Linux_Open64_Opteron_GOTO

The final step before running is to customize the input file hpccinf.txt for the number of processes you will be running on, and how much memory they have. P * Q must be equal to your np. Tuning information can be found at:

     http://icl.cs.utk.edu/hpcc/faq/index.html

As a start, we note that you can calculate memory usage per process with the calculation:

     mem/process = (N^2 * 8 bytes) / num processes

The FAQ referenced above suggests aiming for about 80% of your total memory per process.

OPTIONAL STREAM performance boost

The version of STREAM in HPCC was reworked in such a way as to give compilers difficulty. It has become common for people wanting to show the very best STREAM performance to modify the make system to allow STREAM to be compiled with additional flags that are not applied to the rest of HPCC. This is completely permitted by the rules for a base submission as found at:

     http://icl.cs.utk.edu/hpcc/overview/index.html

The flags we recommend for this are defined in the files Make.Linux_Open64_Opteron_GOTO and Make.Linux_Open64_em64t_GOTO as STREAMCCFLAGS. However, in order for them to actually be picked up and used, the attached Makefile.hpcc.patch needs to be applied to hpl/lib/arch/build/Makefile.hpcc via this command:

     # from top-level directory for hpcc (hpcc-1.0.0 for current version)
     # (assuming we previously put Makefile.hpcc.patch in this directory)
     >patch hpl/lib/arch/build/Makefile.hpcc Makefile.hpcc.patch

Known Limitations

None known.