Sunday, August 21, 2005

LAM/MPI version of AMBER 8 sander on OSCAR 4

  1. Before doing this, be sure to issue
    switcher mpi lam-7.0.6
    command (you just need to do it only once, the setting will be saved.).
  2. I managed to port sander8.lam with OSCAR's LAM, doing MPICH should be the same.
  3. The thing note-worthy is that the protocol for shared memory parallel run should be sysv in LAM
    setenv TESTsander ~/bin/sander8.lam
    setenv DO_PARALLEL "mpirun -ssi rpi sysv -np 2"
    echo "localhost cpu=2" > lam_host
    lamboot -v lam_host
    lamhalt

Wondering why ifc (7) is happy with OSCAR's LAM/MPI? Because I literally defined the MPI function call to something like this (in amber8/src/config.h):
FPP= cpp -traditional $(FPPFLAGS) -Dmpi_allreduce=mpi_allreduce_ -Dmpi_recv=mpi_recv_ -Dmpi_send=mpi_send_ -Dmpi_barrier=mpi_barrier_ -Dmpi_finalize=mpi_finalize_ -Dmpi_abort=mpi_abort_ -Dmpi_reduce=mpi_reduce_ -Dmpi_comm_size=mpi_comm_size_ -Dmpi_comm_rank=mpi_comm_rank_ -Dmpi_comm_size=mpi_comm_size_ -Dmpi_wait=mpi_wait_ -Dmpi_isend=mpi_isend_ -Dmpi_bcast=mpi_bcast_ -Dmpi_sendrecv=mpi_sendrecv_ -Dmpi_comm_free=mpi_comm_free_ -Dmpi_comm_split=mpi_comm_split_ -Dmpi_init=mpi_init_

For PMEMD at amber8, config.h need to be modified to this:
setenv CPP "cpp -traditional -I$LAM_INCLUDE -Dmpi_allreduce=mpi_allreduce_ -Dmpi_recv=mpi_recv_ -Dmpi_send=mpi_send_ -Dmpi_barrier=mpi_barrier_ -Dmpi_finalize=mpi_finalize_ -Dmpi_abort=mpi_abort_ -Dmpi_reduce=mpi_reduce_ -Dmpi_comm_size=mpi_comm_size_ -Dmpi_comm_rank=mpi_comm_rank_ -Dmpi_comm_size=mpi_comm_size_ -Dmpi_wait=mpi_wait_ -Dmpi_isend=mpi_isend_ -Dmpi_bcast=mpi_bcast_ -Dmpi_sendrecv=mpi_sendrecv_ -Dmpi_comm_free=mpi_comm_free_ -Dmpi_comm_split=mpi_comm_split_ -Dmpi_init=mpi_init_ -Dmpi_get_count=mpi_get_count_ -Dmpi_gather=mpi_gather_ -Dmpi_gatherv=mpi_gatherv_ -Dmpi_allgatherv=mpi_allgatherv_"

No comments: