NCCL#

This workload (test_template_name is NcclTest) allows you to execute NCCL benchmarks within the CloudAI framework.

Usage Example#

Test TOML example:

name = "my_nccl_test"
description = "Example bash command test"
test_template_name = "NcclTest"

[cmd_args]
docker_image_url = "nvcr.io#nvidia/pytorch:25.06-py3"

Test Scenario example:

name = "nccl-test"

[[Tests]]
id = "nccl.1"
num_nodes = 1
time_limit = "00:05:00"

test_name = "my_nccl_test"

Test-in-Scenario example:

name = "nccl-test"

[[Tests]]
id = "nccl.1"
num_nodes = 1
time_limit = "00:05:00"

name = "my_nccl_test"
description = "Example bash command test"
test_template_name = "NcclTest"

  [Tests.cmd_args]
  docker_image_url = "nvcr.io#nvidia/pytorch:25.06-py3"
  subtest_name = "all_reduce_perf_mpi"
  iters = 100

API Documentation#

Command Arguments#

class cloudai.workloads.nccl_test.nccl.NCCLCmdArgs(
*,
docker_image_url: str,
subtest_name: Literal['all_reduce_perf_mpi', 'all_gather_perf_mpi', 'alltoall_perf_mpi', 'broadcast_perf_mpi', 'gather_perf_mpi', 'hypercube_perf_mpi', 'reduce_perf_mpi', 'reduce_scatter_perf_mpi', 'scatter_perf_mpi', 'sendrecv_perf_mpi', 'bisection_perf_mpi', 'all_reduce_perf', 'all_gather_perf', 'alltoall_perf', 'broadcast_perf', 'gather_perf', 'hypercube_perf', 'reduce_perf', 'reduce_scatter_perf', 'scatter_perf', 'sendrecv_perf', 'bisection_perf'] | list[Literal['all_reduce_perf_mpi', 'all_gather_perf_mpi', 'alltoall_perf_mpi', 'broadcast_perf_mpi', 'gather_perf_mpi', 'hypercube_perf_mpi', 'reduce_perf_mpi', 'reduce_scatter_perf_mpi', 'scatter_perf_mpi', 'sendrecv_perf_mpi', 'bisection_perf_mpi', 'all_reduce_perf', 'all_gather_perf', 'alltoall_perf', 'broadcast_perf', 'gather_perf', 'hypercube_perf', 'reduce_perf', 'reduce_scatter_perf', 'scatter_perf', 'sendrecv_perf', 'bisection_perf']] = 'all_reduce_perf_mpi',
nthreads: int | list[int] = 1,
ngpus: int | list[int] = 1,
minbytes: str | list[str] = '32M',
maxbytes: str | list[str] = '32M',
stepbytes: str | list[str] = '1M',
op: Literal['sum', 'prod', 'min', 'max', 'avg', 'all'] | list[Literal['sum', 'prod', 'min', 'max', 'avg', 'all']] = 'sum',
datatype: Literal['uint8', 'float'] | list[Literal['uint8', 'float']] = 'float',
root: int | list[int] = 0,
iters: int | list[int] = 20,
warmup_iters: int | list[int] = 5,
agg_iters: int | list[int] = 1,
average: int | list[int] = 1,
parallel_init: int | list[int] = 0,
check: int | list[int] = 1,
blocking: int | list[int] = 0,
cudagraph: int | list[int] = 0,
stepfactor: int | list[int] | None = None,
**extra_data: Any,
)[source]#

Bases: CmdArgs

NCCL test command arguments.

docker_image_url: str#
subtest_name: Literal['all_reduce_perf_mpi', 'all_gather_perf_mpi', 'alltoall_perf_mpi', 'broadcast_perf_mpi', 'gather_perf_mpi', 'hypercube_perf_mpi', 'reduce_perf_mpi', 'reduce_scatter_perf_mpi', 'scatter_perf_mpi', 'sendrecv_perf_mpi', 'bisection_perf_mpi', 'all_reduce_perf', 'all_gather_perf', 'alltoall_perf', 'broadcast_perf', 'gather_perf', 'hypercube_perf', 'reduce_perf', 'reduce_scatter_perf', 'scatter_perf', 'sendrecv_perf', 'bisection_perf'] | list[Literal['all_reduce_perf_mpi', 'all_gather_perf_mpi', 'alltoall_perf_mpi', 'broadcast_perf_mpi', 'gather_perf_mpi', 'hypercube_perf_mpi', 'reduce_perf_mpi', 'reduce_scatter_perf_mpi', 'scatter_perf_mpi', 'sendrecv_perf_mpi', 'bisection_perf_mpi', 'all_reduce_perf', 'all_gather_perf', 'alltoall_perf', 'broadcast_perf', 'gather_perf', 'hypercube_perf', 'reduce_perf', 'reduce_scatter_perf', 'scatter_perf', 'sendrecv_perf', 'bisection_perf']]#
nthreads: int | list[int]#
ngpus: int | list[int]#
minbytes: str | list[str]#
maxbytes: str | list[str]#
stepbytes: str | list[str]#
op: Literal['sum', 'prod', 'min', 'max', 'avg', 'all'] | list[Literal['sum', 'prod', 'min', 'max', 'avg', 'all']]#
datatype: Literal['uint8', 'float'] | list[Literal['uint8', 'float']]#
root: int | list[int]#
iters: int | list[int]#
warmup_iters: int | list[int]#
agg_iters: int | list[int]#
average: int | list[int]#
parallel_init: int | list[int]#
check: int | list[int]#
blocking: int | list[int]#
cudagraph: int | list[int]#
stepfactor: int | list[int] | None#

Test Definition#

class cloudai.workloads.nccl_test.nccl.NCCLTestDefinition(
*,
name: str,
description: str,
test_template_name: str,
cmd_args: NCCLCmdArgs,
extra_env_vars: dict[str, str | List[str]] = {},
extra_cmd_args: dict[str, str] = {},
extra_container_mounts: list[str] = [],
git_repos: list[GitRepo] = [],
nsys: NsysConfiguration | None = None,
predictor: PredictorConfig | None = None,
agent: str = 'grid_search',
agent_steps: int = 1,
agent_metrics: list[str] = ['default'],
agent_reward_function: str = 'inverse',
)[source]#

Bases: TestDefinition

Test object for NCCL.

cmd_args: NCCLCmdArgs#
property extra_args_str: str#
property docker_image: DockerImage#
property installables: list[Installable]#
was_run_successful(
tr: TestRun,
) JobStatusResult[source]#