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__)"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82891.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82891.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82891.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++之string的模擬實現

string 手寫C字符串類類的基本結構與成員變量一、構造函數與析構函數二、賦值運算符重載三、迭代器支持四、內存管理與擴容機制五、字符串操作函數六、運算符重載總結 手寫C字符串類 從零實現一個簡易版std::string 類的基本結構與成員變量 namespace zzh { class string { …

修改Docker鏡像源

配置文件位置: sudo vim /etc/docker/daemon.json Docker 或 containerd 的鏡像加速器配置,旨在提高從 Docker Hub 拉取鏡像的速度。 { "features": { "buildkit": true, "containerd-snapshotter": true }, …

服務器帶寬線路的區別(GIA、CN2、BGP、CMI等)

服務器帶寬線路的區別(GIA、CN2、BGP、CMI等) 一、BGP線路 1. 定義與技術特點 BGP(Border Gateway Protocol,邊界網關協議)是一種用于不同自治系統(AS)之間交換路由信息的協議,屬…

從0到1搭建AI繪畫模型:Stable Diffusion微調全流程避坑指南

從0到1搭建AI繪畫模型:Stable Diffusion微調全流程避坑指南 系統化學習人工智能網站(收藏):https://www.captainbed.cn/flu 文章目錄 從0到1搭建AI繪畫模型:Stable Diffusion微調全流程避坑指南摘要引言一、數據集構…

VSCode + GD32F407 構建燒錄

前言 最近調試一塊 GD32F407VET6(168Mhz,8Mhz晶振) 板子時,踩了一些“啟動失敗”的坑。本以為是時鐘配置有誤,最后發現是鏈接腳本(.ld 文件)沒有配置好,導致程序根本沒能正常執行 ma…

AI繪畫提示詞:從零開始掌握Prompt Engineering的藝術

文章目錄 什么是AI繪畫提示詞?提示詞的基本結構主體描述場景/背景風格指定技術參數負面提示人物肖像模板風景模板 高級技巧權重調整混合風格顏色控制情緒氛圍 常見問題與解決方法手部變形問題構圖不理想風格不夠突出 提示詞示例庫科幻場景奇幻人物靜物畫 結語 在當今…

在 Linux 上安裝 Minikube:輕松搭建本地 Kubernetes 單節點集群

🔥「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 一、Minikube 是什么? Minikube 是 Kubernetes 官方推出的輕量級工具,專為開發者設計,用于在本地快速搭建單節點 Kube…

day41 python圖像識別任務

目錄 一、數據預處理:為模型打下堅實基礎 二、模型構建:多層感知機的實現 三、訓練過程:迭代優化與性能評估 四、測試結果:模型性能的最終檢驗 五、總結與展望 在深度學習的旅程中,多層感知機(MLP&…

JS數組 concat() 與擴展運算符的深度解析與最佳實踐

文章目錄 前言一、語法對比1. Array.prototype.concat()2. 擴展運算符(解構賦值) 二、性能差異(大規模數組)關鍵差異原因 三、適用場景建議總結 前言 最近工作中遇到了一個大規模數組合并相關的問題,在數據合并時有些…

一套qt c++的串口通信

實現了創建線程使用串口的功能 具備功能: 1.線程使用串口 2.定時發送隊列內容,防止粘包 3.沒處理接收粘包,根據你的需求來,handleReadyRead函數中,可以通過m_receiveBuffer來緩存接收,然后拆分數據來處理 源碼 seri…

設計模式-發布訂閱

文章目錄 發布訂閱概念發布訂閱 vs 監聽者例子代碼 發布訂閱概念 發布/訂閱者模式最大的特點就是實現了松耦合,也就是說你可以讓發布者發布消息、訂閱者接受消息,而不是尋找一種方式把兩個分離 的系統連接在一起。當然這種松耦合也是發布/訂閱者模式最大…

windows-cmd 如何查詢cpu、內存、磁盤的使用情況

在 Windows 中,您可以使用命令提示符(CMD)通過一些命令來查詢 CPU、內存和磁盤的使用情況。以下是常用的命令和方法: 1. 查詢 CPU 使用情況 使用 wmic 命令 wmic cpu get loadpercentage 這個命令會顯示當前 CPU 的使用百分比…

allWebPlugin中間件VLC專用版之截圖功能介紹

背景 VLC控件原有接口具有視頻截圖方法,即video對象的takeSnapshot方法,但是該方法返回的是一個IPicture對象,不適合在谷歌等現代瀏覽器上使用。因此,本人增加一個新的視頻截圖方法takeSnapshot2B64方法,直接將視頻截圖…

第Y5周:yolo.py文件解讀

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 本次任務:將YOLOv5s網絡模型中的C3模塊按照下圖方式修改形成C2模塊,并將C2模塊插入第2層與第3層之間,且跑通YOLOv5s。 任務…

寶塔安裝ssh證書報錯:/usr/bin/curl: symbol lookup error: curl_easy_header

原因: 你當前的 curl 命令版本是 7.70.0(不是系統默認版本,應該是你手動安裝的)。它鏈接的是 /usr/local/lib/libcurl.so.4,而不是 CentOS 系統默認的 /usr/lib64/libcurl.so.4。/usr/local/lib/libcurl.so.4 很可能是…

Apache SeaTunnel 引擎深度解析:原理、技術與高效實踐

Apache SeaTunnel 作為新一代高性能分布式數據集成平臺,其核心引擎設計融合了現代大數據處理架構的精髓。 Apache SeaTunnel引擎通過分布式架構革新、精細化資源控制及企業級可靠性設計,顯著提升了數據集成管道的執行效率與運維體驗。其模塊化設計允許用…

測試用例及黑盒測試方法

一、測試用例 1.1 基本要素 測試用例(Test Case)是為了實施測試而向被測試的系統提供的一組集合,這組集合包含:測試環境、操作步驟、測試數據、預期結果等4個主要要素。 1.1.1 測試環境 定義:測試執行所需的軟硬件…

硬件工程師筆記——運算放大電路Multisim電路仿真實驗匯總

目錄 1 運算放大電路基礎 1.1 概述 1.1.1 基本結構 1.1.2 理想特性 1.2 運算放大分析方法 1.2.1 虛短 1.2.2虛斷 1.2.3 疊加定理 2 同向比例運算放大電路 2.1 概述 2.1.1 基本電路結構 2.1.2 電路原理 2.2 仿真分析 2.2.1 電壓增益 2.2.2 相位分析 3 反向比例運…

板凳-------Mysql cookbook學習 (九)

第4章:表管理 4.0 引言 MySQL :: 員工樣例數據庫 :: 3 安裝 https://dev.mysql.com/doc/employee/en/employees-installation.html Employees 數據庫與幾種不同的 存儲引擎,默認情況下啟用 InnoDB 引擎。編…

MySQL省市區數據表

數據結構簡單展示一下 具體的可以點擊文章最后的鏈接地址下載 連接地址中有兩個文件一個是詳細的另一個是簡潔的 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for ln_new_region -- ---------------------------- DROP…