Tested on (Requirements)

  • OS base: CentOS (x86_64) \(\boldsymbol{\ge}\) 6.6
  • Compiler: GCC \(\boldsymbol{\ge}\) 7.4.
  • Requirements:
    • CHARM++ \(\boldsymbol{\ge}\) 6.8.2 with GCC 7.4.
    • CUDA 10.1 (Optional).

Build process

  1. Download NAMD from the official website, you should create an account and agree the license term.

  2. Decompress the tar file.

    tar xfz NAMD_2.13_Source.tar.gz
    cd NAMD_2.13_Source
    
  3. Compile CHARM++.

    Charm++ [1] is a parallel object-oriented programming language based on C++ and developed in the Parallel Programming Laboratory at the University of Illinois at Urbana–Champaign. Charm++ is designed with the goal of enhancing programmer productivity by providing a high-level abstraction of a parallel program while at the same time delivering good performance on a wide variety of underlying hardware platforms.

    1. Decompress it (the namd source files contains the needed source files of CHARM).

      tar xf charm-6.8.2.tar
      cd charm-6.8.2
      
    2. Compile it. The command structure is build <target> <version> <options> [charmc-options ...]

    ## To compile NAMD with CUDA
    ./build charm++ multicore-linux-x86_64 smp gcc --with-production
    
    ## To compile NAMD with MPI
    ./build charm++ mpi-linux-x86_64 mpicxx gcc --with-production
    
  4. Configure the compilation.

    ## To compile NAMD with CUDA
    ./config Linux-x86_64-g++ --charm-arch multicore-linux-x86_64 --with-cuda --cuda-prefix /path/to/cuda/10.1/
    
    ## To compile NAMD with MPI
    ./config Linux-x86_64-g++ --charm-arch mpi-linux-x86_64-mpicxx
    
  5. Compile NAMD.

    cd Linux-x86_64-g++
    make -j 4
    

Module files

  • NAMD with CUDA

    #%Module1.0####################################################################
    ##
    ## module load namd/2.13-gcc_CUDA
    ##
    ## /share/apps/modules/namd/2.13-gcc_CUDA
    ## Written by Manuela Carrasco Pinzon
    ##
    
    proc ModulesHelp {} {
         global version modroot
         puts stderr "Sets the environment for using NAMD 2.13 with CUDA\
         	    \nin the shared directory /share/apps/namd/2.13/2.13-gcc_CUDA\
    	    	   \nbuilded with GCC 7.4 and CUDA 10.1"
    }
    
    module-whatis "(Name________) namd"
    module-whatis "(Version_____) 2.13-gcc_CUDA"
    module-whatis "(Compilers___) gcc 7.4 and cuda 10.1"
    module-whatis "(System______) x86_64-redhat-linux"
    module-whatis "(Libraries___) "
    
    # for Tcl script use only
    set         topdir        /share/apps/namd/2.13/2.13-gcc_CUDA/
    set         version       2.13-gcc_CUDA
    set         sys           x86_64-redhat-linux
    
    conflict mafft
    module load gcc/7.4.0
    module load cuda/10.1
     
    
    prepend-path	PATH			$topdir/bin
    
  • NAMD with MPI

    #%Module1.0####################################################################
    ##
    ## module load namd/2.13-gcc_MPI
    ##
    ## /share/apps/modules/namd/2.13-gcc_MPI
    ## Written by Manuela Carrasco Pinzon
    ##
    
    proc ModulesHelp {} {
         global version modroot
         puts stderr "Sets the environment for using NAMD 2.13 with MPI\
         	    \nin the shared directory /share/apps/namd/2.13/2.13-gcc_MPI\
    	    	   \nbuilded with GCC 7.4 and OpenMPI 1.10.7"
    }
    
    module-whatis "(Name________) namd"
    module-whatis "(Version_____) 2.13-gcc_MPI"
    module-whatis "(Compilers___) gcc 7.4 and OpenMPI 1.10.7"
    module-whatis "(System______) x86_64-redhat-linux"
    module-whatis "(Libraries___) "
    
    # for Tcl script use only
    set         topdir        /share/apps/namd/2.13/2.13-gcc_MPI/
    set         version       2.13-gcc_MPI
    set         sys           x86_64-redhat-linux
    
    conflict mafft
    module load gcc/5.4.0
    module load openmpi/1.10.7_gcc-5.4.0
     
    
    prepend-path	PATH			$topdir/bin
    
[1]Wikipedia contributors. (2019a, September 11). Charm++. Retrieved December 11, 2019, from https://en.wikipedia.org/wiki/Charm%2B%2B