【教程】Ubuntu编译运行Gunrock

发布于:2025-04-13 ⋅ 阅读:(16) ⋅ 点赞:(0)

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn]

如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~

编译这个库真的是非常艰难,官方给的教程实在简单,实际中遇到很多问题。

我已爬坑,下面的代码只需要挨个复制即可,已测试通过。

我的环境:

  • gcc、g++:8.4
  • cuda:11.7
  • cmake:3.29

开始编译

1、先下载仓库。

cd ~
git clone --recursive https://github.com/gunrock/gunrock.git
cd gunrock
mkdir build && cd build

2、升级cmake,太低版本会报错。

# 进入临时目录
cd /tmp

# 下载最新版 CMake(或改成你想要的版本)
wget https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-linux-x86_64.sh

# 添加执行权限
chmod +x cmake-3.29.2-linux-x86_64.sh

# 安装(比如安装到 /opt/cmake)
sudo mkdir -p /opt/cmake
sudo ./cmake-3.29.2-linux-x86_64.sh --prefix=/opt/cmake --skip-license

# 添加到环境变量(临时生效)
export PATH=/opt/cmake/bin:$PATH

# 查看版本确认
cmake --version

cd ~/gunrock/build

3、更新gcc、g++版本为8.x,太高的会报错。

# 添加 gcc/g++ 版本到 alternatives 系统
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 80

# 选择默认 gcc
sudo update-alternatives --config gcc
# 选择默认 g++
sudo update-alternatives --config g++

# 验证版本
gcc --version
g++ --version

4、手动下载cub,默认缺失的。

cd ~/gunrock/externals
git clone https://github.com/NVIDIA/cub.git

5、手动下载libcudacxx,默认缺失的。

cd ~/gunrock/externals
git clone https://github.com/NVIDIA/libcudacxx.git

6、手动替换par_nosync,cuda11.7已经改了,不然会报错。

cd ~/gunrock/build
find ../include ../examples -type f -name "*.cuh" -o -name "*.cu" -o -name "*.hxx" | xargs sed -i 's/thrust::cuda::par_nosync/thrust::cuda::par/g'

7、现在终于可以编译了。

cd ~/gunrock/build
rm -rf *

cmake .. \
  -DCMAKE_C_COMPILER=gcc-8   \
  -DCMAKE_CXX_COMPILER=g++-8   \
  -DCMAKE_CUDA_STANDARD=17   \
  -DCMAKE_CXX_STANDARD=17   \
  -DCMAKE_CUDA_FLAGS="--expt-extended-lambda \
  -I${PWD}/../externals/cub \
  -I${PWD}/../externals/libcudacxx/include"

make sssp

# 如果要编译所有的例子:
# make -j$(nproc)

8、测试运行示例。注意要加个参数-m,官方示例没加。

bin/sssp -m ../datasets/chesapeake/chesapeake.mtx


网站公告

今日签到

点亮在社区的每一天
去签到