Modifier List

This is a list of modifiers you can use to augment experiments created using Ramble. This list is automatically generated based on the modifiers in this Ramble version.

Ramble currently has 32 mainline modifiers:

amd-uprof gcp-metadata perf
apptainer hpctoolkit pre-exec-print
collection-daemon install-ramble pre-post-capture
conditional-psm3 install-spack pyxis-enroot
darshan intel-aps run-directory
docker intel-vtune status-markers
env-var-aggregator lscpu sys-stat
ethtool nccl-env tunables
execution-date nccl-gib tuned-adm
exit-code nccl-tcpxo wait-for-bg-jobs
gcp-cloud-logging nvidia-smi

amd-uprof

Ramble modifiers:
Description:
Define a modifier for applying AMD uProf profiling.

apptainer

Ramble modifiers:
Description:
Apptainer is a container platform. It allows you to create and run containers that package up pieces of software in a way that is portable and reproducible. You can build a container using Apptainer on your laptop, and then run it on many of the largest HPC clusters in the world, local university or company clusters, a single server, in the cloud, or on a workstation down the hall. Your container is a single file, and you don’t have to worry about how to install all the software you need on each different operating system.

collection-daemon

Ramble modifiers:
Description:
Define a modifier that starts (and eventually terminates) a collection daemon

conditional-psm3

Ramble modifiers:
Description:
Modifier to apply PSM3 (conditionally, based on MPI) This modifier will conditionally apply PSM3 to all mpi commands within an experiment. It works by determining if the experiment uses a specific MPI implementation, as defined by the variable `psm3_mpi`. The experiment will contain commands which grep for the MPI defined by `psm3_mpi` in the spack environment the experiment will use. If it is found, environment variables (in bash/sh form) will be injected into the execution environment. These environment variables are removed after the command finishes.

darshan

Ramble modifiers:
Description:
Define a modifier for applying Darshan on MPI apps.

docker

Ramble modifiers:
Description:
Docker is a set of platform as a service (PaaS) products that use OS- level virtualization to deliver software in packages called containers. The service has both free and premium tiers. The software that hosts the containers is called Docker Engine. It was first released in 2013 and is developed by Docker, Inc. When mode == build_only or mode == standard_with_build, this modifier will perform a docker build on a Dockerfile. After creating the container image, this modifier will pre- define container_uri and container_name for subsequent containerizer modifiers to ingest.

env-var-aggregator

Ramble modifiers:
Description:
This modifier is used to prefix, and aggregate the names of environment variables into a common environment variable definition. There are two execution modes: 'all' - Includes all environment variables defined in the environment when the experiment is being executed. 'explicit' - Includes only explicitly defined environment variables The output of this modifier is to define a new environment variable (defined by aggregated_env_var_name) which will contain all of the aggregated environment variable names. For example, if the current environment has HOME, and PWD defined, then the resulting environment variable will have default contents of "-x HOME -x PWD". The prefix, and delimiter are configurable through experiment variables.

ethtool

Ramble modifiers:
Description:
Define a modifier for network configuration. This modifier queries for common settings as well as supporting configuration of the network interface. Example usage: ```yaml ramble: variables: mpi_command: '' batch_submit: 'sbatch {execute_experiment}' hostlist: "${SLURM_JOB_NODELIST}" processes_per_node: 1 applications: hostname: workloads: local: experiments: test: variables: n_nodes: 2 new_mtu: 4096 channel_setting: 'rx 8 tx 8' coalesce_setting: 'rx-usecs 20 tx-usecs 20' modifiers: - name: ethtool ```

execution-date

Ramble modifiers:
Description:
Define a modifier to print the date

exit-code

Ramble modifiers:
Description:
Define a modifier to capture exit codes from executables The exit code that is captured by this modifier is the last portion of every executable template. As a result, the exit codes tracked might not be accurate if the experiments being executed have many templates within singular executable definitions.

gcp-cloud-logging

Ramble modifiers:
Description:
Upload experiment logs to Google Cloud Platform Cloud Logging. https://cloud.google.com/logging?e=48754805&hl=en

GcpMetadata

Ramble modifiers:
Description:
Define a modifier to grab GCP VM metadata This mod can capture useful metadata (such as node type and VM image) for GCP VMs Requires a definition for the `hostlist` variable, to be able to capture per-node metadata.

hpctoolkit

Ramble modifiers:
Description:
Define a modifier for HPSF's HPC Toolkit

install-ramble

Ramble modifiers:
Description:
Modifier to define commands to install ramble

install-spack

Ramble modifiers:
Description:
Modifier to define commands to install spack

intel-aps

Ramble modifiers:
Description:
Define a modifier for Intel's Application Performance Snapshot Intel's Application Performance Snapshot (APS) is a high level profiler. It gives a quick view into the high level performance characteristics of an experiment. This modifier allows for easy application of APS to experiments.

intel-vtune

Ramble modifiers:
Description:
Define a modifier for applying VTune profiling.

lscpu

Ramble modifiers:
Description:
Define a modifier for lspcu lscpu gives useful information about the underlying compute platform. This modifier allows experiments to easily extract system information while the experiment is being performed.

nccl-env

Ramble modifiers:
Description:
Define a modifier for configuring NCCL based environment variables NCCL is the NVIDIA Collective Communications Library, which provides inter- GPU communication primitives that are topology-aware and can easily be integrated into applications. This modifier presents variables that can be use to configure and parameterize aspects of NCCL's behavior. The available parameters are documented in more details here: https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/env.html Any variable who's value is an empty string will not be define in the resulting execution script.

nccl-gib

Ramble modifiers:
Description:
Modifier to ensure NCCL gIB is loaded into the execution environment.

nccl-tcpxo

Ramble modifiers:
Description:
Modifier to ensure NCCL TCPXO is loaded into the execution environment.

nvidia-smi

Ramble modifiers:
Description:
Define a modifier for nvidia-smi nvidia-smi is a command line utility, based on top of the NVIDIA Management Library (NVML), intended to aid in the management and monitoring of NVIDIA GPU devices. https://developer.nvidia.com/nvidia-system-management-interface

perf

Ramble modifiers:
Description:
Define a modifier for capturing performance counters using 'perf'.

pre-exec-print

Ramble modifiers:
Description:
Pre Execution Print modifier This modifier injects an echo of '{experiment_namespace}' at the beginning of each experiment. The content of this echo can be overridden by setting the value of the 'pre_exec_print_template' variable to a print template you would like to use.

pre-post-capture

Ramble modifiers:
Description:
A modifier to inject command captures before and after certain executable commands. Useful for collecting debugging information at the beginning and end of an experiment.

pyxis-enroot

Ramble modifiers:
Description:
Modifier to aid configuring pyxis-enroot based execution environments Pyxis is a container plugin for slurm developed by NVIDIA. https://github.com/NVIDIA/pyxis Enroot is a tool to convert containers into unprivileged sandboxes that can be executed in slurm with Pyxis. https://github.com/NVIDIA/enroot This modifier requires the following input variables: - container_uri: This needs to be a container URI that is formatted for and `enroot import` command. For examples, see https://github.com/NVIDIA/enroot/blob/master/doc/cmd/import.md - container_name: This is the name of the resulting squashfs file that enroot produces The following modifier variables are optional inputs: - container_dir - container_extract_paths The following modifier variables are generated outputs: - container_mounts - container_env_vars

run-directory

Ramble modifiers:
Description:
Modifier to run executables in a specified directory.

status-markers

Ramble modifiers:
Description:
Modifier to create a marker file when the experiment has started and ended. This modifier will create a .started and .finished file within the experiment run dir.

sys-stat

Ramble modifiers:
Description:
Define a modifier for capturing system metrics. Example usage: Below is a ramble config that outputs iostat every 5s for the duration of the sleep application. ``` ramble: variants: package_manager: spack variables: apply_sampler_exe_regex: 'sleep' sampler_cmd: 'iostat -xzt 5' processes_per_node: 1 n_nodes: 1 mpi_command: '' batch_submit: '{execute_experiment}' applications: sleep: workloads: sleep: experiments: test1: variables: sleep_seconds: 6 software: packages: sysstat: pkg_spec: sysstat environments: hostname: packages: - sysstat modifiers: - name: sys-stat ```

tunables

Ramble modifiers:
Description:
A modifier for inspecting various tunables of the system.

tuned-adm

Ramble modifiers:
Description:
Define a modifier for TunedAdm This modifier is used to select a specific tuned profile. It also records the selected profile as a FOM.

wait-for-bg-jobs

Ramble modifiers:
Description:
Define a modifier for waiting for background jobs. This only waits for background jobs started from the experiment. For now, this modifier works with bash only.