Molpro 2025.1.0

ウェブページ

https://www.molpro.net/

バージョン

2025.1.0

ビルド環境

  • GCC 13.1.1 (gcc-toolset-13)
  • Intel MPI 2021.14.1
  • Eigen 3.4.0
  • MKL 2025.0

ビルドに必要なファイル

  • molpro-2025.1.0.tar.gz
  • ga-5.9.tar.gz
  • work.patch
  • patch-argos-binput.F
  • patch-cic-ItfFortranInt.h
  • patch-common_modules-common_cconf
    • 大きな CI 計算のためのパラメータの変更と、一時ディレクトリのデフォルトパスの変更をしています。
    • パッチファイル本体は /apl/molpro/2025.1.0/patches 以下に置いています。
  • token

ビルド手順

#!/bin/sh

# Exit script if any error occurs
set -e

# Variable definitions
GA_VERSION=5.9
GA_ARCHIVE=/home/users/${USER}/Software/GlobalArrays/${GA_VERSION}/ga-${GA_VERSION}.tar.gz
MOLPRO_VERSION=2025.1.0
MOLPRO_DIRNAME=molpro-${MOLPRO_VERSION}
BASEDIR=/home/users/${USER}/Software/Molpro/${MOLPRO_VERSION}
MOLPRO_TARBALL=${BASEDIR}/${MOLPRO_DIRNAME}.tar.gz
PATCH0=${BASEDIR}/work.patch
PATCH1=${BASEDIR}/patch-argos-binput.F
PATCH2=${BASEDIR}/patch-cic-ItfFortranInt.h
PATCH3=${BASEDIR}/patch-common_modules-common_cconf
TOKEN=${BASEDIR}/token
WORKDIR=/gwork/users/${USER}
GA_INSTALLDIR=${WORKDIR}/ga-temporary
INSTALLDIR=/apl/molpro/${MOLPRO_VERSION}
PARALLEL=12

# Common environment setup function
setup_environment() {
   umask 0022
   ulimit -s unlimited
   
   export LANG=
   export LC_ALL=C
   export OMP_NUM_THREADS=1
}

# Directory cleanup function
cleanup_directory() {
   local dir_name=$1
   if [ -d "$dir_name" ]; then
       local temp_name="${dir_name}_tmp"
       mv "$dir_name" "$temp_name"
       rm -rf "$temp_name"
   fi
}

# Compiler and flags setup function
setup_compiler_flags() {
   # Compiler flags configuration
   export CFLAGS="-mpc80"
   export FFLAGS="-mpc80"
   export FCFLAGS="-mpc80"
   export CXXFLAGS="-mpc80"
   
   # Compiler settings
   export F77=mpif90
   export F90=mpif90
   export FC=mpif90
   export CC=mpicc
   export CXX=mpicxx
   export MPIF77=mpif90
   export MPICC=mpicc
   export MPICXX=mpicxx
   export GA_FOPT="-O3"
   export GA_COPT="-O3"
   export GA_CXXOPT="-O3"
}

# Patch application function
apply_patches() {
   local patch_files=("$@")
   for patch_file in "${patch_files[@]}"; do
       echo "Applying patch: $patch_file"
       patch -p0 < "$patch_file"
   done
}

# Build execution function
run_make() {
   local target=$1
   local options=$2
   
   if [ -z "$options" ]; then
       make -j ${PARALLEL} $target
   else
       make -j ${PARALLEL} $target $options
   fi
}

# Main processing
main() {
   # Environment setup
   setup_environment

   # Change to working directory
   cd $WORKDIR

   # Cleanup old directories
   cleanup_directory "ga-${GA_VERSION}"
   cleanup_directory "ga-temporary"
   cleanup_directory "${MOLPRO_DIRNAME}"

   # Load modules
   module -s purge
   module -s load gcc-toolset/13
   module -s load intelmpi/2021.14.1
   module -s load eigen/3.4.0

   # Building Global Arrays
   echo "Building Global Arrays ${GA_VERSION}..."
   tar zxf ${GA_ARCHIVE}
   cd ga-${GA_VERSION}
   
   setup_compiler_flags
   
   ./autogen.sh
   ./configure --enable-i8 \
              --with-mpi-pr \
              --prefix=${GA_INSTALLDIR}
   
   run_make
   make check
   make install

   # Building Molpro
   echo "Building Molpro ${MOLPRO_VERSION}..."
   module -s load mkl/2025.0.0.1
   
   cd ${WORKDIR}
   tar zxf ${MOLPRO_TARBALL}
   cd ${MOLPRO_DIRNAME}

   # Apply patches
   apply_patches "$PATCH0" "$PATCH1" "$PATCH2" "$PATCH3"
   
   export PATH="${GA_INSTALLDIR}/bin:$PATH"
   
   # Check GA library directory
   GA_LIBDIR="lib64"
   if [ ! -d "${GA_INSTALLDIR}/${GA_LIBDIR}" ]; then
       GA_LIBDIR="lib"
   fi
   
   # Molpro configuration and build
   CPPFLAGS="-I${GA_INSTALLDIR}/include" \
   LDFLAGS="-L${GA_INSTALLDIR}/${GA_LIBDIR}" \
   ./configure --prefix=${INSTALLDIR} \
               --enable-slater
   
   run_make
   
   # Copy token
   cp $TOKEN "$(pwd)/lib/.token"
   
   # Run tests
   make quicktest MOLPRO_OPTIONS="-n2"
   make test
   
   # Installation
   make install
   cp -a testjobs ${INSTALLDIR}/molpro*
   cp -a bench ${INSTALLDIR}/molpro*
   
   echo "Installation of Molpro ${MOLPRO_VERSION} completed successfully!"
   
}

# Execute main processing
main

テスト

全てパスしています。

メモ

  • make tuningが無くなったので削除