当前位置: 首页 > news >正文

使用cmake安装faiss-GPU.so(无网或者内网情况下)

流程

GPU使用基本原理

1. 物理 GPU 卡(如 Tesla V100)

  • 是一块 硬件设备,可加速矩阵运算、向量计算等任务。

2. 操作系统不认识 GPU,必须靠 驱动程序(NVIDIA driver)

  • 类似网卡/显卡都需要驱动。

  • 安装完驱动后你才可以用 nvidia-smi 等命令看到 GPU。

3. CUDA 是 NVIDIA 的并行计算平台

  • CUDA Toolkit 包含运行库(driver API + runtime API)和开发工具。

  • 没有它,你的程序(如 PyTorch/FAISS)无法调用 GPU 进行计算。

4. cuDNN 是深度学习专用的加速库

  • 可选安装,用于 TensorFlow/PyTorch,但不是 FAISS 的前提。

5. FAISS GPU 模块 依赖 CUDA + NVIDIA 驱动

  • FAISS 的 gpu backend 编译时需要 CUDA 支持;

  • 运行时调用 GPU 也需要系统已加载 NVIDIA 驱动。

二、使用 GPU 的安装流程(按顺序执行)
步骤安装内容作用是否必须
1️⃣NVIDIA 驱动(如 V550+)操作系统识别 GPU✅ 必须
2️⃣CUDA Toolkit(如 11.8)为 GPU 提供开发环境✅ 必须
3️⃣设置环境变量让系统找到 CUDA 工具✅ 必须
4️⃣FAISS 编译或安装 GPU 版使用 GPU 加速索引搜索✅ 必须
5️⃣(可选) cuDNN深度学习库加速卷积等❌ 可选
全流程回顾(安装顺序图)
[硬件 GPU] ──▶ 安装 NVIDIA 驱动 ──▶ 安装 CUDA Toolkit ──▶ 配置环境变量│                                 │└────▶ 验证 nvidia-smi            └──▶ 验证 nvcc -V↓安装 FAISS GPU 版↓验证 Python 中 GPU 调用
验证GPU驱动
nvidia-smi
  • 驱动版本为 Driver Version: 560.28.03
  • Driver Version: 560.28.03
验证CUDA版本
nvcc -v

寻找nvcc的内容:

(base) [root@node24 ~]#find /usr/local -name nvcc 2>/dev/null
/usr/local/cuda-12.6/bin/nvcc
(base) [root@node24 ~]#export PATH=/usr/local/cuda-12.6/bin:$PATH
(base) [root@node24 ~]#export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH
(base) [root@node24 ~]#source ~/.bashrc
(base) [root@node24 ~]#nvcc --version
安装faiss的GPU版本
# 在Centos上面安装相关依赖
sudo yum update -y# 编译工具和依赖库
sudo yum groupinstall -y "Development Tools"sudo yum install -y epel-release
sudo yum install -y cmake3 \openblas-devel \libgomp \python3 \python3-devel \python3-pip \swig \gitcd faiss-1.10.0/
mkdir build && cd build
# 切换到llw权限下,安装Miniforge
cd /home/llw
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh
source ~/.bashrc# 从github里面下载googletest的1.12.1版本
# 修改faiss-1.10.0/test/CMakeLists.txt下的有关于googletest内容:
# 修改google的文件名字
mv google-release-1.12.1 googletest-src
include(FetchContent)
FetchContent_Declare(googletestSOURCE_DIR ${CMAKE_SOURCE_DIR}/googletest-src
)
set(BUILD_GMOCK CACHE BOOL OFF)
set(INSTALL_GTEST CACHE BOOL OFF)
FetchContent_MakeAvailable(googletest)# 手动添加 GTest::GTest 和 GTest::Main 别名(只影响 googletest)
add_library(GTest::GTest ALIAS gtest)
add_library(GTest::Main ALIAS gtest_main)find_package(OpenMP REQUIRED)target_link_libraries(faiss_test PRIVATEOpenMP::OpenMP_CXXGTest::gtest_main$<$<BOOL:${FAISS_ENABLE_ROCM}>:hip::host>
)
include(GoogleTest)
gtest_discover_tests(faiss_test)# 要修改的内容挺多的,要去添加google benchmark\gflags-2.2.2,还需要升级swig到4.1.1版本,然后需要去修改faiss-1.10.0下test和perls_tests目录下的CMakeLists.txt里面与google benchmark\gflags-2.2.2有关的内容,都是从本地获取,然后让CMakeLists去寻找本地的文件。
export PATH=/usr/local/cuda-12.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH
source ~/.bashrc   
cmake .. \-DFAISS_ENABLE_GPU=ON \-DFAISS_ENABLE_PYTHON=ON \-DCMAKE_CUDA_ARCHITECTURES="native" \-DCUDAToolkit_ROOT=/usr/local/cuda-12.2 \-DCMAKE_BUILD_TYPE=Release \-DBLA_VENDOR=OpenBLAS \-DFAISS_OPT_LEVEL=avx2 \-DBUILD_TESTING=OFF \-DPython_EXECUTABLE=$(which python3) \-DPython_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \-DPython_NumPy_INCLUDE_DIR=$(python3 -c "import numpy; print(numpy.get_include())") \-DCMAKE_CXX_FLAGS="-I/usr/local/cuda-12.2/include" \-DCMAKE_CUDA_FLAGS="-I/usr/local/cuda-12.2/include" \-DCMAKE_INSTALL_PREFIX=/home/llw/localmake -j$(nproc)
make install# 进入到build目录下面,修改tutorial/cpp/CMakeLists.txt里面针对4-GPU的内容,建立与libfaiss.a和libfaiss_gpu.a之间的关系,运行下面的内容:
make 4-GPU
# 开启另一个终端,使用下面的命令查看GPU的使用情况
watch -n 1 nvidia-smi
# 至此完成了faiss-GPU的编译和安装

相关文章:

  • Eureka 心跳续约机制
  • faiss上的GPU流程,GPU与CPU之间的联系
  • 【软件开发】上位机 下位机概念
  • 榕壹云信用租赁系统:免押金全品类租赁解决方案,区块链+多因子认证赋能
  • 【洛杉矶实况】这里正在发生什么?
  • STM32——“扩展动态随机存储器SDRAM”
  • GPU-CPU-FPGA三维异构计算统一内存架构实践:基于OpenCL的跨设备Kernel动态迁移方案(附内存一致性协议设计)
  • sqlmap 的基本用法
  • C++上学抄近路 动态规划算法实现 CCF信息学奥赛C++ 中小学普及组 CSP-J C++算法案例学习
  • Chroma 向量数据库学习笔记
  • Linux服务器安装mamba
  • nginx配置gzip压缩
  • 嵌入式自学之网络编程汇总(6.3-6.6 ,6.9)
  • 记录一次jenkins slave因为本地安装多个java版本导致的问题
  • PurgeCSS:CSS瘦身优化性能终极解决方案
  • SAP BTP连接SAP,云连接器
  • Python数据可视化艺术:动态壁纸生成器
  • Flink 系列之二十八- Flink SQL - 水位线和窗口
  • Dagster 实现数据质量自动化:6大维度检查与最佳实践
  • 关于空气钻井下等场合燃爆实时多参数气体在线监测系统技术方案
  • 网站怎样做自适应分辨率大小/杭州线上推广
  • 建设公司网站开发方案/免费正规大数据查询平台
  • 包头网站建设哪家好/软广告经典案例
  • 朝阳网站建设多少钱/百度一下就知道首页
  • 深圳优秀网站建设定制/自媒体推广渠道有哪些
  • 深圳龙岗做网站/建网站的步骤