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

Armv7l或树莓派32位RPI 4B编译faiss

pip3 install faiss-cpu

当然找不到预编译的包

手动下载

git clone https://github.com/facebookresearch/faiss.git
cd faiss
#能需要切换到特定版本标签,例如 v1.7.1,这个版本Cmake 3.18可以过,因为apt install安装的cmake只更新到这里,再往后要自己编译了
git checkout v1.7.1

安装编译依赖:

这是最关键也最容易出错的一步。Faiss 依赖于:

  • C++ 编译器: g++ (通常通过 build-essential 包安装) CMake: 用于构建C++项目。 (sudo apt install cmake)
  • BLAS 库: 一个基础线性代数子程序库,如 OpenBLAS (推荐), ATLAS,
  • MKL。在树莓派上,通常安装 OpenBLAS:sudo apt install libopenblas-dev。这是性能的关键。
  • SWIG: 用于生成 Python 绑定,sudo apt install swig
  • OpenMP (可选但默认启用): 用于并行处理。有时在ARM平台上,如果遇到问题,可能需要禁用它或确保有合适的编译器支持。

sudo apt-get install libatlas-base-dev libatlas3-base

修改camkelist【重点】

如果你也是armv7l处理器架构,那就需要修改
定位到faiss/faiss/python/CMakeLists.txt

替换代码块:
找到下面显示的代码块(它应该在第 21-25 行左右):

替换此(原始块):

if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT WIN32)set_source_files_properties(${source} PROPERTIESSWIG_FLAGS -DSWIGWORDSIZE64)
endif()

替换为

if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT WIN32)if(CMAKE_SIZEOF_VOID_P EQUAL 8)# 64-bit systemset_source_files_properties(${source} PROPERTIESSWIG_FLAGS -DSWIGWORDSIZE64)else()# 32-bit systemset_source_files_properties(${source} PROPERTIESSWIG_FLAGS -DSWIGWORDSIZE32)endif()
endif()

配置编译选项 (CMake):

Faiss 使用 CMake 来配置构建。需要指定一些选项,例如:

  • Python 的路径和库。
  • 是否启用 GPU (在 faiss-cpu 的情况下应禁用)。
  • BLAS 库的类型和路径。
  • 是否构建 Python 接口。
cmake -DFAISS_ENABLE_GPU=OFF \-DFAISS_ENABLE_PYTHON=ON \-DCMAKE_BUILD_TYPE=Release \-DBUILD_SHARED_LIBS=ON \-DCMAKE_SWIG_FLAGS="-DSWIGWORDSIZE32" \..

编译安装

make -j4sudo make installcd build/faiss/python
python3 setup.py install
pip3 install .

验证安装

python -c "import faiss; print('Faiss version:', faiss.__version__)"

相关文章:

  • 【多线程初阶】线程状态 线程安全
  • AI书签管理工具开发全记录(六):前端管理基础框框搭建 Vue3+Element Plus
  • 跳动的爱心
  • PowerDesigner通过SQL反向生成类图
  • 【面试】喜茶Java面试题目
  • Axure疑难杂症:中继器图片替换功能优化(支持修改已有记录-玩转中继器)
  • C++ 游戏开发详细流程
  • 当 Python 遇上 Go:Sponge 如何成为替代 Django/Flask 的理想选择
  • JVM——回顾:JVM的起源、特性与系统构成
  • 无人机多旋翼倾转动力测试系统-适用于(eVTOL开发、缩比模型测试、科研教育)
  • 处理知识库文件_编写powershell脚本文件_批量转换其他格式文件到pdf文件---人工智能工作笔记0249
  • PHP 垃圾回收高级特性
  • dockers搭建mysql环境
  • 解决Docker存储空间不足问题
  • Redis 数据恢复的月光宝盒,闪回到任意指定时间
  • powershell 中 invoke-expression 报错解决
  • 机器视觉运动控制一体机在背靠背点胶焊锡机上的应用
  • ESP32-C3 Vscode+ESP-IDF开发环境搭建 保姆级教程
  • Apache SeaTunnel部署技术详解:模式选择、技巧与最佳实践
  • 数学建模之最短路径问题
  • .net做的大型网站吗/详情页页面页面
  • 关联网站有那些/外链网盘下载
  • php动态网站开发 网站成品/网页链接制作生成
  • 做net网站/厦门seo网络优化公司
  • 网站建设欣/网络营销的新特点
  • ps 做ui比较好的网站有哪些/产品推广运营方案