如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
这些测试用于检查NCCL操作的性能和正确性。
要构建测试,只需输入make。
make
如果CUDA未安装在/usr/local/cuda,您可以指定CUDA_HOME。同样,如果NCCL未安装在/usr,您可以指定NCCL_HOME。
$ make CUDA_HOME=/path/to/cuda NCCL_HOME=/path/to/nccl
NCCL测试依赖MPI来处理多进程,从而支持多节点。如果要编译支持MPI的测试,需要设置MPI=1并将MPI_HOME设置为MPI的安装路径。
$ make MPI=1 MPI_HOME=/path/to/mpi CUDA_HOME=/path/to/cuda NCCL_HOME=/path/to/nccl
NCCL测试可以在多进程、多线程以及每个线程多个CUDA设备上运行。进程数由MPI管理,因此不作为参数传递给测试。总rank数(=CUDA设备数)等于(进程数)×(线程数)×(每个线程的GPU数)。
在具有8个GPU的单节点上运行(-g 8),扫描从8字节到128MB:
$ ./build/all_reduce_perf -b 8 -e 128M -f 2 -g 8
在每个节点具有8个GPU的节点上运行64个MPI进程,总共64个GPU分布在8个节点上:(注意:此情况下,nccl-tests二进制文件必须使用MPI=1编译)
$ mpirun -np 64 -N 8 ./build/all_reduce_perf -b 8 -e 8G -f 2 -g 1
有关数值的解释,特别是“busbw”列,请参见性能页面。
所有测试支持以下相同的参数集:
-t,--nthreads:每个进程的线程数。默认值:1。-g,--ngpus:每个线程的GPU数。默认值:1。-b,--minbytes:起始最小大小。默认值:32M。-e,--maxbytes:结束最大大小。默认值:32M。-i,--stepbytes:大小之间的固定增量。默认值:1M。-f,--stepfactor:大小之间的乘法因子。默认值:禁用。-o,--op:指定要执行的归约操作。仅与Allreduce、Reduce或ReduceScatter等归约操作相关。默认值:Sum。-d,--datatype:指定要使用的数据类型。默认值:Float。-r,--root:指定要使用的根节点。仅用于Broadcast或Reduce等有根节点的操作。默认值:0。-n,--iters:迭代次数。默认值:20。-w,--warmup_iters:热身迭代次数(不计时)。默认值:5。-m,--agg_iters:每次迭代中聚合的操作数。默认值:1。-N,--run_cycles:运行并打印每个周期。默认值:1;0=无限。-a,--average:报告所有rank的平均性能(仅MPI=1时有效)。默认值:1。-p,--parallel_init:使用线程并行初始化NCCL。默认值:0。-c,--check:执行计数迭代,在每次迭代中检查结果的正确性。在大量GPU上可能会很慢。默认值:1。-z,--blocking:使NCCL集合操作阻塞,即CPU在每个集合操作后等待并同步。默认值:0。-G,--cudagraph:将迭代捕获为CUDA图,然后重放指定次数。默认值:0。-C,--report_cputime:报告CPU时间而非延迟。默认值:0。-R,--local_register:启用发送/接收缓冲区的本地缓冲区注册。默认值:0。-T,--timeout:指定秒数后超时每个测试。默认值:禁用。来自真实用户的反馈,见证轩辕镜像的优质服务