最近项目使用到Kmeans算法,考虑到CPU实现速度上的限制,需要使用GPU加速,因此查到libKMCUDA库。
记录安装使用过程中遇到的一些问题。
1、kmcuda简介
项目内容:Large scale K-means and K-nn implementation on NVIDIA GPU / CUDA
该项目具体的介绍可参照github上的说明。
性能如下:
从技术上来讲,该项目是一个共享库,可导出kmcuda.h中定义的两个函数:kmeasn_cuda和knn_cuda。它具有内置的Python3和R语言本机扩展支持,因此可以从libKMCUDA导入kmeans_cuda或dyn.load("libKMCUDA.so")。
2、安装
Github上给出的安装命令:
git clone https://github.com/src-d/kmcuda
cd src
cmake -DCMAKE_BUILD_TYPE=Release . && make
复制代码
有几个参数需要注意一下:
-D DISABLE_PYTHON: 如果不想编译Python支持模块,将该项值为y,即增加-D DISABLE_PYTHON=y
-D DISABLE_R: 如果不想编译R支持模块,增加-D DISABLE_R=y
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0(修改为自己的路径):如果CUDA无法自动找到,则增加该项
-D CUDA_ARCH=52:指定当前机器的CUDA计算能力(GPU Compute Capability)
gcc:有文章提到,低版本的gcc编译器不支持,我当前版本是5.4,可满足需求。
1. 查询gcc版本
若版本过低,可安装gcc-5.4,具体安装参考如下博文:
2. 查询GPU算力
通过NVIDIA官网查询自己GPU服务器的GPU算力,地址如下:
我当前使用的服务器是GeForce RTX 2070,对应的算力是7.5。
因此,CUDA_ARCH设置为75, -D CUDA_ARCH=75
3. 配置GPU路径
为了能够自动查找相关库的路径,将cuda的路径配置到配置文件中。当前系统使用的shell为zsh:
在~/.zshrc中增加如下项:
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARAY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export