Monday, April 18, 2011

AmberTools 1.5, the Intel compilers, and the Intel Math Kernel Library (MKL)

We're pleased to announce the release of AmberTools 1.5, now available from the Amber website.

It includes several new packages:

  • MMPBSA.py, a much-expanded program for energetic analyses of trajectories
  • amberlite, a simplified interface for mm-pbsa analyses of protein-ligand interactions
  • MCPB, a platform for developing parameters for active sites of metalloproteins
  • cpptraj, an expanded trajectory analysis program
  • mdgx, a coding platform for explicit-solvent MD simulations
  • updates to GAFF (general Amber force field) and to the RNA force fields
You may install AmberTools 1.5 on top of an existing Amber 11 / AmberTools 1.4 installation. For instructions, please see the web site.

There are two traps I've discovered during the testing phase, related to AmberTools 1.5, the Mac, and the Intel compilers.

The first is that, if you're using the Intel compilers, it matters what version of the GNU compilers (gcc, etc.) you've selected. That's because parts of the code use the c++0x version of the C++ standard, and the version of the C++ header files becomes important. If you use the MacPorts GCC 4.4 or 4.5, you'll get ugly errors like this:

/opt/local/include/gcc44/c++/bits/stringfwd.h(67): error: identifier "char16_t" is undefined
    template<> struct char_traits<char16_t>;
                                  ^

/opt/local/include/gcc44/c++/bits/stringfwd.h(68): error: identifier "char32_t" is undefined
    template<> struct char_traits<char32_t>;                                   ^
The solution, if you get such errors, is to use the command sudo gcc_select, and choose a version of the GNU compilers that came with the XCode development tools. This will present the Intel compilers with a compatible version of the C and C++ headers.

A second problem is that some parts of Amber give bad results with the Intel MKL libraries. The solution here is simple: Don't use them. Make sure that the environment variables MKLROOT and MKL_HOME are unset (note: If they are set, the Amber configuration script will attempt to use an MKL in the location they point to). Instead, configure AmberTools with the –macAccelerate switch.