Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI Update #62

Merged
merged 5 commits into from
Nov 15, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 113 additions & 10 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,36 @@ stages:

variables:
PROJECT_NAME: ports-of-call
ENABLE_CDASH: false
ENABLE_CDASH: true
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exciting

# use this variable if there is a xcap/deployment MR you want to use instead
# PROJECT_SPACK_ENV_VERSION: mr/62/2024-10-15

include:
- .gitlab/common.yml


########
# Jobs #
########
# Spack environments are defined in
# https://re-git.lanl.gov/xcap/deployment/-/tree/xcap-spack-env/systems
# for each system and for each XCAP project.
#
# The project configuration can be found at the top of
# .gitlab/build_and_test.sh.
#
# Each environment is uniquely identified by
# ${SYSTEM_NAME}/${PROJECT_GROUP}/${PROJECT_NAME}/${SPACK_ENV_NAME}
#
# For creating a new custom environment for testing use the special
# 'custom-spec' or 'custom-file` environments.
#
# The 'custom-spec` environment allows you specify an arbitrary Spack spec to
# be added to a system-specific empty Spack environment. Use the SPACK_ENV_SPEC
# environment variable to define the spec you want to add.

# The 'custom-file` environment allows you to manually define an environment
# from scratch. Use the SPACK_ENV_FILE environment variable to specify the
# path to the YAML file you want to use. Note, the environment will be placed
# in ${SYSTEM_NAME}/${PROJECT_GROUP}/${PROJECT_NAME}/custom-file/spack.yaml and
# can therefore make relative includes to common configuration files.
openmpi_gcc:
extends: [.ascgit_job, .darwin_job, .darwin_regular_job, .build_and_test]
variables:
Expand All @@ -26,17 +46,100 @@ openmpi_cuda_gcc_volta:
SCHEDULER_PARAMETERS: "-N 1 --qos=debug -p volta-x86 -C cpu_family:haswell --time=02:00:00"

openmpi_cuda_gcc_ampere:
extends: [.ascgit_job, .darwin_job, .build_and_test]
extends: [.ascgit_job, .darwin_job, .darwin_regular_job, .build_and_test]
variables:
SPACK_ENV_NAME: openmpi-cuda-gcc-ampere
SCHEDULER_PARAMETERS: "-N 1 --qos=debug -p shared-gpu-ampere"

rzvernal_craympich_rocm_mi250_gcc:
extends: [.ascgit_job, .rzadams_job, .rzvernal_regular_job, .build_and_test]
rzansel_spectrummpi_cuda_volta_gcc:
extends: [.ascgit_job, .rzansel_job, .rzansel_regular_job, .build_and_test]
needs: []
variables:
SPACK_ENV_NAME: spectrummpi-cuda-volta-gcc
SUBMIT_TO_CDASH: false # disable CDash submission, since LLNL systems can't reach them
BUILD_WITH_CTEST: "${ENABLE_CDASH}" # but do build with CTest to create the necessary files
SUBMIT_ON_ERROR: false # no network access, don't try to send from compute node
SUBMIT_AFTER: false # submit host also doesn't have access to CDash server
CREATE_SUBMIT_ARTIFACT: "${ENABLE_CDASH}" # archive results

rzansel_spectrummpi_cuda_volta_xl:
extends: [.ascgit_job, .rzansel_job, .rzansel_regular_job, .build_and_test]
needs: []
variables:
SPACK_ENV_NAME: spectrummpi-cuda-volta-xl
SUBMIT_TO_CDASH: false # disable CDash submission, since LLNL systems can't reach them
BUILD_WITH_CTEST: "${ENABLE_CDASH}" # but do build with CTest to create the necessary files
SUBMIT_ON_ERROR: false # no network access, don't try to send from compute node
SUBMIT_AFTER: false # submit host also doesn't have access to CDash server
CREATE_SUBMIT_ARTIFACT: "${ENABLE_CDASH}" # archive results

rzvernal_craympich_rocm_mi250_cce:
extends: [.ascgit_job, .rzvernal_job, .rzvernal_regular_job, .build_and_test]
needs: []
variables:
SPACK_ENV_NAME: craympich-rocm-gfx90a-gcc
SPACK_ENV_NAME: craympich-rocm-gfx90a-cce
SUBMIT_TO_CDASH: false # disable CDash submission, since LLNL systems can't reach them
BUILD_WITH_CTEST: "${ENABLE_CDASH}" # but do build with CTest to create the necessary files
SUBMIT_ON_ERROR: false # no network access, don't try to send from compute node
SUBMIT_AFTER: false # submit host also doesn't have access to CDash server
CREATE_SUBMIT_ARTIFACT: "${ENABLE_CDASH}" # archive results

rzadams_craympich_rocm_mi300_gcc:
rzadams_craympich_rocm_mi300_cce:
extends: [.ascgit_job, .rzadams_job, .rzadams_regular_job, .build_and_test]
needs: []
variables:
SPACK_ENV_NAME: craympich-rocm-gfx942-gcc
SPACK_ENV_NAME: craympich-rocm-gfx942-cce
SUBMIT_TO_CDASH: false # disable CDash submission, since LLNL systems can't reach them
BUILD_WITH_CTEST: "${ENABLE_CDASH}" # but do build with CTest to create the necessary files
SUBMIT_ON_ERROR: false # no network access, don't try to send from compute node
SUBMIT_AFTER: false # submit host also doesn't have access to CDash server
CREATE_SUBMIT_ARTIFACT: "${ENABLE_CDASH}" # archive results

# collect job results from RZansel and submit them to CDash
post_rzansel_results_to_cdash:
extends: [.post_results_to_cdash]
allow_failure: true
rules:
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "merge_request_event"
when: always
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "schedule"
when: always
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "web"
when: always
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: always
needs:
- rzansel_spectrummpi_cuda_volta_gcc
- rzansel_spectrummpi_cuda_volta_xl

# collect job results from RZvernal and submit them to CDash
post_rzvernal_results_to_cdash:
extends: [.post_results_to_cdash]
allow_failure: true
rules:
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "merge_request_event"
when: always
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "schedule"
when: always
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "web"
when: always
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: always
needs:
- rzvernal_craympich_rocm_mi250_cce

# collect job results from RZadams and submit them to CDash
post_rzadams_results_to_cdash:
extends: [.post_results_to_cdash]
allow_failure: true
rules:
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "merge_request_event"
when: always
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "schedule"
when: always
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "web"
when: always
- if: $ENABLE_CDASH == "true" && $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: always
needs:
- rzadams_craympich_rocm_mi300_cce
15 changes: 7 additions & 8 deletions .gitlab/common.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ default:
- if: $ENABLED_CLUSTERS =~ /darwin/ && $CI_PIPELINE_SOURCE == "schedule"
- if: $ENABLED_CLUSTERS =~ /darwin/ && $CI_PIPELINE_SOURCE == "pipeline"
- if: $ENABLED_CLUSTERS =~ /darwin/ && $CI_PIPELINE_SOURCE == "web"
- if: $ENABLED_CLUSTERS =~ /darwin/ && $CI_PIPELINE_SOURCE == "push"
- if: $ENABLED_CLUSTERS =~ /darwin/ && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

.darwin_regular_mr_only_job:
variables:
Expand All @@ -40,7 +40,6 @@ default:
- if: $ENABLED_CLUSTERS =~ /darwin/ && $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $ENABLED_CLUSTERS =~ /darwin/ && $CI_PIPELINE_SOURCE == "pipeline"
- if: $ENABLED_CLUSTERS =~ /darwin/ && $CI_PIPELINE_SOURCE == "web"
- if: $ENABLED_CLUSTERS =~ /darwin/ && $CI_PIPELINE_SOURCE == "push"

.darwin_regular_default_branch_only_job:
variables:
Expand Down Expand Up @@ -74,13 +73,13 @@ default:
- if: $ENABLED_CLUSTERS =~ /rocinante/ && $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $ENABLED_CLUSTERS =~ /rocinante/ && $CI_PIPELINE_SOURCE == "schedule"
- if: $ENABLED_CLUSTERS =~ /rocinante/ && $CI_PIPELINE_SOURCE == "web"
- if: $ENABLED_CLUSTERS =~ /rocinante/ && $CI_PIPELINE_SOURCE == "push"
- if: $ENABLED_CLUSTERS =~ /rocinante/ && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

.venado_job:
allow_failure: true
variables:
CLUSTER: venado
SCHEDULER_PARAMETERS: "-N 1 -p standard --time=02:00:00"
SCHEDULER_PARAMETERS: "-N 1 -A lanl_ai_g -p gpu --time=02:00:00"
tags:
- venado
- batch
Expand All @@ -100,7 +99,7 @@ default:
- if: $ENABLED_CLUSTERS =~ /venado/ && $GITLAB_USER_LOGIN =~ $VENADO_USERS && $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $ENABLED_CLUSTERS =~ /venado/ && $GITLAB_USER_LOGIN =~ $VENADO_USERS && $CI_PIPELINE_SOURCE == "schedule"
- if: $ENABLED_CLUSTERS =~ /venado/ && $GITLAB_USER_LOGIN =~ $VENADO_USERS && $CI_PIPELINE_SOURCE == "web"
- if: $ENABLED_CLUSTERS =~ /venado/ && $GITLAB_USER_LOGIN =~ $VENADO_USERS && $CI_PIPELINE_SOURCE == "push"
- if: $ENABLED_CLUSTERS =~ /venado/ && $GITLAB_USER_LOGIN =~ $VENADO_USERS && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

.rzansel_job:
allow_failure: true
Expand All @@ -118,7 +117,7 @@ default:
- if: $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "schedule"
- if: $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "web"
- if: $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "push"
- if: $ENABLED_CLUSTERS =~ /rzansel/ && $GITLAB_USER_LOGIN =~ $RZANSEL_USERS && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

.rzvernal_job:
allow_failure: true
Expand All @@ -137,7 +136,7 @@ default:
- if: $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "schedule"
- if: $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "web"
- if: $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "push"
- if: $ENABLED_CLUSTERS =~ /rzvernal/ && $GITLAB_USER_LOGIN =~ $RZVERNAL_USERS && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

.rzadams_job:
allow_failure: true
Expand All @@ -156,7 +155,7 @@ default:
- if: $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "schedule"
- if: $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "web"
- if: $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "push"
- if: $ENABLED_CLUSTERS =~ /rzadams/ && $GITLAB_USER_LOGIN =~ $RZADAMS_USERS && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

.build_and_test:
stage: build_n_test
Expand Down
15 changes: 8 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ target_compile_features(${POCLIB}
# ----------------------------------------
if(PORTS_OF_CALL_BUILD_TESTING)
message(STATUS "Configuring tests")
enable_testing()
include(CTest)
add_subdirectory(test)
endif()

Expand Down Expand Up @@ -148,7 +148,7 @@ export(

include(config_summary)

config_summary_header("Ports-of-Call" "ports-of-call" 30) # 30 characters seems wide enough
config_summary_header("Ports-of-Call" "ports-of-call" 48)

config_summary_block("CMake Options")
config_summary_variable("CMAKE_BUILD_TYPE")
Expand All @@ -159,13 +159,14 @@ config_summary_variable("CMAKE_CXX_COMPILER")
config_summary_variable("CMAKE_CXX_COMPILER_VERSION")
config_summary_variable("CMAKE_CXX_FLAGS")

config_summary_block("Dependencies")
config_summary_dependency("Kokkos" "Kokkos") # Should this always be listed?
if(PORTS_OF_CALL_BUILD_TESTING)
config_summary_block("Dependencies")
config_summary_dependency("Kokkos" "Kokkos")
config_summary_dependency("Catch2" "Catch2")
endif()

config_summary_block("User Options") # Are these the right user options?
config_summary_option("PORTS_OF_CALL_BUILD_TESTING")
config_summary_option("PORTABILITY_STRATEGY_CUDA")
config_summary_option("PORTABILITY_STRATEGY_KOKKOS")
config_summary_option("PORTABILITY_STRATEGY_NONE")
config_summary_variable("PORTS_OF_CALL_TEST_PORTABILITY_STRATEGY")

config_summary_print()
2 changes: 2 additions & 0 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ if(NOT TARGET Catch2::Catch2)
FetchContent_MakeAvailable(Catch2)
list(APPEND CMAKE_MODULE_PATH ${Catch2_SOURCE_DIR}/contrib)
endif()
set(Catch2_VERSION "${Catch2_VERSION}" PARENT_SCOPE)
endif()

# this interface target is to collect
Expand All @@ -42,6 +43,7 @@ if (PORTS_OF_CALL_TEST_PORTABILITY_STRATEGY STREQUAL "Kokkos")
GIT_TAG 4.3.01)
FetchContent_MakeAvailable(Kokkos)
endif()
set(Kokkos_VERSION "${Kokkos_VERSION}" PARENT_SCOPE)
endif()

target_link_libraries(portsofcall_iface INTERFACE Kokkos::kokkos)
Expand Down
Loading