variables:
  SCHEDULER_PARAMETERS: "-J bml_CI -W 1:00 -nnodes 1 -P CSC304"
  EXTERNAL_WORKDIR: /gpfs/wolf/csc304/proj-shared/bml/ci/${CI_JOB_ID}

stages:
  - build

build_gpu:
  stage: build  
  variables:
    CMAKE_EXTRA_ARGS: -DBML_MAGMA="yes" 
  script:
    - nvidia-smi
    - which jsrun
    - module load gcc/10.2.0
    - module load essl
    - module load cuda
    - module load magma/2.6.1
    - module load netlib-scalapack
    - module load netlib-lapack
    - module load git
    - module load cmake
    - export MAGMA_ROOT=${OLCF_MAGMA_ROOT}
    - JSRUN=jsrun
    - export BML_NONMPI_PRECOMMAND=${BML_NONMPI_PRECOMMAND:=${JSRUN}}
    - export BML_NONMPI_PRECOMMAND_ARGS=${BML_NONMPI_PRECOMMAND_ARGS:="-n1;-a1;-g1;-c7;--smpiargs=off"}
    - echo ${BML_NONMPI_PRECOMMAND_ARGS}
    - export BML_MPIEXEC_EXECUTABLE=${BML_MPIEXEC_EXECUTABLE:=${JSRUN}}
    - export BML_MPIEXEC_NUMPROCS_FLAG=${BML_MPIEXEC_NUMPROCS_FLAG:="-n"}
    - export BML_MPIEXEC_PREFLAGS=${BML_MPIEXEC_PREFLAGS:="-a1;-c4;-bpacked:2;-g1"}
    - export BLAS_LIBRARIES=${BLAS_LIBRARIES:="$OLCF_ESSL_ROOT/lib64/libesslsmp.so"}
    - export LAPACK_LIBRARIES=${LAPACK_LIBRARIES:="$OLCF_NETLIB_LAPACK_ROOT/lib64/liblapack.so"}
    - export BML_SCALAPACK=${BML_SCALAPACK:=yes}
    - export SCALAPACK_LIBRARIES=${SCALAPACK_LIBRARIES:="-L$OLCF_NETLIB_SCALAPACK_ROOT/lib -lscalapack"}
    - export BML_CUDA=${BML_CUDA:=yes}
    - export BML_ELPA=${BML_ELPA:=yes}
    - export ELPA_DIR=${ELPA_DIR:=/gpfs/wolf/csc304/proj-shared/elpa}
    - export BML_MPI=${BML_MPI:=yes}
    - export EXTRA_LINK_FLAGS=${EXTRA_LINK_FLAGS:="-lgfortran"}
    - echo ${CI_PROJECT_DIR}
    - mkdir ${EXTERNAL_WORKDIR}
    - cd ${EXTERNAL_WORKDIR}
    - git clone file://${CI_PROJECT_DIR} ${EXTERNAL_WORKDIR}
    - mkdir build
    - cd build
    - cmake -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" 
            -DCMAKE_C_COMPILER=mpicc
            -DCMAKE_CXX_COMPILER=mpiCC
            -DCMAKE_Fortran_COMPILER=mpif90
            -DBML_TESTING=ON ${CMAKE_OPTS[@]} 
            -DBLAS_LIBRARIES="${BLAS_LIBRARIES}" 
            -DLAPACK_LIBRARIES="${LAPACK_LIBRARIES}"
            -DSCALAPACK_LIBRARIES="${SCALAPACK_LIBRARIES}"
            -DBML_ELPA="${BML_ELPA}"
            -DELPA_DIR="${ELPA_DIR}"
            -DCMAKE_PREFIX_PATH="${ELPA_DIR}"
            -DBML_MPI="${BML_MPI}"
            -DBML_NONMPI_PRECOMMAND="${BML_NONMPI_PRECOMMAND}"
            -DBML_NONMPI_PRECOMMAND_ARGS="${BML_NONMPI_PRECOMMAND_ARGS}"
            -DBML_MPIEXEC_EXECUTABLE="${BML_MPIEXEC_EXECUTABLE}"
            -DBML_MPIEXEC_NUMPROCS_FLAG="${BML_MPIEXEC_NUMPROCS_FLAG}"
            -DBML_MPIEXEC_NUMPROCS="${BML_MPIEXEC_NUMPROCS}"
            -DBML_MPIEXEC_PREFLAGS="${BML_MPIEXEC_PREFLAGS}"
            -DBML_CUDA="${BML_CUDA}"
            -DBML_MAGMA="${BML_MAGMA}"
            -DBML_SCALAPACK="${BML_SCALAPACK}"
            -DEXTRA_LINK_FLAGS="${EXTRA_LINK_FLAGS}"
            ${CMAKE_EXTRA_ARGS} .. &&
    - make VERBOSE=1
    - ctest --output-on-failure
  tags:
    - batch