nccl-test报错,实际解决过程-实战生产

 

目录

报错日志

解决步骤

步骤 1: 确认 OpenMPI 已安装

步骤 2: 检查 libmpi.so.40 文件位置

步骤 3: 更新库路径

方法 1: 使用 ldconfig

方法 2: 设置 LD_LIBRARY_PATH 环境变量

步骤 4: 验证库路径是否生效

步骤 5: 重新运行测试

其他可能的问题和解决方案


报错日志

fs@h1-6-gpu:~/nccl-tests$ cd /home/fs
fs@h1-6-gpu:~$ git clone https://github.com/NVIDIA/nccl-tests.git 
fatal: destination path 'nccl-tests' already exists and is not an empty directory.
fs@h1-6-gpu:~$ cd nccl-tests  && make MPI=1 MPI_HOME=/usr/lib/x86_64-linux-gnu/openmpi/
make -C src build BUILDDIR=/home/fs/nccl-tests/build
make[1]: Entering directory '/home/fs/nccl-tests/src'
make[1]: Leaving directory '/home/fs/nccl-tests/src'
fs@h1-6-gpu:~/nccl-tests$ ./build/all_reduce_perf -b 8 -e 512M -f 2 -g 8
./build/all_reduce_perf: error while loading shared libraries: libmpi.s
### NCCL 测试工具及使用方法 NCCL(NVIDIA Collective Communications Library)是 NVIDIA 提供的一个用于高性能 GPU 集群通信的库。为了验证 NCCL 的正确性和性能,可以使用 NCCL 自带的测试工具。这些工具可以帮助用户检测多 GPU 和多节点环境下的通信性能和稳定性。 以下是一些常用的 NCCL 测试工具及其使用方法: #### 1. **nccl-tests** `nccl-tests` 是 NVIDIA 提供的一组测试程序,用于验证 NCCL 的功能和性能。可以通过以下步骤安装和运行 `nccl-tests`: - 安装依赖项并编译 `nccl-tests`: ```bash git clone https://github.com/NVIDIA/nccl-tests.git cd nccl-tests make MPI=1 CUDA_HOME=/usr/local/cuda # 根据系统配置调整 CUDA_HOME 路径 ``` - 运行单机多 GPU 测试: ```bash mpirun -np <NUM_GPUS> -bind-to none -map-by slot \ -H localhost:<NUM_GPUS> -x NCCL_DEBUG=INFO -x LD_LIBRARY_PATH \ ./build/all_reduce_perf -b 8 -e 1G -f 2 -g <NUM_GPUS> ``` 其中: - `<NUM_GPUS>`:指定 GPU 的数量。 - `-b` 和 `-e`:分别表示测试数据大小的起始值和结束值。 - `-f`:指定每次测试的数据大小倍增因子。 - `-g`:指定每个进程使用的 GPU 数量。 - 运行多节点测试: ```bash mpirun -np <TOTAL_NUM_GPUS> -H <NODE1>:<GPUS_ON_NODE1>,<NODE2>:<GPUS_ON_NODE2> \ -x NCCL_DEBUG=INFO -x LD_LIBRARY_PATH ./build/all_reduce_perf -b 8 -e 1G -f 2 -g <NUM_GPUS_PER_NODE> ``` #### 2. **NCCL 环境变量调试** 在运行 NCCL 测试时,可以通过设置环境变量来调试和优化性能。例如: - `NCCL_DEBUG=INFO`:启用调试日志,帮助排查问题[^1]。 - `NCCL_IB_HCA=<IB_DEVICE>`:指定 InfiniBand 设备。 - `NCCL_SOCKET_IFNAME=<NETWORK_INTERFACE>`:指定网络接口。 #### 3. **常见错误排查** 如果在运行 NCCL 测试时遇到类似以下错误: ``` RuntimeError: NCCL error in: /opt/conda/conda-bld/pytorch_1640811805959/work/torch/csrc/distributed/c10d/ProcessGroupNCCL.cpp:957, invalid usage, NCCL version 21.0.3 ncclInvalidUsage: This usually reflects invalid usage of NCCL library (such as too many async ops, too many collectives at once, mixing streams in a group, etc). ``` 可以尝试以下方法解决- 检查是否正确配置了 NCCL 环境变量。 - 确保所有节点上的 NCCL 版本一致。 - 减少并发操作的数量或调整批次大小[^1]。 #### 4. **性能分析工具** 除了 `nccl-tests`,还可以使用以下工具进行性能分析: - **NVIDIA Nsight Systems**:提供系统级性能分析,帮助识别瓶颈。 - **NVIDIA Nsight Compute**:专注于 GPU 内核性能分析。 ### 示例代码 以下是一个简单的 Python 脚本,演示如何使用 PyTorch 的分布式训练功能进行 NCCL 测试: ```python import torch import torch.distributed as dist import torch.multiprocessing as mp def run(rank, world_size): dist.init_process_group(backend='nccl', init_method='env://', rank=rank, world_size=world_size) tensor = torch.ones(1).cuda(rank) dist.all_reduce(tensor) print(f"Rank {rank}: {tensor.item()}") def main(): world_size = torch.cuda.device_count() mp.spawn(run, args=(world_size,), nprocs=world_size, join=True) if __name__ == "__main__": main() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风 001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值