前言
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 for ubuntu 部署日志
做高维数据索引实验,发现有个比较好的c/python/matlab库,yael,特此将安装过程记录下来:
版本信息
yael_v438
ubuntu 14.04 或者 14.10
准备工作
安装gfortran, blas, lapack, swig
$ sudo apt-get install gfortran
$ sudo apt-get install libblas3gf
$ sudo apt-get install liblapack3gf
$ sudo apt-get install swig
## 编译核心库
切换到yael目录下
```C
$ sudo ./configure.sh
$ # 如果CPU支持sse4:$ sudo ./configure.sh --msse4
$ # 打开生成的makefile.inc, 将其中的python2.x修改为计算机上
$ # 对应的python版本(例如我的是python2.7)
$ sudo make
此时yael下核心目录的C代码编译完毕,可以到test/c和prog下运行测试代码。