背景
普通的perftest只能使用主机内存进行rdma,如何让perftest支持使用cuda来跑gpu的rdma? 需要在编译阶段支持cuda的版本。本文简要记录编译perftest的过程
如果编译的perftest没有添加cuda的支持,会报错:ib_write_bw: unrecognized option '--use_cuda=4'
下载编译
-
下载perftest (当前是25.01的版本)
git clone https://github.com/linux-rdma/perftest -
生成configure
autoreconf -i -
查看cuda.h目录,如果没有需要安装cuda驱动
locate cuda.h
./configure --help
export CUDA_H_PATH=/usr/local/cuda-12.4/targets/x86_64-linux/include/cuda.h
如果没有cuda.h需要安装cuda,参考兄弟篇。 -
安装依赖库
sudo yum install -y libibverbs-devel
yum install -y pciutils-devel -
配置
./configure -
编译
make -
测试
./ib_write_bw --use_cuda=4&
./ib_write_bw 1.1.1.2 --use_cuda=4
实操
-
下载
-
生成configure (首次生成不对 没有指定cuda.h环境变量)
-
查找cuda.h设置对应环境变量
-
指定cuda.h路径
解决问题
configure: error: ibverbs header files not found
sudo yum install libibverbs-devel
configure: error: pciutils header files not found, consider installing pciutils-devel
yum install -y pciutils-devel
编译报错: ./config.h中找不到CUDA_PATH
查看目录有:
解决办法:临时手动修改config.h,也可以配置环境变量后再生成config.h
并且config.h中不能指定路径,需要指定cuda.h的全路径,因为这里是include
修改后:
-
编译(可以看到这里有src/cuda_memory.o的文件被编译)
-
运行
对比自己编译的和系统的,可见新生成的支持了–use_cuda=xxx
运行效果:
可见已经初始化cuda,但是由于服务器上没有安装gpu会报错,不过不影响本文的逻辑