2017-02-15 3 views
2

cython에서 place vector를 추가하고 싶습니다. 그래서 scipy.linalg.cython_blas.daxpy을 사용하고 있습니다.scipy.linalg.cython_blas.daxpy를 호출하는 올바른 방법은 무엇입니까?

내 구문은 다음과 같습니다 axpy이 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) 

를 참조하십시오.

&은 처음 두 변수 (각각 int 및 double)에 필수입니까? 왜 sklearn 코드의 두 가지 첫 번째 인수에 대해 &이 없습니까?

답변

3

저는 이것이 BLAS와 CBLAS의 차이점이라고 생각합니다.

BLAS (scipy.linalg는 랩핑)는 FORTRAN 인터페이스를 사용하므로 대부분의 (/ all?) 인수 (정수와 같은 간단한 인수 포함)는 포인터에 의해 전달됩니다.

Scikit-learn looks to use CBLAS scipy.linalg 래퍼가 아닙니다. CBLAS는 C에 대해 더 자연스러운 인터페이스를 정의하는 것처럼 보입니다 (값으로 전달 된 간단한 인수).


따라서 Scipy Cython 래퍼를 사용하는 경우 올바르게 수행하는 것으로 보입니다.

관련 문제