Installation guide

Sampling of metabolic models is a two-step process. The first step is the generation of warmup points that will be used as a startign point for the actual sampling.

Generation of warmup points

To generate warmup points for metabolic models, we will use the VFWarmup tool that uses a hybrid MPI/OpenMP distributed approach to ensure dynamic load balancing.

Requirements

  • Linux-based system
  • IBM CPLEX 12.6.3 and above Free academic version
  • OpenMp comes by default in the latest gcc versions
  • MPI through the OpenMPI 1.10.3 implementation.

Quick install

cd VFWarmup
source ./install.sh
make

Troubleshooting

Quick install downloads and installs 1) OpenMPI and 2) IBM CPLEX for 64-bit machines.

You can do each step separately if quick install did not work or if you have different machine specs.

  • MPI: You can use the following code snippet to install MPI
VERSION=3.1.2
wget --no-check-certificate https://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-$VERSION.tar.gz
tar -xzf openmpi-$VERSION.tar.gz
cd openmpi-$VERSION
mkdir build && cd build
../configure CFLAGS="-w" --prefix=$HOME/open-mpi \
             --without-verbs --without-fca --without-mxm --without-ucx \
             --without-portals4 --without-psm --without-psm2 \
             --without-libfabric --without-usnic \
             --without-udreg --without-ugni --without-xpmem \
             --without-alps --without-munge \
             --without-sge --without-loadleveler --without-tm \
             --without-lsf --without-slurm \
             --without-pvfs2 --without-plfs \
             --without-cuda --disable-oshmem \
             --disable-mpi-fortran --disable-oshmem-fortran \
             --disable-libompitrace \
             --disable-mpi-io  --disable-io-romio \
             --disable-static #--enable-mpi-thread-multiple
make -j2
make install

You might also need to add MPI path

export PATH=$HOME/open-mpi/bin:$PATH
  • IBM CPLEX: The recommended approach is to download IBM CPLEX and register for the free academic version.

Make sure that the CPLEXDIR path in VFWarmup/Makefile corresponds to the installation folder of CPLEX.

  • Once the required dependencies installed, cd ACHR.cu/VFWarmup then make at the root of VFWarmup.
  • Alternatively, you can open an issue here.

Sampling

The actual sampling uses ACHR.cu and starts from the warmup points generated by VFWarmup. It is a CUDA-based GP-GPU software.

Requirements

  • Linux-based system
  • Nvidia GPU with sm_35 architecture. Check the specs of your card here This architecture is needed as ACHR.cu uses nested parallelism to gain even higher speed-ups.
  • CUDA v8.0 and above
  • GSL linear algebra library needed for the sequential SVD and QR.
  • IBM CPLEX 12.6.3 and above

Once the required dependencies installed, make at the root of ACHRcu

Quick install

cd ACHRcu
source ./install.sh
make

Troubleshooting

Quick install downloads and installs 1) CUDA 8.0 for 64 bit machines and 2) GSL.

You can do each step separately if quick install did not work or if you have different machine specs.

  • CUDA v 8.0: You can download CUDA here, then follow the instructions for the installation.

You might also need to add CUDA path

export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

CUDA v 8.0 and above are required because ACHR.cu enables dynamic parallelism. For CUDA v 8.0, a GCC version < 5.0 is required.

You can install GCC 4.8 like the following:

sudo apt install gcc-4.8 g++-4.8
sudo ln -s /usr/bin/gcc-4.8 /usr/local/cuda/bin/gcc 

You can also install newer CUDA versions that support recent versions of GCC.

  • GSL: You can install GSL like the following
sudo apt-get install libgsl-dev
  • IBM CPLEX: check the installation of VFWarmup for the download and install of IBM CPLEX.

Make sure that the CPLEXDIR path in ACHRcu/Makefile corresponds to the installation folder of CPLEX.

  • Once the required dependencies installed, cd ACHR.cu/ACHRcu then make at the root of ACHRcu.
  • Alternatively, you can open an issue here.