Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 97131151 authored by PRUVOST Florent's avatar PRUVOST Florent
Browse files

Update build stage in order to use the new docker image and handle cuda and...

Update build stage in order to use the new docker image and handle cuda and hip builds on plafrim using a guix environment
parent 7948bc68
No related branches found
No related tags found
1 merge request!501Update docker environment, use shared runners, and plafrim for cuda/rocm
...@@ -26,32 +26,11 @@ if [[ "$SYSTEM" == "linux" ]]; then ...@@ -26,32 +26,11 @@ if [[ "$SYSTEM" == "linux" ]]; then
fi fi
export STARPU_DIR=/home/gitlab/install/starpu${STARPU_VARIANT} export STARPU_DIR=/home/gitlab/install/starpu${STARPU_VARIANT}
# add additional env. var. depending on the starpu variant
case $STARPU_VARIANT in
-hip )
export CMAKE_PREFIX_PATH=$STARPU_DIR:/opt/rocm
export LD_LIBRARY_PATH=/opt/rocm/lib
;;
-hipcuda )
export CMAKE_PREFIX_PATH=$STARPU_DIR:$HIPCUDA_DIR
export LD_LIBRARY_PATH=$HIPCUDA_DIR/lib
export HIP_PLATFORM=nvidia
export HIP_PATH=$HIPCUDA_DIR
;;
* )
;;
esac
# for build: better to rely on pkg-config than to guess libraries with the env. var. # for build: better to rely on pkg-config than to guess libraries with the env. var.
export PKG_CONFIG_PATH=$PARSEC_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=$STARPU_DIR/lib/pkgconfig:$PKG_CONFIG_PATH export PKG_CONFIG_PATH=$STARPU_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=$SIMGRID_DIR/lib/pkgconfig:$PKG_CONFIG_PATH
# for ctest: we need this at runtime # for ctest: we need this at runtime
export LD_LIBRARY_PATH=$PARSEC_DIR/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$QUARK_DIR/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$STARPU_DIR/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=$STARPU_DIR/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$SIMGRID_DIR/lib:$LD_LIBRARY_PATH
elif [[ "$SYSTEM" == "windows" ]]; then elif [[ "$SYSTEM" == "windows" ]]; then
......
...@@ -3,8 +3,25 @@ set -ex ...@@ -3,8 +3,25 @@ set -ex
SCAN="" SCAN=""
if [[ "$SYSTEM" != "windows" ]]; then # Configure with CMake
if [[ "$SYSTEM" == "macosx" ]]; then case $SYSTEM in
linux)
echo "build on linux"
source .gitlab-ci-env.sh $CHAM_CI_ENV_ARG
if [[ $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH ]]; then
SCAN="scan-build -plist --intercept-first --exclude CMakeFiles --analyze-headers -o analyzer_reports "
fi
eval '${SCAN}cmake -B build-${VERSION} -S . -C cmake_modules/gitlab-ci-initial-cache.cmake $BUILD_OPTIONS'
;;
guix)
echo "build on guix"
cmake -B build-${VERSION} -S . -C cmake_modules/gitlab-ci-initial-cache.cmake $BUILD_OPTIONS
;;
macosx)
echo "build on macosx"
# check starpu is already installed and install it if necessary # check starpu is already installed and install it if necessary
DEP_INSTALLED=`brew ls --versions starpu | cut -d " " -f 2` DEP_INSTALLED=`brew ls --versions starpu | cut -d " " -f 2`
if [[ -z "${DEP_INSTALLED}" ]]; then if [[ -z "${DEP_INSTALLED}" ]]; then
...@@ -24,23 +41,27 @@ if [[ "$SYSTEM" != "windows" ]]; then ...@@ -24,23 +41,27 @@ if [[ "$SYSTEM" != "windows" ]]; then
cmake -B build-${VERSION} -S . \ cmake -B build-${VERSION} -S . \
-DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install-${VERSION} \ -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install-${VERSION} \
-DMORSE_ENABLE_COVERAGE=OFF -DBLA_PREFER_PKGCONFIG=ON -DMORSE_ENABLE_COVERAGE=OFF -DBLA_PREFER_PKGCONFIG=ON
else ;;
source .gitlab-ci-env.sh $CHAM_CI_ENV_ARG
if [[ $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH ]] windows)
then echo "build on windows"
SCAN="scan-build -plist --intercept-first --exclude CMakeFiles --analyze-headers -o analyzer_reports " # on windows the mpi_f08 interface is missing, see https://www.scivision.dev/windows-mpi-msys2/
fi # do not use static libraries because executables are too large and the build
eval '${SCAN}cmake -B build-${VERSION} -S . -C cmake_modules/gitlab-ci-initial-cache.cmake $BUILD_OPTIONS' # directory can reach more than 10Go
fi cmake -GNinja -B build-${VERSION} -S . \
else -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install-${VERSION} \
# on windows the mpi_f08 interface is missing, see https://www.scivision.dev/windows-mpi-msys2/ -DCHAMELEON_USE_MPI=OFF
# do not use static libraries because executables are too large and the build ;;
# directory can reach more than 10Go *)
cmake -GNinja -B build-${VERSION} -S . \ echo "The SYSTEM environment variable is $SYSTEM. It is not one of : linux, guix, macosx, windows -> exit 1."
-DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install-${VERSION} \ exit 1
-DCHAMELEON_USE_MPI=OFF ;;
fi esac
# Compile
eval '${SCAN}cmake --build build-${VERSION} -j 4' eval '${SCAN}cmake --build build-${VERSION} -j 4'
# Install
cmake --install build-${VERSION} cmake --install build-${VERSION}
# #
...@@ -59,6 +80,8 @@ export FC=gfortran ...@@ -59,6 +80,8 @@ export FC=gfortran
# Set the path variables # Set the path variables
if [[ "$SYSTEM" == "linux" ]]; then if [[ "$SYSTEM" == "linux" ]]; then
#export LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:/usr/local/lib:$LIBRARY_PATH
#export LD_LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:/usr/local/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LIBRARY_PATH export LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=$PWD/../../install-${VERSION}/lib:$LD_LIBRARY_PATH
elif [[ "$SYSTEM" == "macosx" ]]; then elif [[ "$SYSTEM" == "macosx" ]]; then
...@@ -69,10 +92,12 @@ elif [[ "$SYSTEM" == "windows" ]]; then ...@@ -69,10 +92,12 @@ elif [[ "$SYSTEM" == "windows" ]]; then
export PATH=$PWD/../../install-${VERSION}/bin:$PATH export PATH=$PWD/../../install-${VERSION}/bin:$PATH
fi fi
# 1) using cmake: #if [[ "$SYSTEM" != "guix" ]]; then
./link_cmake.sh $PWD/../../install-${VERSION} # 1) using cmake:
# 2) using pkg-config: ./link_cmake.sh $PWD/../../install-${VERSION}
./link_pkgconfig.sh $PWD/../../install-${VERSION} # 2) using pkg-config:
./link_pkgconfig.sh $PWD/../../install-${VERSION}
#fi
cd ../.. cd ../..
rm -r install-${VERSION} rm -r install-${VERSION}
--- ---
.build_script_linux: .build_script_common:
stage: build stage: build
tags: ["docker", "large"]
extends: .only-master-mr extends: .only-master-mr
script:
- bash .gitlab/build.sh | tee ${LOGNAME}.log
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 180 minutes expire_in: 1 week
untracked: true untracked: true
when: always when: always
.build_script_linux:
extends: .build_script_common
script:
- bash .gitlab/build.sh | tee ${LOGNAME}.log
build_hmat: build_hmat:
extends: .build_script_linux extends: .build_script_linux
variables: variables:
...@@ -27,7 +29,6 @@ build_openmp: ...@@ -27,7 +29,6 @@ build_openmp:
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
BUILD_OPTIONS: "-DCHAMELEON_SCHED=OPENMP" BUILD_OPTIONS: "-DCHAMELEON_SCHED=OPENMP"
build_parsec: build_parsec:
extends: .build_script_linux extends: .build_script_linux
variables: variables:
...@@ -50,25 +51,34 @@ build_starpu: ...@@ -50,25 +51,34 @@ build_starpu:
SYSTEM: linux SYSTEM: linux
VERSION: starpu VERSION: starpu
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=ON -DCHAMELEON_USE_MPI=ON" BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=OFF -DCHAMELEON_USE_MPI=ON"
build_starpu_hip: .build_script_guix:
extends: .build_script_linux tags: ['plafrim']
extends: .build_script_common
script:
- guix describe -f channels
- guix shell --pure --preserve=SYSTEM --preserve=VERSION --preserve=LOGNAME --preserve=BUILD_OPTIONS
-D chameleon-${GUIX_CHAMELEON_VARIANT} coreutils bash-minimal --
bash .gitlab/build.sh | tee ${LOGNAME}.log
build_starpu_cuda:
extends: .build_script_guix
variables: variables:
SYSTEM: linux SYSTEM: guix
VERSION: starpu_hip VERSION: starpu_cuda
GUIX_CHAMELEON_VARIANT: cuda
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
CHAM_CI_ENV_ARG: hip BUILD_OPTIONS: "-DCHAMELEON_USE_CUDA=ON -DCHAMELEON_USE_MPI=ON -DBLA_VENDOR=OpenBLAS"
BUILD_OPTIONS: "-DCHAMELEON_USE_HIP_ROC=ON -DCHAMELEON_USE_MPI=ON"
build_starpu_hipcuda: build_starpu_hip:
extends: .build_script_linux extends: .build_script_guix
variables: variables:
SYSTEM: linux SYSTEM: guix
VERSION: starpu_hipcuda VERSION: starpu_hip
GUIX_CHAMELEON_VARIANT: hip
LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}" LOGNAME: "chameleon-build-${SYSTEM}-${VERSION}"
CHAM_CI_ENV_ARG: hipcuda BUILD_OPTIONS: "-DCHAMELEON_USE_HIP_ROC=ON -DCHAMELEON_USE_MPI=ON -DBLA_VENDOR=OpenBLAS -DCMAKE_C_COMPILER=gcc -DCMAKE_Fortran_COMPILER=gfortran"
BUILD_OPTIONS: "-DCHAMELEON_USE_HIP_CUDA=ON -DCHAMELEON_HIPBLAS_PATH=/home/gitlab/hipcuda/hipblas -DCHAMELEON_USE_MPI=ON"
build_starpu_simgrid: build_starpu_simgrid:
extends: .build_script_linux extends: .build_script_linux
...@@ -91,7 +101,7 @@ build_starpu_macosx: ...@@ -91,7 +101,7 @@ build_starpu_macosx:
- bash .gitlab/build.sh | tee ${LOGNAME}.log - bash .gitlab/build.sh | tee ${LOGNAME}.log
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 180 minutes expire_in: 1 week
paths: paths:
- ${LOGNAME}.log - ${LOGNAME}.log
cache: cache:
...@@ -113,7 +123,7 @@ build_starpu_macosx: ...@@ -113,7 +123,7 @@ build_starpu_macosx:
- bash -lc .gitlab/build.sh | tee "$env:LOGNAME.log" - bash -lc .gitlab/build.sh | tee "$env:LOGNAME.log"
artifacts: artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 180 minutes expire_in: 1 week
paths: paths:
- ${LOGNAME}.log - ${LOGNAME}.log
cache: cache:
......
...@@ -21,7 +21,7 @@ then ...@@ -21,7 +21,7 @@ then
exit 1 exit 1
fi fi
cmake -B build -DCMAKE_PREFIX_PATH=$1 cmake -B build -DCMAKE_PREFIX_PATH=$1
cmake --build build --verbose cmake --build build --verbose
if [[ "$VERSION" != "starpu_simgrid" ]]; then if [[ "$VERSION" != "starpu_simgrid" ]]; then
ctest --test-dir build --verbose ctest --test-dir build --verbose
fi fi
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment