diff --git a/.github/CI/spack_setup.sh b/.github/CI/spack_setup.sh deleted file mode 100644 index 4dcd975f..00000000 --- a/.github/CI/spack_setup.sh +++ /dev/null @@ -1,7 +0,0 @@ -# This file should be "sourced" into your environment -# to set up the spack repository - - -source $SPACK_SETUP -spack env activate dplasma - diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index fa1ab76f..fb64d9ce 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -6,38 +6,33 @@ on: branches: [ master ] pull_request: branches: [ master ] - -#env: - -# Allows to run this workflow manually from the Actions tab -#workflow_dispatch: + # Allows to run this workflow manually from the Actions tab + workflow_dispatch: jobs: - debug: - runs-on: [self-hosted, Linux] + all: + timeout-minutes: 60 strategy: fail-fast: false matrix: build_type : [ Debug, Release ] shared_type : [ OFF, ON ] + device: [ cpu, gpu_nvidia, gpu_amd ] exclude: - build_type: Release shared_type: OFF - - name: "Type=${{ matrix.build_type }} shared=${{ matrix.shared_type }}" + name: "${{matrix.build_type}} Shared=${{matrix.shared_type}} ${{matrix.device}}" + runs-on: [ "${{matrix.device}}", self-hosted ] env: - BUILD_DIRECTORY : "${{github.workspace}}/build/${{ matrix.build_type }}/shared_${{matrix.shared_type}}" - INSTALL_DIRECTORY : "${{github.workspace}}/install/${{ matrix.build_type }}/shared_${{matrix.shared_type}}" - RUNNER_ENV : github_runner - # Disable RECURSIVE in CI tests until a real solution to https://github.com/ICLDisco/parsec/issues/548 is implemented - BUILD_CONFIG : > - -G Ninja - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - -DBUILD_SHARED_LIBS=${{ matrix.shared_type }} - -DMPIEXEC_PREFLAGS='--bind-to;none;--oversubscribe' - -DCMAKE_INSTALL_PREFIX=$INSTALL_DIRECTORY - -DDPLASMA_PRECISIONS=d - -DPARSEC_HAVE_DEV_RECURSIVE_SUPPORT=OFF + BUILD_TYPE: ${{matrix.build_type}} + SHARED_TYPE: ${{matrix.shared_type}} + DEVICE: ${{matrix.device}} + BUILD_DIRECTORY: build + INSTALL_DIRECTORY: install + SETUP: ${{github.workspace}}/.github/workflows/env_setup.sh + defaults: + run: + shell: bash steps: - uses: actions/checkout@v4 @@ -48,53 +43,40 @@ jobs: id: setup # Create a separate build directory and use it for all subsequent commands run: | - source ${{github.workspace}}/.github/CI/spack_setup.sh - spack compiler list + source $SETUP cmake -E make_directory ${{ env.BUILD_DIRECTORY }} - name: Configure CMake id: configure - # Use a bash shell so we can use the same syntax for environment variable - # access regardless of the host operating system working-directory: ${{ env.BUILD_DIRECTORY }} - timeout-minutes: 10 - shell: bash # Note the current convention is to use the -S and -B options here to specify source # and build directories, but this is only available with CMake 3.13 and higher. # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 run: | - source ${{github.workspace}}/.github/CI/spack_setup.sh - echo CC=gcc CXX=g++ FC=gfortran cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE $BUILD_CONFIG + source $SETUP + CC=gcc CXX=g++ FC=gfortran cmake $GITHUB_WORKSPACE $BUILD_CONFIG CC=gcc CXX=g++ FC=gfortran cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE $BUILD_CONFIG - name: Build working-directory: ${{ env.BUILD_DIRECTORY }} - timeout-minutes: 10 - shell: bash - # Execute the build. You can specify a specific target with "--target " run: | - source ${{github.workspace}}/.github/CI/spack_setup.sh + source $SETUP cmake --build . - name: Install working-directory: ${{ env.BUILD_DIRECTORY }} - timeout-minutes: 2 - shell: bash run: | - source ${{github.workspace}}/.github/CI/spack_setup.sh + source $SETUP cmake --build . --target install - name: Test if: ${{ startsWith(matrix.build_type, 'Release') }} working-directory: ${{ env.BUILD_DIRECTORY }} - timeout-minutes: 10 - shell: bash # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail # run: ctest -C $BUILD_TYPE run: | - source ${{github.workspace}}/.github/CI/spack_setup.sh - #ctest --output-on-failure -R 'build_tests|launcher|class|dplasma' + source $SETUP ctest --output-on-failure -R 'launcher|dplasma' -E lowmem # lowmem tests are busted atm - name: Save Artifact diff --git a/CMakeLists.txt b/CMakeLists.txt index 56ac451b..39d43c1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,6 +213,9 @@ if(NOT TARGET PaRSEC::parsec AND NOT TARGET PaRSEC::parsec_ptgpp) endif() endif(NOT EXISTS "${PROJECT_SOURCE_DIR}/parsec/CMakeLists.txt") + option(DPLASMA_GPU_WITH_CUDA "Use CUDA to accelerate DPLASMA routines" OFF) + option(DPLASMA_GPU_WITH_HIP "Use HIP to accelerate DPLASMA routines" OFF) + # TODO: submodule stuff from dplasma if(NOT EXISTS "${PROJECT_SOURCE_DIR}/parsec/CMakeLists.txt") message(FATAL_ERROR "The PaRSEC submodule was not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.") @@ -224,6 +227,8 @@ if(NOT TARGET PaRSEC::parsec AND NOT TARGET PaRSEC::parsec_ptgpp) # we need to make it an option here, so that cmake accept it and does the right thing (use the value # we need and not the default value provided to the first OPTION call. option(PARSEC_WITH_DEVEL_HEADERS "" ON) + option(PARSEC_GPU_WITH_CUDA "" "${DPLASMA_GPU_WITH_CUDA}") + option(PARSEC_GPU_WITH_HIP "" "${DPLASMA_GPU_WITH_HIP}") add_subdirectory(parsec) message(STATUS "# Configuring internal submodule PaRSEC runtime: DONE!") message(STATUS "########################################################################") @@ -235,7 +240,6 @@ endif(NOT TARGET PaRSEC::parsec AND NOT TARGET PaRSEC::parsec_ptgpp) ############################################################################ # Resume configuring dplasma -option(DPLASMA_GPU_WITH_CUDA "Use CUDA to accelerate DPLASMA routines" ${PARSEC_HAVE_CUDA}) if(DPLASMA_GPU_WITH_CUDA) if(NOT PARSEC_HAVE_CUDA) message(FATAL_ERROR "CUDA support for DPLASMA requested, but detected PaRSEC does not support it") @@ -246,7 +250,6 @@ if(DPLASMA_GPU_WITH_CUDA) endif(NOT TARGET CUDA::cusolver) set(DPLASMA_HAVE_CUDA ${PARSEC_HAVE_CUDA} CACHE BOOL "True if DPLASMA provide support for CUDA") endif() -option(DPLASMA_GPU_WITH_HIP "Use HIP to accelerate DPLASMA routines" ${PARSEC_HAVE_HIP}) if(DPLASMA_GPU_WITH_HIP) if(NOT PARSEC_HAVE_HIP) message(FATAL_ERROR "HIP support for DPLASMA requested, but detected PaRSEC does not support it")