ubuntu下yael庫調用與編譯示例

前言

yael提供了非常全且方便的feature向量數據上的基本運算,包括nn, vector, heap, kmeans(hkm), gmm, sorting, vlad 等等,見下圖yael的主要module和底層文件列表。之前已在ubuntu系統(14.04)上安裝好了yael庫(v438),發現寫c/c++代碼調用及編譯器來非常簡單,特此給出一個示例。

yael-module yael-files

部署示例

例如,寫一個程序,打算調用yael庫中的ivec_new_set(d, init_val)方法,動態生成一個d維int向量,初始值都設置成init_val。
① 編寫main.cpp文件如下:

#include <iostream>
#include <cstdlib>
// 由於yael是純c庫,因此在c++代碼中需要extern
extern "C"{
    #include <yael/vector.h>
}
using namespace std;

int main(void){
    int d = 3;
    int init_val = 10;
    int *vec = ivec_new_set(d, init_val);
    for(int i = 0; i < d; i++){
        cout << i << " " << vec[i] << endl;
    }

    free(vec); vec = NULL;
    return 0;
}

② Makefile文件中只需要在編譯選項中加入’-lyael’選項即可,如下:

CC = g++
CXXFLAGS = -g -O3 -Wall -Wfatal-errors -Wshadow -I/usr/local/include
LDLIBS = -L/usr/lib -lyael -lm

OBJ = main.o 

all: main
main: $(OBJ)
    $(CC) -o $@ $^ $(LDLIBS)

#############################
# Dependencies

# for i in *.cpp ; do cpp -I.. -MM $i; done

main.o: main.cpp 

.PHONY: clean
clean:
    -rm -f $(OBJ)

③ 編譯,生成

make clean
make
./main

效果如圖:


yael-sample-shot

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章