#!/usr/bin/env bash
mods=(
  #cuda/11.6
  nvhpcsdk/22  # for openacc
  gcc/12
  openmpi
  mkl/2020.4
  autoconf/2.69
  automake/1.15
  libtool/2.4.6
)


module purge
module load ${mods[@]}

LIB_PATH="${NVHPC_CUDA_HOME}/lib64"
export CUBLAS_LD_PATH="${NVHPC_ROOT}/math_libs/lib64/"
export CUDA_ROOT=${CUDA_HOME}
export CUDA_LDFLAGS="-L${LIB_PATH} -lcuda -L${LIB_PATH} -lcudart -L${CUBLAS_LD_PATH} -lcublas"
export CUDA_CXXFLAGS="-I${CUDA_HOME}/include"

export LD_LIBRARY_PATH="${MKL_HOME}/lib/intel64:${LD_LIBRARY_PATH}"

MPILIBS=$(mpicxx -show | awk '!($1="")')
export MPILIBS
export MPINVCXX="nv++ ${MPILIBS}"

ls ${CUBLAS_LD_PATH}/libcublas.so
ls ${LIB_PATH}/libcudart.so

#export OMPI_CC="nvc"
#export OMPI_CXX="nvc++"

BLAS_LDFLAGS="-L${PWD}/OpenBLAS-0.3.20/ -lopenblas"
_openblas_make () {

  [[ -d OpenBLAS-0.3.20/ ]] || {
    wget https://github.com/xianyi/OpenBLAS/releases/download/v0.3.20/OpenBLAS-0.3.20.tar.gz
    tar xvzf OpenBLAS-0.3.20.tar.gz
    cd OpenBLAS-0.3.20/
    make FC=gfortran CC=gcc USE_OPENMP=1 NUM_THREADS=72 TARGET=SKYLAKEX
  } && {
    echo "Openblas built"
  }

}
( _openblas_make; )



cat <<EOF

////////////////////////////////////////////////////////////////////////////////
                                    info
////////////////////////////////////////////////////////////////////////////////


MKL_HOME         = $MKL_HOME
BLAS_STATIC_PATH = $BLAS_STATIC_PATH

CUDA_ROOT      = ${CUDA_HOME}
CUDA_LDFLAGS   = "-L${LIB_PATH} -lcuda -L${LIB_PATH} -lcudart -L${LIB_PATH} -lcublas"
CUDA_CXXFLAGS  = "-I${CUDA_HOME}/include"



Consider now runnng the following

../../configure \\
  --enable-cuda \\
  --disable-slice \\
  --with-blas="${BLAS_LDFLAGS}" \\
  CXX="gcc" \\
  NVCC="\$MPINVCXX" \\
  MPICXX="mpicxx"


EOF
	

return
