This directory contains tools used to manage the deployment of the ExaGO codebase.
This documentation is under development. Some brief notes will be added about what platform is supported by each configuration, or a short description of what the purpose is.
Each folder which builds a configuration of ExaGO should have a following:
build.sh
: custom build script for configuration. Usually templateplatformVariables.sh
: a list of spack modules and other config to set up a CMake build environment.cache.cmake
: universal CMake changes for the type of build in useplatform
:spack.yaml
: a copy of the environment used to generate platform specific environmentsexagoSpack.sh
: a script to load that build of exago for use directly on command line
Platforms:
- Crusher
Description:
Crusher clang build of exago@crusher-dev + hiop@develop
Platforms:
- Newell
Description:
Newell clang build of [email protected] + [email protected]
Description:
Contains any CMake configuration for configuring external libraries.
Platforms:
Used in spack-ci stage of testing (currently not functioning).
Description:
https://gitlab.pnnl.gov/exasgd/frameworks/exago/-/commit/47ea09e648dfa81ca8a70cc2e0b4a2628eaf56f2 - here is the merge request into master that created this initially. Remnant of previously functional spack-ci.
Platforms:
- Ascent
- Deception
- Marianas
- Newell
- Summit
Description:
gcc and cuda enabled build for target x86_64 and power9 platforms.
Description:
Old miscellaneous scripts
Description:
Internal perl scripts that we use to find idle nodes within our clusters using slurm. Are a component of CI pipelines on Marianas and Newell.
This directory contains tools used to manage the code quality of the ExaGO codebase. See README.md inside for more.
A self-documented script that can enable building on most target platforms:
$ ./buildsystem/build.sh --help
Paths:
Source dir: /ccs/home/rcruther/exago-git
Build dir: /ccs/home/rcruther/exago-git/build
Install dir: /ccs/home/rcruther/exago-git/install
Path to buildsystem script: /ccs/home/rcruther/exago-git/buildsystem/build.sh
Usage: ./buildsystem/build.sh [options]
--------------------------------------------------------------------------------
Long Description:
This script is the entry point for ExaGO's continuous integration and default
build configuration. The --build-only and --test-only options below build and
test ExaGO with every option enabled. If you would like to build a smaller
configuration, you will have to create a build directory and use the usual
cmake workflow (eg edit variables in ccmake or pass command line arguments to
cmake).
Clusters:
By default, this script will attempt to determine the cluster it is being ran
on using the hostname command. If a known cluster is found, it's respective
script in the directory ./scripts/buildsystem will be sourced and the
variable MY_CLUSTER will be set. For example, on PNNL cluster Marianas,
hostname marianas.pnl.gov will be matched and
./scripts/buildsystem/marianasVariables.sh will be sourced. If you would like
to add a cluster, create a script
./scripts/buildsystem/<my cluster>Variables.sh and specify the relevant
environment variables. If the hostname is not correctly finding your cluster,
you may specify MY_CLUSTER environment variable before running this script
and the script will respect the environment variable. For example, on ORNL
Ascent cluster, the hostname does not find the cluster, so we must specify
MY_CLUSTER when running:
$ MY_CLUSTER=ascent ./buildsystem/build.sh --build-only
Spack:
Each supported variables script in ./scripts/buildsystem activates a spack
environment with all dependencies configured. If you have built dependencies
for ExaGO in a spack environment, you may simply activate the environment
and run the build script specifying that you don't want to source any
variables scripts, eg:
$ MY_CLUSTER=none ./buildsystem/build.sh
--------------------------------------------------------------------------------
Options:
--job=<job name> Run job indicated by job name. Available jobs are as
follows: gcc-cuda clang-hip clang-omp cmake-lint cmake-lint-apply.
Job --job=cmake-lint-apply should be ran before every push.
--build-only Only run the build stage of the script. This is useful for
local development.
--test-only Only run the test stage of the script. This should be ran
before every push to the repository or pull/merge request.
This run takes a significant amound of time. If you omit
the --*-only options and just run a particular job, tests
will also be ran.
--verbose Print all executed commands to the terminal. This is useful
for debugging, but it will be disabled in CI by default to
prevent hitting the job log limit.
--------------------------------------------------------------------------------
See ExaGO's latest developer guidelines for more information on developing
ExaGO: https://gitlab.pnnl.gov/exasgd/frameworks/exago/-/blob/develop/docs/DeveloperGuidelines.md
--------------------------------------------------------------------------------
BUILD_STATUS:0