Files
TheRock/rocm-systems/projects/rccl/tools/scripts/test_runner/lib/schema.json
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

384 lines
17 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "rccl-test-runner-config",
"title": "RCCL Test Runner Configuration",
"description": "Schema for RCCL test runner JSON configuration files",
"type": "object",
"additionalProperties": false,
"properties": {
"system_configurations": {
"description": "Human-readable metadata about this configuration",
"type": "object",
"additionalProperties": false,
"properties": {
"name": { "type": "string" },
"description": { "type": "string" }
}
},
"paths": {
"description": "Filesystem paths used by the runner. Values support ${VAR}, $VAR, and ${VAR:-default} expansion.",
"type": "object",
"additionalProperties": false,
"properties": {
"workdir": { "type": "string", "description": "RCCL source and build root (default: $PWD)" },
"rocm_path": { "type": "string", "description": "ROCm installation prefix (default: /opt/rocm)" },
"mpi_path": { "type": "string", "description": "MPI installation prefix" },
"test_binary_dir": { "type": "string", "description": "Directory containing test binaries; overrides the default build_dir/test/" }
}
},
"env_variables": {
"$ref": "#/$defs/env_variables_map",
"description": "Global environment variables applied to every test run"
},
"auto_detect_hosts": {
"type": "boolean",
"description": "When true, auto-detect MPI hosts from SLURM_NODELIST or similar"
},
"mpi_args": {
"description": "Base mpirun arguments that replace the built-in defaults. May be a string or list of strings applied to all tests, OR an object keyed by --system profile name (e.g. 'mellanox', 'ainic', 'thor2') whose values are strings or lists of strings.",
"oneOf": [
{ "$ref": "#/$defs/mpi_args_value" },
{
"type": "object",
"additionalProperties": { "$ref": "#/$defs/mpi_args_value" }
}
]
},
"system_env_variables": {
"description": "Per-system-profile environment variable overrides (keyed by profile name)",
"type": "object",
"additionalProperties": { "$ref": "#/$defs/env_variables_map" }
},
"build_configuration": {
"description": "Controls how librccl.so and test binaries are built via install.sh",
"type": "object",
"additionalProperties": false,
"properties": {
"install_flags": {
"type": "array",
"items": { "type": "string" },
"description": "install.sh command-line flags, e.g. ['--debug', '-t', '-l', '--no_clean']"
},
"cmake_options": {
"description": "Additional CMake options. Either a string ('-DFOO=BAR -DBAZ=1') or an object whose keys become -DKEY=VAL entries.",
"oneOf": [
{ "type": "string" },
{
"type": "object",
"additionalProperties": { "type": ["string", "number", "boolean"] }
}
]
},
"env_variables": {
"$ref": "#/$defs/env_variables_map",
"description": "Environment variables set only during the build step"
},
"parallel_jobs": {
"type": "integer",
"minimum": 1,
"description": "Number of parallel compile jobs passed to install.sh via -j"
},
"generator": {
"type": "string",
"description": "CMake generator, e.g. 'Unix Makefiles' or 'Ninja'"
}
}
},
"rccl_tests_build_configuration": {
"description": "Controls how the rccl-tests perf binaries (all_reduce_perf, etc.) are built. Absent section => step skipped.",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean",
"description": "Set to false to skip building rccl-tests. Default: true when the section is present."
},
"source_dir": {
"type": "string",
"description": "Path to the rccl-tests checkout. Supports ~ and $VAR expansion. Default: $workdir/rccl-tests."
},
"install_script": {
"type": "string",
"description": "Name of the build script inside source_dir. Default: 'install.sh'."
},
"build_command": {
"description": "Explicit build command (string run via shell, or argv array). Overrides install_script + install_flags.",
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" } }
]
},
"install_flags": {
"type": "array",
"items": { "type": "string" },
"description": "Flags passed to install_script, e.g. ['--mpi']. Supports ~ and $VAR expansion."
},
"rccl_home": {
"type": "string",
"description": "RCCL install/build prefix to link rccl-tests against. Default: the RCCL build_dir."
},
"env_variables": {
"$ref": "#/$defs/env_variables_map",
"description": "Environment variables set only during the rccl-tests build step"
}
}
},
"test_configurations": {
"description": "Named test configuration blocks. Each key is a configuration name referenced by test_suites or via 'extends'.",
"type": "object",
"additionalProperties": { "$ref": "#/$defs/test_configuration" }
},
"test_suites": {
"description": "Ordered list of test suites to execute",
"type": "array",
"items": { "$ref": "#/$defs/test_suite" }
}
},
"$defs": {
"env_variables_map": {
"description": "Key/value pairs of environment variables. Values are always strings (use '' to unset).",
"type": "object",
"additionalProperties": { "type": "string" }
},
"mpi_args_value": {
"description": "Extra mpirun arguments expressed as either a single string ('--bind-to none --oversubscribe') or a list of strings (['--bind-to none', '--oversubscribe']).",
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" } }
]
},
"test_defaults": {
"description": "Fields that can appear at the test_configuration level as defaults and be overridden per-test",
"type": "object",
"properties": {
"is_gtest": {
"type": "boolean",
"description": "True → GTest binary using --gtest_filter; false → plain executable with direct args. Default: true."
},
"binary": {
"type": "string",
"description": "Test binary name or path. Relative names are resolved under build_dir/test/ (or test_binary_dir if set). Supports ~ and $VAR expansion."
},
"num_ranks": {
"description": "Total MPI ranks. 1 → no mpirun wrapper. The string \"auto\" resolves to (detected GPUs per node × num_nodes), i.e. use all GPUs.",
"oneOf": [
{ "type": "integer", "minimum": 1 },
{ "type": "string", "enum": ["auto"] }
]
},
"num_nodes": {
"type": "integer",
"minimum": 1,
"description": "Number of nodes across which ranks are distributed"
},
"num_gpus": {
"description": "GPUs per node; controls --map-by ppr:{num_gpus}:node for multi-node runs. The string \"auto\" (also the default when omitted) resolves to the detected GPUs per node.",
"oneOf": [
{ "type": "integer", "minimum": 1 },
{ "type": "string", "enum": ["auto"] }
]
},
"timeout": {
"type": "integer",
"minimum": 0,
"description": "Timeout in seconds. 0 = unlimited."
},
"is_pytest": {
"type": "boolean",
"description": "True → run a pytest harness (in test_dir) instead of a gtest/plain binary; results are derived from a JUnit report. Default: false."
},
"test_dir": {
"type": "string",
"description": "For pytest tests: directory containing the harness (absolute, or relative to workdir). Supports ~ and $VAR expansion."
},
"python_bin": {
"type": "string",
"description": "For pytest tests: interpreter to use (default: <test_dir>/venv else python3, or the venv created by setup_venv)."
},
"setup_venv": {
"type": "boolean",
"description": "For pytest tests: create/reuse a venv and install requirements before running. Default: false."
},
"venv_dir": {
"type": "string",
"description": "For pytest tests with setup_venv: venv location (default: <test_dir>/venv)."
},
"requirements": {
"type": "string",
"description": "For pytest tests with setup_venv: requirements file to install (default: <test_dir>/requirements.txt)."
}
}
},
"test_configuration": {
"description": "A named test configuration. May extend another configuration and define a list of tests.",
"type": "object",
"additionalProperties": false,
"properties": {
"extends": {
"description": "Name (or list of names) of parent configuration(s) to inherit from",
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" }, "minItems": 1 }
]
},
"is_gtest": { "$ref": "#/$defs/test_defaults/properties/is_gtest" },
"binary": { "$ref": "#/$defs/test_defaults/properties/binary" },
"num_ranks": { "$ref": "#/$defs/test_defaults/properties/num_ranks" },
"num_nodes": { "$ref": "#/$defs/test_defaults/properties/num_nodes" },
"num_gpus": { "$ref": "#/$defs/test_defaults/properties/num_gpus" },
"timeout": { "$ref": "#/$defs/test_defaults/properties/timeout" },
"is_pytest": { "$ref": "#/$defs/test_defaults/properties/is_pytest" },
"test_dir": { "$ref": "#/$defs/test_defaults/properties/test_dir" },
"python_bin": { "$ref": "#/$defs/test_defaults/properties/python_bin" },
"setup_venv": { "$ref": "#/$defs/test_defaults/properties/setup_venv" },
"venv_dir": { "$ref": "#/$defs/test_defaults/properties/venv_dir" },
"requirements": { "$ref": "#/$defs/test_defaults/properties/requirements" },
"env_variables": {
"$ref": "#/$defs/env_variables_map",
"description": "Environment variables applied to every test in this configuration (merged on top of global env_variables)"
},
"rerun_env_variables": {
"$ref": "#/$defs/env_variables_map",
"description": "Additional environment variables merged in when a failed test is rerun (requires --rerun-failed)"
},
"args": {
"type": "array",
"items": { "type": "string" },
"description": "Extra command-line arguments appended to the test binary invocation. Lists are de-duplicated and appended when configs are merged via 'extends'."
},
"mpi_args": {
"$ref": "#/$defs/mpi_args_value",
"description": "Extra mpirun arguments for tests in this configuration, appended after the base mpi_args. Accepts a string or list of strings; lists are de-duplicated and appended when configs are merged via 'extends'."
},
"command_args": {
"type": "string",
"description": "Shared base command-line arguments for this configuration. A test's own 'command_args' is appended to this base at execution time (see test_executor.run_test). Inherited via 'extends': a child that omits command_args takes the parent's value."
},
"description": {
"type": "string",
"description": "Human-readable description of this configuration block (not interpreted by the runner)"
},
"tests": {
"type": "array",
"items": { "$ref": "#/$defs/test_item" },
"description": "Individual test cases belonging to this configuration"
}
}
},
"test_item": {
"description": "A single test case within a test_configuration",
"type": "object",
"required": ["name"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Unique test identifier used for --test-name filtering (supports glob patterns)"
},
"description": {
"type": "string",
"description": "Human-readable description shown in output and logs"
},
"is_gtest": { "$ref": "#/$defs/test_defaults/properties/is_gtest" },
"binary": { "$ref": "#/$defs/test_defaults/properties/binary" },
"test_binary_dir": {
"type": "string",
"description": "Per-test override of the directory in which binary is looked up"
},
"test_filter": {
"type": "string",
"description": "For GTest binaries: passed as --gtest_filter=<value>. For non-GTest: passed as a plain argument."
},
"command_args": {
"type": "string",
"description": "Additional command-line arguments appended after the binary (and after test_filter for non-GTest)"
},
"num_ranks": { "$ref": "#/$defs/test_defaults/properties/num_ranks" },
"num_nodes": { "$ref": "#/$defs/test_defaults/properties/num_nodes" },
"num_gpus": { "$ref": "#/$defs/test_defaults/properties/num_gpus" },
"timeout": { "$ref": "#/$defs/test_defaults/properties/timeout" },
"is_pytest": { "$ref": "#/$defs/test_defaults/properties/is_pytest" },
"test_dir": { "$ref": "#/$defs/test_defaults/properties/test_dir" },
"python_bin": { "$ref": "#/$defs/test_defaults/properties/python_bin" },
"setup_venv": { "$ref": "#/$defs/test_defaults/properties/setup_venv" },
"venv_dir": { "$ref": "#/$defs/test_defaults/properties/venv_dir" },
"requirements": { "$ref": "#/$defs/test_defaults/properties/requirements" },
"env_variables": {
"$ref": "#/$defs/env_variables_map",
"description": "Test-specific environment variables (highest priority, merged on top of all other levels)"
},
"rerun_env_variables": {
"$ref": "#/$defs/env_variables_map",
"description": "Per-test additional environment variables used only on rerun"
},
"mpi_args": {
"$ref": "#/$defs/mpi_args_value",
"description": "Per-test extra mpirun arguments (MPI tests only), appended after the base and suite/configuration mpi_args. Accepts a string or list of strings."
}
}
},
"test_suite": {
"description": "A suite entry that binds a test_configuration to a named run with optional overrides",
"type": "object",
"required": ["name", "config"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Human-readable suite name used for --suite-name filtering"
},
"description": {
"type": "string",
"description": "Optional longer description of what this suite exercises"
},
"config": {
"type": "string",
"description": "Name of the test_configuration to use for this suite"
},
"enabled": {
"type": "boolean",
"description": "When false the suite is skipped unless targeted by --suite-name. Default: true."
},
"is_gtest": { "$ref": "#/$defs/test_defaults/properties/is_gtest" },
"binary": { "$ref": "#/$defs/test_defaults/properties/binary" },
"num_ranks": { "$ref": "#/$defs/test_defaults/properties/num_ranks" },
"num_nodes": { "$ref": "#/$defs/test_defaults/properties/num_nodes" },
"num_gpus": { "$ref": "#/$defs/test_defaults/properties/num_gpus" },
"timeout": { "$ref": "#/$defs/test_defaults/properties/timeout" },
"is_pytest": { "$ref": "#/$defs/test_defaults/properties/is_pytest" },
"test_dir": { "$ref": "#/$defs/test_defaults/properties/test_dir" },
"python_bin": { "$ref": "#/$defs/test_defaults/properties/python_bin" },
"setup_venv": { "$ref": "#/$defs/test_defaults/properties/setup_venv" },
"venv_dir": { "$ref": "#/$defs/test_defaults/properties/venv_dir" },
"requirements": { "$ref": "#/$defs/test_defaults/properties/requirements" },
"env_variables": {
"$ref": "#/$defs/env_variables_map",
"description": "Suite-level environment variable overrides (between configuration-level and test-level in priority)"
},
"mpi_args": {
"$ref": "#/$defs/mpi_args_value",
"description": "Suite-level extra mpirun arguments, appended after the base and configuration mpi_args (and before per-test mpi_args). Accepts a string or list of strings."
}
}
}
}
}