调用scipy.linalg.cython_blas.daxpy的正确方法是什么?

时间:2017-02-15 11:37:59

标签: python scipy cython blas

我想在cython中添加矢量添加,所以我使用scipy.linalg.cython_blas.daxpy

我的语法是:

daxpy(&n_samples, &tmp, &Q[0, ii], &inc, &G[0], &inc)

但在scikit-learn code,我读了

axpy(n_samples, -w[ii], &X_data[ii * n_samples], 1, R_data, 1)

其中axpy早先被定义为daxpy。

是&对于前两个变量(分别为int和double)是强制的?为什么没有&对于sklearn代码中的两个第一个参数?

1 个答案:

答案 0 :(得分:3)

我认为这只是BLAS和CBLAS之间的区别。

BLAS(scipy.linalg为你包装)使用FORTRAN接口,因此大多数(/ all?)参数(包括简单的参数,如整数)都是通过指针传递的。

Scikit-learn looks to use CBLAS而不是scipy.linalg包装器。 CBLAS似乎定义了一个对C更自然的接口(通过值传递的简单参数)。

因此,如果你正在使用scipy Cython包装器,那么你看起来是正确的。

相关问题