日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go 调用faiss服务

發(fā)布時間:2024/1/1 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go 调用faiss服务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? 我們都知道,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的接口了,如果之前機(jī)器上有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測試了

總結(jié)

以上是生活随笔為你收集整理的go 调用faiss服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。