#!/usr/bin/env bash
set -ex

nvshmem_version=3.4.5
wget -q https://developer.download.nvidia.com/compute/redist/nvshmem/${nvshmem_version}/source/nvshmem_src_cuda12-all-all-${nvshmem_version}.tar.gz
tar -xvf nvshmem_src_cuda12-all-all-${nvshmem_version}.tar.gz
cd nvshmem_src

export NVSHMEM_BUILD_EXAMPLES=0
export NVSHMEM_BUILD_TESTS=1
export NVSHMEM_DEBUG=0
export NVSHMEM_DEVEL=0
export NVSHMEM_DEFAULT_PMI2=0
export NVSHMEM_DEFAULT_PMIX=1
export NVSHMEM_DISABLE_COLL_POLL=1
export NVSHMEM_ENABLE_ALL_DEVICE_INLINING=0
export NVSHMEM_GPU_COLL_USE_LDST=0
export NVSHMEM_LIBFABRIC_SUPPORT=1
export NVSHMEM_MPI_SUPPORT=1
export NVSHMEM_MPI_IS_OMPI=1
export NVSHMEM_NVTX=1
export NVSHMEM_PMIX_SUPPORT=1
export NVSHMEM_SHMEM_SUPPORT=1
export NVSHMEM_TEST_STATIC_LIB=0
export NVSHMEM_TIMEOUT_DEVICE_POLLING=0
export NVSHMEM_TRACE=0
export NVSHMEM_USE_DLMALLOC=0
export NVSHMEM_USE_NCCL=1
export NVSHMEM_USE_GDRCOPY=1
export NVSHMEM_VERBOSE=0
export NVSHMEM_DEFAULT_UCX=0
export NVSHMEM_UCX_SUPPORT=0
export NVSHMEM_IBGDA_SUPPORT=0
export NVSHMEM_IBGDA_SUPPORT_GPUMEM_ONLY=0
export NVSHMEM_IBDEVX_SUPPORT=0
export NVSHMEM_IBRC_SUPPORT=0
export LIBFABRIC_HOME=/opt/libfabric
export NCCL_HOME=/opt/nccl
export GDRCOPY_HOME=/usr/local
export MPI_HOME=/opt/openmpi
export SHMEM_HOME=/opt/shmem
export NVSHMEM_HOME=/opt/nvshmem
cmake .
make -j$(nproc)
make install
ldconfig
cd ..
rm -r nvshmem_src nvshmem_src_cuda12-all-all-${nvshmem_version}.tar.gz
