Compiling AMBER 10 with Intel XE Compiler and Intel MKL 10

If you wish to compile AMBER 10 with the latest version of Intel XE and Intel and MKL 10, you will need to do a bit of tweaking of the

Standard installation of AMBER10

A. Setup of AmberTools environment.

1. Include AMBERHOME in your .bashrc

# vim .bashrc
export AMBERHOME=/usr/local/amber10

2. Configure the system for AmberTools. Assuming you are configuring for mpi, intel compiler, you will probably use the command

# cd $AMBERHOME/src
# ./configure_at mpi icc

3. Make the file Makefile_at

# make -f Makefile_at

You will have something like for the output.

Completed installation of AmberTools, version 1.1

B. Setting up the basic AMBER distribution for OpenMPI, Intel

Here is where if you are using the more up-to-date MKL (version 10), things will fail to compile. It took me a while to solve the problem. But basically you have to replace the  old dynamic linking flags with the new ones. According to the versions 10.x of Intel® MKL, Intel has re-architected Intel MKL and physically separated the interface, threading and computational components of the product.

1. Retrieve the latest bug fixes for AMBER 10 from (

# chmod 700 apply_bugfix_all.x
# ./apply_bugfix_all.x bugfix.all

2. Edit the configure_amber file to match Intel MKL 10.x linking libraries. Fore information, do look at Linking Applications with Intel MKL version 10

# vim $AMBERHOME/src/configure_amber

Go to line 464, replace the EM64T dynamic linking parameters

# EM64T dynamic linking of double-precision-LAPACK and kernels
# loadlib="$loadlib -L$mkll -lvml -lmkl_lapack -lmkl -lguide -lpthread"
loadlib="$loadlib -L$mkll  -lguide -lpthread -lguide -lpthread -lmkl_intel_lp64 
-lmkl_intel_thread -lmkl_core"

Go to line 617, replace the EM64T dynamic linking parameters, do the same

#loadlib="$loadlib -L$mkll -lvml -lmkl_lapack -lmkl -lguide -lpthread"
loadlib="$loadlib -L$mkll  -lguide -lpthread -lmkl_intel_lp64 
-lmkl_intel_thread -lmkl_core"

3. Ensure the environmental varaiables are correct. You should have at least have the following. I’m also assuming you have compiled OpenMPI and has but it in the PATH

export AMBERHOME=/usr/local/amber10
export MPI_HOME=/usr/local/mpi/intel
export MKL_HOME=/opt/intel/mkl/

4. Compile the  AMBER for parallel

# ./configure_amber -openmpi ifort
------   Configuring the netCDF libraries:   --------

Configuring netcdf; (may be time-consuming) NETCDF configure succeeded. 
MPI_HOME is set to /usr/local/mpi/intel
The configuration file, config_amber.h, was successfully created.