scipy.linalg.cython_blas.daxpy 的正确调用方式是什么?
What is the correct way to call scipy.linalg.cython_blas.daxpy?
我想在 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 代码中的前两个参数没有 &?
我觉得这就是BLAS和CBLAS的区别。
BLAS(scipy.linalg 为您包装)使用 FORTRAN 接口,因此大多数(/所有?)参数(包括简单的参数,例如整数)通过指针传递。
Scikit-learn looks to use CBLAS 而不是 scipy.linalg 包装器。 CBLAS 似乎定义了一个对 C 更自然的接口(按值传递的简单参数)。
因此,如果您使用的是 scipy Cython 包装器,那么您看起来是正确的。
我想在 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 代码中的前两个参数没有 &?
我觉得这就是BLAS和CBLAS的区别。
BLAS(scipy.linalg 为您包装)使用 FORTRAN 接口,因此大多数(/所有?)参数(包括简单的参数,例如整数)通过指针传递。
Scikit-learn looks to use CBLAS 而不是 scipy.linalg 包装器。 CBLAS 似乎定义了一个对 C 更自然的接口(按值传递的简单参数)。
因此,如果您使用的是 scipy Cython 包装器,那么您看起来是正确的。