我們都知道,faiss是facebook開源的相似性搜索的開源項目,基于C++和python都有相應(yīng)的實現(xiàn),但是一直沒有g(shù)o版本,go要怎么去調(diào)用呢?可以直接通過go去調(diào)用c++的函數(shù)接口去實現(xiàn);
go調(diào)用faiss的例子可以參考這個文檔:faiss package - github.com/DataIntelligenceCrew/go-faiss - Go Packages ,我這里主要說一下怎么通過C++源碼編譯到動態(tài)庫供go調(diào)用的細(xì)節(jié);
首先官網(wǎng)的安裝文檔可以看這里:https://github.com/facebookresearch/faiss/blob/main/INSTALL.md
建議使用cmake編譯,按照官網(wǎng)的步驟你去編譯,當(dāng)然是會報錯的,會需要科學(xué)計數(shù)庫,這個官網(wǎng)推薦是intel的,我這里也介紹intel的mkl庫怎么安裝,intel的mkl庫還挺難找,記住我們需要安裝的是i這個東西Parallel Studio XE Runtime,在官網(wǎng)通過這個關(guān)鍵字搜索,去找到安裝方法,我這里就發(fā)出來ubuntu通過apt的安裝方法:Installing Intel? Parallel Studio XE Runtime 2020 Using APT Repository
通過添加apt源之后,我們可以安裝這個runtime庫里的任何軟件包了,直接安裝intel-mkl-runtime包就好,其他包faiss用不上, apt-get install intel-mkl-runtime
安裝好之后,這里也是個比較容易遇到問題的地方,你在用cmake去編譯,還是會報缺少數(shù)學(xué)庫,那是因為mkl安裝的位置默認(rèn)是在/opt/intel/psxe_runtime/linux/mkl/ 下面,安裝版本不同,psxe_runtime的名字可能有不同,這時候我們運行一下該命令:source /opt/intel/oneapi/setvars.sh intel64 ,把安裝的目錄設(shè)置到環(huán)境變量,讓cmake編譯的時候找得到mkl的依賴,當(dāng)然你也可以直接去/etc/ld.so.conf.d/ 目錄下,添加mkl安裝的動態(tài)庫路徑,例如我安裝的動態(tài)庫路徑/opt/intel/psxe_runtime/linux/mkl/lib/intel64_lin/ , 然后再執(zhí)行l(wèi)dconfig
安裝后數(shù)學(xué)庫之后,下一個就要安裝swig了,因為無論是python還是go,都需要用swig這個工具,進(jìn)行動態(tài)庫的編譯,如果你之前用conda安裝了低版本的faiss,那你系統(tǒng)肯定有swig,安裝最新版本的時候,大概率會報不支持-doxygen參數(shù)的錯誤,這時候,我們直接去源碼安裝最新的swig,官網(wǎng)地址:GitHub - swig/swig: SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages.
按照官網(wǎng)安裝說明編譯安裝即可,記得選最新的release tag安裝,如果使用configure方式安裝,記得安裝好所有的autoconf,autotools的那一系列工具,然后通過項目的autogen.sh腳本生成configure進(jìn)行預(yù)編譯。
安裝完swig之后,我們就可以繼續(xù)編譯faiss的接口了,如果之前機器上有swig,那編譯的時候一定要帶上新安裝的swig庫地址,所以最后的編譯參數(shù)是:
cmake -B ./ -DFAISS_ENABLE_GPU=OFF -DFAISS_ENABLE_C_API=ON -DBUILD_SHARED_LIBS=ON -DSWIG_DIR=/usr/local/share/swig/4.1.0 -DSWIG_EXECUTABLE=/usr/local/bin/swig
make && make install之后,libfaiss_c.so默認(rèn)會安裝到/usr/local/lib/ 目錄里面,如果你的默認(rèn)庫目錄沒有這個目錄,記得通過ldconfig配置一下,或者直接在/usr/lib下設(shè)一個軟鏈。
所有安裝完成,,按照例子go get一下go-faiss這個項目安裝go調(diào)用c++的庫,最后可以直接參照go-faiss項目的例子進(jìn)行faiss測試了
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁名稱:go調(diào)用faiss服務(wù)-創(chuàng)新互聯(lián)
文章位置:http://chinadenli.net/article4/hdgoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、品牌網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、電子商務(wù)、網(wǎng)站維護(hù)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容