Skip to content

Commit 4ff598e

Browse files
committed
Add nvshmem to jenkins ci
1 parent 8223b1b commit 4ff598e

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

.jenkins/continuous.groovy

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,28 @@ pipeline {
4242
make -j8 && cd unit_tests && mpirun -np 2 ./KokkosRemoteSpaces_TestAll'''
4343
}
4444
}
45+
stage('nvshmem') {
46+
agent {
47+
dockerfile {
48+
filename 'Dockerfile.nvshmem'
49+
dir 'scripts/docker'
50+
label 'nvidia-docker && large_images'
51+
}
52+
}
53+
steps {
54+
sh '''rm -rf build && mkdir -p build && cd build && \
55+
cmake \
56+
-DCMAKE_BUILD_TYPE=Release \
57+
-DKokkos_DIR=${KOKKOS_ROOT} \
58+
-DCMAKE_CXX_COMPILER=${KOKKOS_ROOT}/bin/nvcc_wrapper \
59+
-DKRS_ENABLE_NVSHMEMSPACE=ON \
60+
-DNVSHMEM_ROOT=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/nvshmem \
61+
-DKRS_ENABLE_TESTS=ON \
62+
-DCMAKE_CXX_FLAGS=-Werror \
63+
.. && \
64+
make -j8 && cd unit_tests && mpirun -np 2 ./KokkosRemoteSpaces_TestAll'''
65+
}
66+
}
4567
}
4668
}
4769
}

scripts/docker/Dockerfile.nvshmem

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
FROM nvcr.io/nvidia/nvhpc:23.7-devel-cuda12.2-ubuntu20.04
2+
3+
ENV DEBIAN_FRONTEND=noninteractive
4+
RUN apt-get update && apt-get upgrade -y && apt-get install -y \
5+
build-essential \
6+
wget \
7+
git \
8+
bc \
9+
ninja-build \
10+
git \
11+
libev-dev \
12+
libevent-dev \
13+
libhwloc-dev \
14+
pkg-config \
15+
clang-format-8 \
16+
&& \
17+
apt-get clean && rm -rf /var/lib/apt/list
18+
19+
ENV PREFIX=/scratch
20+
ENV ARCHIVE_DIR=${PREFIX}/archive
21+
ENV SOURCE_DIR=${PREFIX}/source
22+
ENV BUILD_DIR=${PREFIX}/build
23+
ENV INSTALL_DIR=/opt
24+
25+
RUN mkdir -p ${PREFIX} && \
26+
cd ${PREFIX} && \
27+
mkdir archive && \
28+
mkdir source && \
29+
mkdir build
30+
31+
# Install CMake
32+
RUN export CMAKE_VERSION=3.22.2 && \
33+
export CMAKE_SHA256=38b3befdee8fd2bac06954e2a77cb3072e6833c69d8cc013c0a3b26f1cfdfe37 && \
34+
export CMAKE_URL=https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.tar.gz && \
35+
export CMAKE_ARCHIVE=${ARCHIVE_DIR}/cmake.tar.gz && \
36+
export CMAKE_BUILD_DIR=${BUILD_DIR}/cmake && \
37+
wget --quiet ${CMAKE_URL} --output-document=${CMAKE_ARCHIVE} && \
38+
echo "${CMAKE_SHA256} ${CMAKE_ARCHIVE}" | sha256sum -c && \
39+
mkdir -p ${CMAKE_BUILD_DIR} && \
40+
tar xf ${CMAKE_ARCHIVE} -C ${CMAKE_BUILD_DIR} --strip-components=1 && \
41+
mv ${CMAKE_BUILD_DIR} ${INSTALL_DIR} && \
42+
rm -rf ${CMAKE_ARCHIVE} && \
43+
rm -rf ${CMAKE_BUILD_DIR}
44+
ENV PATH=${INSTALL_DIR}/cmake/bin:$PATH
45+
46+
## Install Kokkos
47+
RUN export KOKKOS_SOURCE_DIR=${SOURCE_DIR}/kokkos && \
48+
export KOKKOS_BUILD_DIR=${BUILD_DIR}/kokkos && \
49+
export KOKKOS_INSTALL_DIR=${INSTALL_DIR}/kokkos && \
50+
cd ${SOURCE_DIR} && git clone https://github.com/kokkos/kokkos && \
51+
cd kokkos && \
52+
git checkout 4.1.00 && \
53+
mkdir -p ${KOKKOS_BUILD_DIR} && \
54+
cd ${KOKKOS_BUILD_DIR} && \
55+
cmake -DCMAKE_BUILD_TYPE=Release \
56+
-DCMAKE_CXX_COMPILER=${KOKKOS_SOURCE_DIR}/bin/nvcc_wrapper \
57+
-DBUILD_SHARED_LIBS=ON \
58+
-DCUDAToolkit_ROOT=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/cuda \
59+
-DKokkos_ENABLE_CUDA=ON \
60+
-DCMAKE_INSTALL_PREFIX=${KOKKOS_INSTALL_DIR} \
61+
${KOKKOS_SOURCE_DIR} && \
62+
make -j${N_PROCS} install && \
63+
rm -rf ${KOKKOS_ARCHIVE} && \
64+
rm -rf ${KOKKOS_BUILD_DIR} && \
65+
rm -rf ${KOKKOS_SOURCE_DIR}
66+
ENV KOKKOS_ROOT=${INSTALL_DIR}/kokkos

0 commit comments

Comments
 (0)