diff --git a/scripts/dashboard/EnvironmentModules.cmake b/scripts/dashboard/EnvironmentModules.cmake new file mode 100644 index 0000000000000000000000000000000000000000..60328e38b6bad7b7bfa5b86854b3805444866efc --- /dev/null +++ b/scripts/dashboard/EnvironmentModules.cmake @@ -0,0 +1,207 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#.rst: +# EnvironmentModules +# ------------------ +# +# Make environment module commands available to CMake scripts. This module +# is compatible with both Lua based Lmod and TCL based EnvironmentModules +# +# Module Command +# ^^^^^^^^^^^^^^ +# +# This module searched for the module command in the following variable: +# +# :: +# +# MODULE_COMMAND - The low level module command to use. Currently supported +# are implementations are the Lua based Lmod and TCL based +# EnvironmentModules. The ENV{MODULESHOME} variable, +# usually set by the module environment, is used as a hint +# to locate the command. +# +# Provided Functions +# ^^^^^^^^^^^^^^^^^^ +# +# This module defines the following functions: +# +# :: +# +# module(...) - Execute an arbitry module command +# module_swap(out_mod in_mod) - Swap out one currently loaded module for +# another +# module_list(out_var) - Retrieve the currently loaded modules, +# making the output available as a properly +# formatted CMake ;list variable. +# module_avail(out_var) - Retrieve the availabe modules that can be +# loaded, making the output available as a +# properly formatted CMake ;-seperated list +# variable. + +# Execute an aribitrary module command. Usage: +# module(cmd arg1 ... argN) +# Process the given command and arguments as if they were passed +# directly to the module command in your shell environment. +# module( +# COMMAND cmd arg1 .. argN +# [OUTPUT_VARIABLE out_var] +# [RESULT_VARIABLE ret_var] +# ) +function(module) + if(NOT MODULE_COMMAND) + message(ERROR "Failed to process module command. MODULE_COMMAND not found") + return() + endif() + + set(options) + set(oneValueArgs OUTPUT_VARIABLE RESULT_VARIABLE) + set(multiValueArgs COMMAND) + cmake_parse_arguments(MOD_ARGS + "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV} + ) + if(NOT MOD_ARGS_COMMAND) + # If no explicit command argument was given, then treat the calling syntax + # as: module(cmd args...) + set(exec_cmd ${ARGV}) + else() + set(exec_cmd ${MOD_ARGS_COMMAND}) + endif() + + if(MOD_ARGS_OUTPUT_VARIABLE) + set(err_var_args ERROR_VARIABLE err_var) + endif() + + execute_process( + COMMAND mktemp -t module.cmake.XXXXXXXXXXXX + OUTPUT_VARIABLE tempfile_name + ) + string(STRIP "${tempfile_name}" tempfile_name) + + # If the $MODULESHOME/init/cmake file exists then assume that the CMake + # "shell" functionality exits + if(EXISTS "$ENV{MODULESHOME}/init/cmake") + execute_process( + COMMAND ${MODULE_COMMAND} cmake ${exec_cmd} + OUTPUT_FILE ${tempfile_name} + ${err_var_args} + RESULT_VARIABLE ret_var + ) + else() # fallback to the sh shell and manually convert to CMake + execute_process( + COMMAND ${MODULE_COMMAND} sh ${exec_cmd} + OUTPUT_VARIABLE out_var + ${err_var_args} + RESULT_VARIABLE ret_var + ) + endif() + + # If we executed successfully then process and cleanup the temp file + if("${ret_var}" EQUAL 0) + # No CMake shell so we need to process the sh output into CMake code + if(NOT EXISTS "$ENV{MODULESHOME}/init/cmake") + file(WRITE ${tempfile_name} "") + string(REPLACE "\n" ";" out_var "${out_var}") + foreach(sh_cmd IN LISTS out_var) + if(sh_cmd MATCHES "^ *unset *([^ ]*)") + set(cmake_cmd "unset(ENV{${CMAKE_MATCH_1}})") + elseif(sh_cmd MATCHES "^ *export *([^ ]*)") + set(cmake_cmd "set(ENV{${CMAKE_MATCH_1}} \"\${${CMAKE_MATCH_1}}\")") + elseif(sh_cmd MATCHES " *([^ =]*) *= *(.*)") + set(var_name "${CMAKE_MATCH_1}") + set(var_value "${CMAKE_MATCH_2}") + if(var_value MATCHES "^\"(.*[^\\])\"") + # If it's in quotes, take the value as is + set(var_value "${CMAKE_MATCH_1}") + else() + # Otherwise, strip trailing spaces + string(REGEX REPLACE "([^\\])? +$" "\\1" var_value "${var_value}") + endif() + string(REPLACE "\\ " " " var_value "${var_value}") + set(cmake_cmd "set(${var_name} \"${var_value}\")") + else() + continue() + endif() + file(APPEND ${tempfile_name} "${cmake_cmd}\n") + endforeach() + endif() + + # Process the change in environment variables + include(${tempfile_name}) + file(REMOVE ${tempfile_name}) + endif() + + # Push the output back out to the calling scope + if(MOD_ARGS_OUTPUT_VARIABLE) + set(${MOD_ARGS_OUTPUT_VARIABLE} "${err_var}" PARENT_SCOPE) + endif() + if(MOD_ARGS_RESULT_VARIABLE) + set(${MOD_ARGS_RESULT_VARIABLE} ${ret_var} PARENT_SCOPE) + endif() +endfunction(module) + +# Swap one module for another +function(module_swap out_mod in_mod) + module(COMMAND -t swap ${out_mod} ${in_mod} OUTPUT_VARIABLE tmp_out) +endfunction() + +# Retrieve the currently loaded modules +function(module_list out_var) + cmake_policy(SET CMP0007 NEW) + module(COMMAND -t list OUTPUT_VARIABLE tmp_out) + + # Convert output into a CMake list + string(REPLACE "\n" ";" ${out_var} "${tmp_out}") + + # Remove title headers and empty entries + list(REMOVE_ITEM ${out_var} "No modules loaded") + if(${out_var}) + list(FILTER ${out_var} EXCLUDE REGEX "^(.*:)?$") + endif() + list(FILTER ${out_var} EXCLUDE REGEX "^(.*:)?$") + + set(${out_var} ${${out_var}} PARENT_SCOPE) +endfunction() + +# Retrieve the list of available modules +function(module_avail out_var) + cmake_policy(SET CMP0007 NEW) + module(COMMAND -t avail OUTPUT_VARIABLE tmp_out) + + # Convert output into a CMake list + string(REPLACE "\n" ";" tmp_out "${tmp_out}") + + set(${out_var}) + foreach(MOD IN LISTS tmp_out) + # Remove directory entries and empty values + if(MOD MATCHES "^(.*:)?$") + continue() + endif() + + # Convert default modules + if(MOD MATCHES "^(.*)/$" ) # "foo/" + list(APPEND ${out_var} ${CMAKE_MATCH_1}) + elseif(MOD MATCHES "^((.*)/.*)\\(default\\)$") # "foo/1.2.3(default)" + list(APPEND ${out_var} ${CMAKE_MATCH_2}) + list(APPEND ${out_var} ${CMAKE_MATCH_1}) + else() + list(APPEND ${out_var} ${MOD}) + endif() + endforeach() + + set(${out_var} ${${out_var}} PARENT_SCOPE) +endfunction() + +# Make sure our CMake is new enough +if(CMAKE_VERSION VERSION_LESS 3.6) + message(FATAL_ERROR + "The EnvironmentModules interface requires at least CMake v3.6" + ) +endif() + +# Make sure we know where the underlying module command is +find_program(MODULE_COMMAND + NAMES lmod modulecmd + HINTS ENV MODULESHOME + PATH_SUFFIXES libexec +) diff --git a/scripts/dashboard/common.cmake b/scripts/dashboard/common.cmake index aa3649705e5fc695c27f5e36340e0756e0a9bb42..2f029d8b04f3c3694dd08e7d88a675735e299246 100644 --- a/scripts/dashboard/common.cmake +++ b/scripts/dashboard/common.cmake @@ -40,6 +40,8 @@ # dashboard_do_test = True to enable the Test step # dashboard_do_coverage = True to enable coverage (ex: gcov) # dashboard_do_memcheck = True to enable memcheck (ex: valgrind) +# dashboard_do_submit = Submit each step (ON) +# dashboard_do_submit_only = Only submit step results, do nto run them (OFF) # CTEST_GIT_COMMAND = path to git command-line client # CTEST_BUILD_FLAGS = build tool arguments (ex: -j2) @@ -107,6 +109,14 @@ if(NOT DEFINED dashboard_fresh) endif() endif() +if(NOT DEFINED dashboard_do_submit_only) + set(dashboard_do_submit_only FALSE) +endif() + +if(NOT DEFINED dashboard_do_submit) + set(dashboard_do_submit TRUE) +endif() + if(NOT DEFINED CTEST_PROJECT_NAME) message(FATAL_ERROR "project-specific script including 'universal.cmake' should set CTEST_PROJECT_NAME") endif() @@ -367,7 +377,9 @@ if(dashboard_fresh) dashboard_hook_start() endif() ctest_start(${dashboard_model} ${dashboard_track_arg}) - ctest_submit(PARTS Start) + if(dashboard_do_submit) + ctest_submit(PARTS Start) + endif() if(COMMAND dashboard_hook_started) dashboard_hook_started() endif() @@ -377,85 +389,109 @@ endif() # Look for updates. if(dashboard_do_update) - if(COMMAND dashboard_hook_update) - dashboard_hook_update() + if(NOT dashboard_do_submit_only) + if(COMMAND dashboard_hook_update) + dashboard_hook_update() + endif() + message("Calling ctest_update...") + ctest_update(RETURN_VALUE count) + set(CTEST_CHECKOUT_COMMAND) # checkout on first iteration only + message("Found ${count} changed files") endif() - message("Calling ctest_update...") - ctest_update(RETURN_VALUE count) - set(CTEST_CHECKOUT_COMMAND) # checkout on first iteration only - message("Found ${count} changed files") - - if(ADIOS_CTEST_SUBMIT_NOTES) - message("Submitting dashboard scripts as Notes") - # Send the main script as a note while submitting the Update part - set(CTEST_NOTES_FILES - "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}" - "${CMAKE_CURRENT_LIST_FILE}" - ) - ctest_submit(PARTS Update Notes) - else() - message("Skipping notes submission for Update step") - ctest_submit(PARTS Update) + + if(dashboard_do_submit) + if(ADIOS_CTEST_SUBMIT_NOTES) + message("Submitting dashboard scripts as Notes") + # Send the main script as a note while submitting the Update part + set(CTEST_NOTES_FILES + "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}" + "${CMAKE_CURRENT_LIST_FILE}" + ) + ctest_submit(PARTS Update Notes) + else() + message("Skipping notes submission for Update step") + ctest_submit(PARTS Update) + endif() endif() endif() if(dashboard_do_configure) - if(COMMAND dashboard_hook_configure) - dashboard_hook_configure() + if(NOT dashboard_do_submit_only) + if(COMMAND dashboard_hook_configure) + dashboard_hook_configure() + endif() + message("Calling ctest_configure") + ctest_configure(${dashboard_configure_args}) endif() - message("Calling ctest_configure") - ctest_configure(${dashboard_configure_args}) - if(ADIOS_CTEST_SUBMIT_NOTES) - message("Submitting CMakeCache.txt as Notes") - set(CTEST_NOTES_FILES "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt") - ctest_submit(PARTS Configure Notes) - else() - message("Skipping notes submission for Configure step") - ctest_submit(PARTS Configure) + if(dashboard_do_submit) + if(ADIOS_CTEST_SUBMIT_NOTES) + message("Submitting CMakeCache.txt as Notes") + set(CTEST_NOTES_FILES "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt") + ctest_submit(PARTS Configure Notes) + else() + message("Skipping notes submission for Configure step") + ctest_submit(PARTS Configure) + endif() endif() endif() ctest_read_custom_files(${CTEST_BINARY_DIRECTORY}) if(dashboard_do_build) - if(COMMAND dashboard_hook_build) - dashboard_hook_build() + if(NOT dashboard_do_submit_only) + if(COMMAND dashboard_hook_build) + dashboard_hook_build() + endif() + message("Calling ctest_build") + ctest_build() + endif() + if(dashboard_do_submit) + ctest_submit(PARTS Build) endif() - message("Calling ctest_build") - ctest_build() - ctest_submit(PARTS Build) endif() if(dashboard_do_test) - if(COMMAND dashboard_hook_test) - dashboard_hook_test() + if(NOT dashboard_do_submit_only) + if(COMMAND dashboard_hook_test) + dashboard_hook_test() + endif() + message("Calling ctest_test") + ctest_test(${CTEST_TEST_ARGS} RETURN_VALUE TEST_RESULTS) + if(${TEST_RESULTS} EQUAL 0) + message("ctest test results return value: ${TEST_RESULTS}") + else() + message(SEND_ERROR "Some tests failed") + endif() endif() - message("Calling ctest_test") - ctest_test(${CTEST_TEST_ARGS} RETURN_VALUE TEST_RESULTS) - if(${TEST_RESULTS} EQUAL 0) - message("ctest test results return value: ${TEST_RESULTS}") - else() - message(SEND_ERROR "Some tests failed") + if(dashboard_do_submit) + ctest_submit(PARTS Test) endif() - ctest_submit(PARTS Test) endif() if(dashboard_do_coverage) - if(COMMAND dashboard_hook_coverage) - dashboard_hook_coverage() + if(NOT dashboard_do_submit_only) + if(COMMAND dashboard_hook_coverage) + dashboard_hook_coverage() + endif() + message("Calling ctest_coverage") + ctest_coverage() + endif() + if(dashboard_do_submit) + ctest_submit(PARTS Coverage) endif() - message("Calling ctest_coverage") - ctest_coverage() - ctest_submit(PARTS Coverage) endif() if(dashboard_do_memcheck) - if(COMMAND dashboard_hook_memcheck) - dashboard_hook_memcheck() + if(NOT dashboard_do_submit_only) + if(COMMAND dashboard_hook_memcheck) + dashboard_hook_memcheck() + endif() + message("Calling ctest_memcheck") + ctest_memcheck() + endif() + if(dashboard_do_submit) + ctest_submit(PARTS MemCheck) endif() - message("Calling ctest_memcheck") - ctest_memcheck() - ctest_submit(PARTS MemCheck) endif() if(COMMAND dashboard_hook_end) diff --git a/scripts/dashboard/nightly/summitdev-gcc-nompi.cmake b/scripts/dashboard/nightly/summitdev-gcc-nompi.cmake new file mode 100644 index 0000000000000000000000000000000000000000..26036323714c96597c2c03ebdf2d3ef5890a7726 --- /dev/null +++ b/scripts/dashboard/nightly/summitdev-gcc-nompi.cmake @@ -0,0 +1,35 @@ +# Client maintainer: chuck.atkins@kitware.com +set(CTEST_SITE "SummitDev") +set(CTEST_BUILD_CONFIGURATION Release) +set(CTEST_CMAKE_GENERATOR "Unix Makefiles") +set(CTEST_BUILD_FLAGS "-k -j10") +set(CTEST_TEST_ARGS PARALLEL_LEVEL 10) + +set(CTEST_BUILD_NAME "Linux-EL7-PPC64LE_GCC-7.1.0_NoMPI") +set(dashboard_model Nightly) +set(CTEST_DASHBOARD_ROOT ${CMAKE_CURRENT_BINARY_DIR}/${CTEST_BUILD_NAME}) + + +include(${CMAKE_CURRENT_LIST_DIR}/../EnvironmentModules.cmake) +module(purge) +module(load git) +module(load gcc/7.1.0) +module(load hdf5) + +set(ENV{CC} gcc) +set(ENV{CXX} g++) +set(ENV{FC} gfortran) + +set(dashboard_cache " +#ADIOS2_USE_ADIOS1:STRING=ON +#ADIOS2_USE_BZip2:STRING=ON +#ADIOS2_USE_DataMan:STRING=ON +ADIOS2_USE_Fortran:STRING=ON +#ADIOS2_USE_HDF5:STRING=ON +#ADIOS2_USE_MPI:STRING=ON +#ADIOS2_USE_Python:STRING=ON +#ADIOS2_USE_ZFP:STRING=ON +#ADIOS2_USE_ZeroMQ:STRING=ON +") + +include(${CMAKE_CURRENT_LIST_DIR}/../adios_common.cmake) diff --git a/scripts/dashboard/nightly/summitdev-gcc-spectrum.cmake b/scripts/dashboard/nightly/summitdev-gcc-spectrum.cmake new file mode 100644 index 0000000000000000000000000000000000000000..2f295be576cb39e00d2a882faa737ec9dc4a0e3a --- /dev/null +++ b/scripts/dashboard/nightly/summitdev-gcc-spectrum.cmake @@ -0,0 +1,41 @@ +# Client maintainer: chuck.atkins@kitware.com +set(CTEST_SITE "SummitDev") +set(CTEST_BUILD_CONFIGURATION Release) +set(CTEST_CMAKE_GENERATOR "Unix Makefiles") +set(CTEST_BUILD_FLAGS "-k -j10") +set(CTEST_TEST_ARGS PARALLEL_LEVEL 1) + +set(CTEST_BUILD_NAME "Linux-EL7-PPC64LE_GCC-7.1.0_SpectrumMPI") +set(dashboard_model Nightly) +set(CTEST_DASHBOARD_ROOT ${CMAKE_CURRENT_BINARY_DIR}/${CTEST_BUILD_NAME}) + + +include(${CMAKE_CURRENT_LIST_DIR}/../EnvironmentModules.cmake) +module(purge) +module(load git) +module(load gcc/7.1.0) +module(load spectrum-mpi) +module(load lsf-tools) +module(load hdf5) + +set(ENV{CC} gcc) +set(ENV{CXX} g++) +set(ENV{FC} gfortran) + +set(dashboard_cache " +#ADIOS2_USE_ADIOS1:STRING=ON +#ADIOS2_USE_BZip2:STRING=ON +#ADIOS2_USE_DataMan:STRING=ON +ADIOS2_USE_Fortran:STRING=ON +#ADIOS2_USE_HDF5:STRING=ON +ADIOS2_USE_MPI:STRING=ON +#ADIOS2_USE_Python:STRING=ON +#ADIOS2_USE_ZFP:STRING=ON +#ADIOS2_USE_ZeroMQ:STRING=ON + +MPIEXEC_EXECUTABLE:FILEPATH=jsrun +MPIEXEC_MAX_NUMPROCS:STRING= +MPIEXEC_NUMPROC_FLAG:STRING=-n4;-r2;-a10 +") + +include(${CMAKE_CURRENT_LIST_DIR}/../adios_common.cmake) diff --git a/scripts/dashboard/nightly/summitdev-pgi-nompi.cmake b/scripts/dashboard/nightly/summitdev-pgi-nompi.cmake new file mode 100644 index 0000000000000000000000000000000000000000..03a69494784c808bd5bf80f0f689c52cd743348f --- /dev/null +++ b/scripts/dashboard/nightly/summitdev-pgi-nompi.cmake @@ -0,0 +1,35 @@ +# Client maintainer: chuck.atkins@kitware.com +set(CTEST_SITE "SummitDev") +set(CTEST_BUILD_CONFIGURATION Release) +set(CTEST_CMAKE_GENERATOR "Unix Makefiles") +set(CTEST_BUILD_FLAGS "-k -j10") +set(CTEST_TEST_ARGS PARALLEL_LEVEL 10) + +set(CTEST_BUILD_NAME "Linux-EL7-PPC64LE_PGI-17.9_NoMPI") +set(dashboard_model Nightly) +set(CTEST_DASHBOARD_ROOT ${CMAKE_CURRENT_BINARY_DIR}/${CTEST_BUILD_NAME}) + + +include(${CMAKE_CURRENT_LIST_DIR}/../EnvironmentModules.cmake) +module(purge) +module(load git) +module(load pgi/17.9) +module(load hdf5) + +set(ENV{CC} pgcc) +set(ENV{CXX} pgc++) +set(ENV{FC} pgfortran) + +set(dashboard_cache " +#ADIOS2_USE_ADIOS1:STRING=ON +#ADIOS2_USE_BZip2:STRING=ON +#ADIOS2_USE_DataMan:STRING=ON +ADIOS2_USE_Fortran:STRING=ON +#ADIOS2_USE_HDF5:STRING=ON +#ADIOS2_USE_MPI:STRING=ON +#ADIOS2_USE_Python:STRING=ON +#ADIOS2_USE_ZFP:STRING=ON +#ADIOS2_USE_ZeroMQ:STRING=ON +") + +include(${CMAKE_CURRENT_LIST_DIR}/../adios_common.cmake) diff --git a/scripts/dashboard/nightly/summitdev-pgi-spectrum.cmake b/scripts/dashboard/nightly/summitdev-pgi-spectrum.cmake new file mode 100644 index 0000000000000000000000000000000000000000..964a946b791d3710b8deab4f1f307e6c1e393a73 --- /dev/null +++ b/scripts/dashboard/nightly/summitdev-pgi-spectrum.cmake @@ -0,0 +1,41 @@ +# Client maintainer: chuck.atkins@kitware.com +set(CTEST_SITE "SummitDev") +set(CTEST_BUILD_CONFIGURATION Release) +set(CTEST_CMAKE_GENERATOR "Unix Makefiles") +set(CTEST_BUILD_FLAGS "-k -j10") +set(CTEST_TEST_ARGS PARALLEL_LEVEL 1) + +set(CTEST_BUILD_NAME "Linux-EL7-PPC64LE_PGI-17.9_SpectrumMPI") +set(dashboard_model Nightly) +set(CTEST_DASHBOARD_ROOT ${CMAKE_CURRENT_BINARY_DIR}/${CTEST_BUILD_NAME}) + + +include(${CMAKE_CURRENT_LIST_DIR}/../EnvironmentModules.cmake) +module(purge) +module(load git) +module(load pgi/17.9) +module(load spectrum-mpi) +module(load lsf-tools) +module(load hdf5) + +set(ENV{CC} pgcc) +set(ENV{CXX} pgc++) +set(ENV{FC} pgfortran) + +set(dashboard_cache " +#ADIOS2_USE_ADIOS1:STRING=ON +#ADIOS2_USE_BZip2:STRING=ON +#ADIOS2_USE_DataMan:STRING=ON +ADIOS2_USE_Fortran:STRING=ON +#ADIOS2_USE_HDF5:STRING=ON +ADIOS2_USE_MPI:STRING=ON +#ADIOS2_USE_Python:STRING=ON +#ADIOS2_USE_ZFP:STRING=ON +#ADIOS2_USE_ZeroMQ:STRING=ON + +MPIEXEC_EXECUTABLE:FILEPATH=jsrun +MPIEXEC_MAX_NUMPROCS:STRING= +MPIEXEC_NUMPROC_FLAG:STRING=-n4;-r2;-a10 +") + +include(${CMAKE_CURRENT_LIST_DIR}/../adios_common.cmake) diff --git a/scripts/dashboard/nightly/summitdev-spectrum-tests.lsf b/scripts/dashboard/nightly/summitdev-spectrum-tests.lsf new file mode 100755 index 0000000000000000000000000000000000000000..c900985efc7bdcd18aafb5d4c2ca7fbd7239fa26 --- /dev/null +++ b/scripts/dashboard/nightly/summitdev-spectrum-tests.lsf @@ -0,0 +1,25 @@ +#!/bin/bash +#BSUB -P CSC143SUMMITDEV +#BSUB -W 01:00 +#BSUB -nnodes 2 + +module purge +module load git cmake + +CTEST=$(which ctest) +SCRIPT_DIR=${PWD}/source/scripts/dashboard/nightly + +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-gcc-spectrum.cmake \ + -Ddashboard_full=OFF \ + -Ddashboard_do_test=ON \ + -Ddashboard_do_submit=OFF 2>&1 1>>summitdev-gcc-spectrum.log + +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-xl-spectrum.cmake \ + -Ddashboard_full=OFF \ + -Ddashboard_do_test=ON \ + -Ddashboard_do_submit=OFF 2>&1 1>>summitdev-xl-spectrum.log + +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-pgi-spectrum.cmake \ + -Ddashboard_full=OFF \ + -Ddashboard_do_test=ON \ + -Ddashboard_do_submit=OFF 2>&1 1>>summitdev-pgi-spectrum.log diff --git a/scripts/dashboard/nightly/summitdev-xl-nompi.cmake b/scripts/dashboard/nightly/summitdev-xl-nompi.cmake new file mode 100644 index 0000000000000000000000000000000000000000..e0f2f97e096d77b50e028250259b838b5676ba3f --- /dev/null +++ b/scripts/dashboard/nightly/summitdev-xl-nompi.cmake @@ -0,0 +1,35 @@ +# Client maintainer: chuck.atkins@kitware.com +set(CTEST_SITE "SummitDev") +set(CTEST_BUILD_CONFIGURATION Release) +set(CTEST_CMAKE_GENERATOR "Unix Makefiles") +set(CTEST_BUILD_FLAGS "-k -j10") +set(CTEST_TEST_ARGS PARALLEL_LEVEL 10) + +set(CTEST_BUILD_NAME "Linux-EL7-PPC64LE_XL-13.1.5_NoMPI") +set(dashboard_model Nightly) +set(CTEST_DASHBOARD_ROOT ${CMAKE_CURRENT_BINARY_DIR}/${CTEST_BUILD_NAME}) + + +include(${CMAKE_CURRENT_LIST_DIR}/../EnvironmentModules.cmake) +module(purge) +module(load git) +module(load xl) +module(load hdf5) + +set(ENV{CC} xlc) +set(ENV{CXX} xlC) +set(ENV{FC} xlf) + +set(dashboard_cache " +#ADIOS2_USE_ADIOS1:STRING=ON +#ADIOS2_USE_BZip2:STRING=ON +#ADIOS2_USE_DataMan:STRING=ON +ADIOS2_USE_Fortran:STRING=ON +#ADIOS2_USE_HDF5:STRING=ON +#ADIOS2_USE_MPI:STRING=ON +#ADIOS2_USE_Python:STRING=ON +#ADIOS2_USE_ZFP:STRING=ON +#ADIOS2_USE_ZeroMQ:STRING=ON +") + +include(${CMAKE_CURRENT_LIST_DIR}/../adios_common.cmake) diff --git a/scripts/dashboard/nightly/summitdev-xl-spectrum.cmake b/scripts/dashboard/nightly/summitdev-xl-spectrum.cmake new file mode 100644 index 0000000000000000000000000000000000000000..cf069b57fd7126b98c22bbb7eaead33bde7f27b8 --- /dev/null +++ b/scripts/dashboard/nightly/summitdev-xl-spectrum.cmake @@ -0,0 +1,41 @@ +# Client maintainer: chuck.atkins@kitware.com +set(CTEST_SITE "SummitDev") +set(CTEST_BUILD_CONFIGURATION Release) +set(CTEST_CMAKE_GENERATOR "Unix Makefiles") +set(CTEST_BUILD_FLAGS "-k -j10") +set(CTEST_TEST_ARGS PARALLEL_LEVEL 1) + +set(CTEST_BUILD_NAME "Linux-EL7-PPC64LE_XL-13.1.5_SpectrumMPI") +set(dashboard_model Nightly) +set(CTEST_DASHBOARD_ROOT ${CMAKE_CURRENT_BINARY_DIR}/${CTEST_BUILD_NAME}) + + +include(${CMAKE_CURRENT_LIST_DIR}/../EnvironmentModules.cmake) +module(purge) +module(load git) +module(load xl) +module(load spectrum-mpi) +module(load lsf-tools) +module(load hdf5) + +set(ENV{CC} xlc) +set(ENV{CXX} xlC) +set(ENV{FC} xlf) + +set(dashboard_cache " +#ADIOS2_USE_ADIOS1:STRING=ON +#ADIOS2_USE_BZip2:STRING=ON +#ADIOS2_USE_DataMan:STRING=ON +ADIOS2_USE_Fortran:STRING=ON +#ADIOS2_USE_HDF5:STRING=ON +ADIOS2_USE_MPI:STRING=ON +#ADIOS2_USE_Python:STRING=ON +#ADIOS2_USE_ZFP:STRING=ON +#ADIOS2_USE_ZeroMQ:STRING=ON + +MPIEXEC_EXECUTABLE:FILEPATH=jsrun +MPIEXEC_MAX_NUMPROCS:STRING= +MPIEXEC_NUMPROC_FLAG:STRING=-n4;-r2;-a10 +") + +include(${CMAKE_CURRENT_LIST_DIR}/../adios_common.cmake) diff --git a/scripts/dashboard/nightly/summitdev.sh b/scripts/dashboard/nightly/summitdev.sh new file mode 100755 index 0000000000000000000000000000000000000000..ad012f3631c9285bd735e25952ce74ce5163b0fe --- /dev/null +++ b/scripts/dashboard/nightly/summitdev.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +mkdir -p ${HOME}/dashboards/summitdev/adios2 +cd ${HOME}/dashboards/summitdev/adios2 + +module purge +module load git cmake lsf-tools + +CTEST=$(which ctest) + +if [ ! -d source/.git ] +then + git clone https://github.com/ornladios/adios2.git source +else + pushd source + git fetch --all -p + git checkout -f master + git pull --ff-only + popd +fi +SCRIPT_DIR=${PWD}/source/scripts/dashboard/nightly + +# First run the serial tests +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-gcc-nompi.cmake 2>&1 1>summitdev-gcc-nompi.log +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-xl-nompi.cmake 2>&1 1>summitdev-xl-nompi.log +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-pgi-nompi.cmake 2>&1 1>summitdev-pgi-nompi.log + +# Now run the configure and build steps for the MPI tests +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-gcc-spectrum.cmake \ + -Ddashboard_full=OFF \ + -Ddashboard_fresh=ON \ + -Ddashboard_do_checkout=ON \ + -Ddashboard_do_update=ON \ + -Ddashboard_do_configure=ON \ + -Ddashboard_do_build=ON 2>&1 1>summitdev-gcc-spectrum.log + +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-xl-spectrum.cmake \ + -Ddashboard_full=OFF \ + -Ddashboard_fresh=ON \ + -Ddashboard_do_checkout=ON \ + -Ddashboard_do_update=ON \ + -Ddashboard_do_configure=ON \ + -Ddashboard_do_build=ON 2>&1 1>summitdev-xl-spectrum.log + +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-pgi-spectrum.cmake \ + -Ddashboard_full=OFF \ + -Ddashboard_fresh=ON \ + -Ddashboard_do_checkout=ON \ + -Ddashboard_do_update=ON \ + -Ddashboard_do_configure=ON \ + -Ddashboard_do_build=ON 2>&1 1>summitdev-pgi-spectrum.log + +# Now run the MPI tests in a batch job +bsub -P CSC143SUMMITDEV -W 00:30 -nnodes 2 -I \ + ${SCRIPT_DIR}/summitdev-spectrum-tests.lsf + +# Finaly submit the test results from the batch job +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-gcc-spectrum.cmake \ + -Ddashboard_full=OFF \ + -Ddashboard_do_test=ON \ + -Ddashboard_do_submit_only=ON 2>&1 1>>summitdev-gcc-spectrum.log + +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-xl-spectrum.cmake \ + -Ddashboard_full=OFF \ + -Ddashboard_do_test=ON \ + -Ddashboard_do_submit_only=ON 2>&1 1>>summitdev-xl-spectrum.log + +${CTEST} -VV -S ${SCRIPT_DIR}/summitdev-pgi-spectrum.cmake \ + -Ddashboard_full=OFF \ + -Ddashboard_do_test=ON \ + -Ddashboard_do_submit_only=ON 2>&1 1>>summitdev-pgi-spectrum.log