Installation - HipGISAXS/HipGISAXS GitHub Wiki


Supported Platforms

The following are the platforms on which HipGISAXS has been tested.
It may support other platforms as well, but has not been tested. Give it a try.

Operating Systems

  • GNU/Linux x86_64: Ubuntu, Red Hat Linux, SUSE Linux, Cray Linux Environment (XT5, XE5, XK7, XE6, XC30).
  • Darwin x86_64: Mac OS X (Lion, Mountain Lion, Mavericks).

You could try HipGISAXS on any 64-bit UNIX based OS, but it may or may not support it. Please let us know about your platform (except Windows!) so that we can include it in our support list.

System Hardware (Compute Environment)

  • Clusters/Supercomputers without any accelerators.
  • Clusters/Supercomputers equipped with Nvidia GPUs as accelerators on each node.
  • Clusters/Supercomputers equipped with Intel Phi coprocessor (MIC) on each node.
  • AMD/Intel based generic servers/desktops without any accelerators.
  • AMD/Intel based generic servers/desktops equipped with CUDA-enabled Nvidia GPUs.
  • Intel based generic servers/desktops equipped with Intel Phi coprocessors (MIC).

System Hardware (Processor Architectures)

  • AMD/Intel 64-bit processors. We have not extensively tested on various types of processors yet.
  • Optional. Fermi or Kepler based Nvidia GPUs with compute capability >= 2.0.
  • Optional. Intel MIC based Intel Phi coprocessors. Requires Intel compilers version >= 13.1.0.146.

In Short

  • If your system is MAC OSX or Linux, most likely HipGISAXS can be installed on it.

Software Prerequisites

The HipGISAXS software uses several third-party libraries, and they need to be installed and available on your system in order to compile and run HipGISAXS. First check if these are already available on your system before proceeding to installation. If any of these are not installed, you can download and install them yourself.
In general, the following are the requirements of the HipGISAXS software:

  1. C/C++ compilers.
    • GNU version >= 4.3 and <= 4.7, OR,
    • Intel version >= 13.1.0.146.
    • Other compilers might work, but have not been tested.
      Note 1. If compiling with GPU support enabled using GNU, compiler version needs to be >= 4.3 and <= 4.6.
      Note 2. If compiling with MIC support enabled, Intel compilers are necessary.
      Tip. Recommended GNU compiler 4.6 for GPU enabled version.
  2. Optional. Nvidia CUDA version > 4.x.
  3. OpenMPI version > 1.4.4.
    • OpenMPI can be obtained from http://www.open-mpi.org/software.
      Note 1. Currently, even if you do not plan to use MPI, the compilation process still needs MPI. This requirement will be removed in future.
      Note 2. Alternative implementations of MPI can also be used, such as MPICH2 and MVAPICH.
  4. C++ Boost libraries version >= 1.49.
  5. Numeric extension to Boost Generic Image Library (GIL).
  6. Parallel HDF5 library.
  7. Tiff Library (libtiff).
  8. Scons version >= 2.0, for installation.

HipGISAXS Directory Contents

hipgisaxs/
+ README.md     : Duh!
+ LICENSE       : This contains all the licensing information for HipGISAXS.
+ SConstruct    : Scons file for installation.
+ SConscript    : Scons file for installation.
+ bin/          : This contains HipGISAXS binaries generated by compilation.
+ build/        : (deprecated).
+ data/         : This provides some sample input shape definition files in HDF5 format.
+ doc/          : This contains detailed documentation of HipGISAXS.
+ inputs/       : This gives some sample input files to HipGISAXS program in HiG format.
+ lib/          : The HipGISAXS library, libhipgisaxs.a, is generated here.
+ man/          : This has the HipGISAXS man pages.
+ obj/          : All the object files generated during build are stored here.
+ samples/      : This contains some compilable code samples on how to use the HipGISAXS library.
+ src/          : This is the main source directory containing the full code within subdirectories.

Installing Prerequisites

GNU C/C++ Compilers.

There is a high chance that you have it already. To check the version, enter at the prompt:

$ gcc --version

If it is installed, you will get an output with the version number. Make sure this version is compatible with HipGISAXS.

If not, there are multiple ways you can install GNU compilers depending on your system. For example, on Ubuntu Linux, use:

$ sudo apt-get install gcc-4.6 g++-4.6

On Mac OSX with Homebrew, use:

$ brew install gcc46

Boost Libraries.

Numeric extension to Boost Generic Image Library (GIL).

Download the file numeric.zip from a link mentioned above. Unzip the file, generating a directory named numeric. Copy this directory to your Boost installation under boost/gil/extensions/. For example:

$ wget http://gil-contributions.googlecode.com/svn/trunk/numeric.zip
$ unzip numeric.zip
$ sudo cp -r numeric {INCLUDE_ROOT}/boost/gil/extension

Where INCLUDE_ROOT is the path to your Boost include directory (such as /usr/local/include).

OpenMPI.

Tiff Library.

Parallel HDF5.

Scons.

Nvidia CUDA.


Installing HipGISAXS

Once all the prerequisites are successfully installed, use Scons to install HipGISAXS along with list of the directory paths to the installed software:

$ cd hipgisaxs
$ scons --extrapath=PATH1,PATH2,...

Some examples for specialized installations are given below.

Basic CPU version installation

$ scons --extrapath=/usr/local/openmpi,/usr/local/boost,/usr/local/hdf5,/usr/local/tiff,/usr/local/szip

Note 1. The list of paths is an example. They may be different on your system.
Note 2. Currently OpenMPI is required even if you do not plan to use the multi-node version of HipGISAXS. This dependency will be removed in future.

Single node with Nvidia GPU

$ scons --with-cuda --extrapath=...

Single node with Intel MIC

$ scons --with-mic --extrapath=...

Note. Intel compilers are necessary for MIC support.

Multiple CPU system (for MPI support)

$ scons --with-mpi --extrapath=...

Multiple CPU system with Nvidia GPU on each node

$ scons --with-cuda --with-mpi --extrapath=...

Multiple CPU system with Intel MIC on each node

$ scons --with-mic --with-mpi --extrapath=...

Note. Intel compilers are necessary for MIC support.

If all goes well, the software binary/executable will be generated into the 'bin' directory and hipgisaxs library into the 'lib' directory.