ucx 编译安装检验方式备忘
1, 下载配置编译
预备依赖:
sudo apt-get install valgrind
sudo apt-get install libibverbs-dev librdmacm-dev
1.1 下载源码
git clone --recursive https://github.com/openucx/ucx.git
cd ucx/
git checkout v1.16.0
git 下来的代码,需要跑一两次 autogen.sh脚本:
./autogen.sh && ./autogen.sh
mkdir build
cd build/
1.2 配置
cuda 和 rocm 目前不能共同编译,在有些数据结构的名字相同,头文件include之后会有重复定义出现,例如 dim3 结构体的定义。
选择任一命令配置,
配置为 release 版本:
cuda 版本:
../contrib/configure-opt --with-cuda=/usr/local/cuda --prefix=$PWD/../../local-cuda
生成的Makefile中会有如下非空的 CUDA_XXX的定义:
rocm 版本:
../contrib/configure-opt --with-rocm=/opt/rocm --prefix=$PWD/../../local-rocm
生成的Makefile中会有如下非空的 HIP_XXX的定义:
配置为 debug 版本:
cuda 版本:
../contrib/configure-devel --with-cuda=/usr/local/cuda --prefix=$PWD/../../local-dbg-cuda
rocm 版本:
../contrib/configure-devel --with-rocm=/opt/rocm --prefix=$PWD/../../local-dbg-rocm
1.3 编译
然后编译:
make -j
编译结束:
安装:
make install
2, 检验 by example
2.1 编译成果
$ ifconfig
$ ls
2.2 运行 server 端,但不运行client 端
$ ./uct_hello_world -d wlp7s0 -t tcp -p 77777
-p 77777 , -p 后边的值取得大一点,以免系统已经使用,也可以是用网络工具看一下,找一个未使用的端口号。
2.3 运行client 端
$ ./uct_hello_world -d wlp7s0 -p 77777 -t tcp -n localhost
测试成功。
示例代码700+行,就不贴代码分析了,主要是通过socket 发送一个 buffer中的数据