From c28ad64d4fa9df9cbd16d526bbbc8dc3eec4b86a Mon Sep 17 00:00:00 2001 From: Michael Waxmonsky Date: Wed, 5 Jun 2024 08:23:41 -0600 Subject: [PATCH 1/5] Initial attempt for supporting presets. --- CMakeLists.txt | 2 ++ CMakePresets.json | 28 ++++++++++++++++++++++++++++ cmake/dependencies.cmake | 10 ++++++++++ 3 files changed, 40 insertions(+) create mode 100644 CMakePresets.json diff --git a/CMakeLists.txt b/CMakeLists.txt index 537861ab6..021710e30 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,8 @@ option(MICM_ENABLE_TESTS "Build the tests" ON) option(MICM_ENABLE_EXAMPLES "Build the examples" ON) option(MICM_ENABLE_PROFILE "Profile MICM Solver" OFF) set(MICM_DEFAULT_VECTOR_MATRIX_SIZE "4" CACHE STRING "Default size for vectorizable matrix types") +set(MICM_MODULE_LOADS "" CACHE STRING "Modules to load") +set(MICM_MODULE_UNLOADS "" CACHE STRING "Modules to unload") include(CMakeDependentOption) # Option to collect custom OpenACC flags diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 000000000..b60d0e2ba --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,28 @@ +{ + "version" : 6, + "cmakeMinimumRequired": { + "major": 3, + "minor": 26 + }, + "configurePresets": [ + { + "name": "derecho-gpu", + "displayName": "Derecho", + "description": "Presets for the Derecho cluster", + "cacheVariables": { + "MICM_MODULE_LOADS": { + "type": "STRING", + "value": "nvhpc/23.7;gcc-toolchain/12.2.0;cmake" + }, + "MICM_MODULE_UNLOADS": { + "type": "STRING", + "value": "openmpi" + }, + "MICM_ENABLE_GPU_TYPE": { + "type": "STRING", + "value": "a100" + } + } + } + ] +} \ No newline at end of file diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake index 492c41b88..a50ac898a 100644 --- a/cmake/dependencies.cmake +++ b/cmake/dependencies.cmake @@ -1,4 +1,14 @@ include(FetchContent) +find_package(EnvModules REQUIRED) + +foreach(NEEDED_MODULE IN LISTS MICM_MODULE_LOADS) + env_module(load "${NEEDED_MODULE}") +endforeach() +foreach(UNNEEDED_MODULE IN LISTS MICM_MODULE_UNLOADS) + env_module(unload "${UNNEEDED_MODULE}") +endforeach() +env_module_list(MICM_CURRENT_MODULES) +message(STATUS "Currently loaded modules: ${MICM_CURRENT_MODULES}") ################################################################################ # Memory check From 470a754474a6f5caaa60917a7e6ef6d5d342ac91 Mon Sep 17 00:00:00 2001 From: Michael Waxmonsky Date: Wed, 5 Jun 2024 08:35:01 -0600 Subject: [PATCH 2/5] Moving module load to main CMake. --- CMakeLists.txt | 11 +++++++++++ cmake/dependencies.cmake | 10 ---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 021710e30..c17cdfff7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,17 @@ # Preamble cmake_minimum_required(VERSION 3.21) +find_package(EnvModules REQUIRED) + +foreach(NEEDED_MODULE IN LISTS MICM_MODULE_LOADS) + env_module(load "${NEEDED_MODULE}") +endforeach() +foreach(UNNEEDED_MODULE IN LISTS MICM_MODULE_UNLOADS) + env_module(unload "${UNNEEDED_MODULE}") +endforeach() +env_module_list(MICM_CURRENT_MODULES) +message(STATUS "Currently loaded modules: ${MICM_CURRENT_MODULES}") + project( micm VERSION 3.5.0 diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake index a50ac898a..492c41b88 100644 --- a/cmake/dependencies.cmake +++ b/cmake/dependencies.cmake @@ -1,14 +1,4 @@ include(FetchContent) -find_package(EnvModules REQUIRED) - -foreach(NEEDED_MODULE IN LISTS MICM_MODULE_LOADS) - env_module(load "${NEEDED_MODULE}") -endforeach() -foreach(UNNEEDED_MODULE IN LISTS MICM_MODULE_UNLOADS) - env_module(unload "${UNNEEDED_MODULE}") -endforeach() -env_module_list(MICM_CURRENT_MODULES) -message(STATUS "Currently loaded modules: ${MICM_CURRENT_MODULES}") ################################################################################ # Memory check From d0c639bbaed80ddf28e43a9370bb091634f4f5aa Mon Sep 17 00:00:00 2001 From: Michael Waxmonsky Date: Wed, 5 Jun 2024 08:39:36 -0600 Subject: [PATCH 3/5] Only requiring modules if set. --- CMakeLists.txt | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c17cdfff7..49176f4ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,16 +2,18 @@ # Preamble cmake_minimum_required(VERSION 3.21) -find_package(EnvModules REQUIRED) - -foreach(NEEDED_MODULE IN LISTS MICM_MODULE_LOADS) - env_module(load "${NEEDED_MODULE}") -endforeach() -foreach(UNNEEDED_MODULE IN LISTS MICM_MODULE_UNLOADS) - env_module(unload "${UNNEEDED_MODULE}") -endforeach() -env_module_list(MICM_CURRENT_MODULES) -message(STATUS "Currently loaded modules: ${MICM_CURRENT_MODULES}") + +if(DEFINED MICM_MODULE_LOADS OR DEFINED MICM_MODULE_UNLOADS) + find_package(EnvModules REQUIRED) + foreach(NEEDED_MODULE IN LISTS MICM_MODULE_LOADS) + env_module(load "${NEEDED_MODULE}") + endforeach() + foreach(UNNEEDED_MODULE IN LISTS MICM_MODULE_UNLOADS) + env_module(unload "${UNNEEDED_MODULE}") + endforeach() + env_module_list(MICM_CURRENT_MODULES) + message(STATUS "Currently loaded modules: ${MICM_CURRENT_MODULES}") +endif() project( micm From 53b599029cd0143f5e7437ebbfb62da08483bc59 Mon Sep 17 00:00:00 2001 From: Michael Waxmonsky Date: Wed, 5 Jun 2024 08:46:18 -0600 Subject: [PATCH 4/5] Patching CUDA settings for derecho. --- CMakePresets.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakePresets.json b/CMakePresets.json index b60d0e2ba..0935628d2 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -18,9 +18,13 @@ "type": "STRING", "value": "openmpi" }, - "MICM_ENABLE_GPU_TYPE": { + "MICM_GPU_TYPE": { "type": "STRING", "value": "a100" + }, + "MICM_ENABLE_CUDA": { + "type": "BOOL", + "value": "ON" } } } From facb1e97cd5367804e7e125283cf8fb54aadffea Mon Sep 17 00:00:00 2001 From: Michael Waxmonsky Date: Fri, 5 Jul 2024 08:37:01 -0600 Subject: [PATCH 5/5] Initial attempt to load modules at build time and a GPU workflow. --- CMakeLists.txt | 6 ++++++ CMakePresets.json | 33 ++++++++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 49176f4ab..85be5bc6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,12 @@ if(DEFINED MICM_MODULE_LOADS OR DEFINED MICM_MODULE_UNLOADS) endforeach() env_module_list(MICM_CURRENT_MODULES) message(STATUS "Currently loaded modules: ${MICM_CURRENT_MODULES}") + message(STATUS "Currently using $ENV{SHELL}.") + # set(MACHINE_MODULE_PATH "$ENV{MODULESHOME}") + # add_custom_target(enable-module-command + # ALL COMMAND "." "${MACHINE_MODULE_PATH}/init/bash" + # COMMAND "ml" "${MICM_MODULE_LOADS}" + # COMMAND_EXPAND_LISTS) endif() project( diff --git a/CMakePresets.json b/CMakePresets.json index 0935628d2..d8ff07c16 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -6,17 +6,17 @@ }, "configurePresets": [ { - "name": "derecho-gpu", + "name": "derecho-gpu-configure", "displayName": "Derecho", "description": "Presets for the Derecho cluster", "cacheVariables": { "MICM_MODULE_LOADS": { "type": "STRING", - "value": "nvhpc/23.7;gcc-toolchain/12.2.0;cmake" + "value": "nvhpc/23.7;gcc-toolchain/12.2.0;cuda/12.2.1" }, "MICM_MODULE_UNLOADS": { "type": "STRING", - "value": "openmpi" + "value": "cray-mpich" }, "MICM_GPU_TYPE": { "type": "STRING", @@ -26,7 +26,30 @@ "type": "BOOL", "value": "ON" } - } + }, + "binaryDir": "nvhpc-test" } + ], + "buildPresets": [ + { + "name": "derecho-gpu-build", + "configurePreset" : "derecho-gpu-configure", + "inheritConfigureEnvironment": true + } + ], + "workflowPresets": [ + { + "name" : "derecho-gpu-workflow", + "steps": [ + { + "type": "configure", + "name" : "derecho-gpu-configure" + }, + { + "type": "build", + "name": "derecho-gpu-build" + } + ] + } ] -} \ No newline at end of file +}