2012-09-15 28 views
1

Im試圖使用Cublas的cublasSaxpy函數。使用Cublas軟盤時出錯

看代碼:

#include <cublas_v2.h> 

float *dev_B; 
float *dev_tmp; 

cublasStatus_t stat ; 
cublasHandle_t handle ; 
... 
... 
stat = cublasCreate(&handle); 
if(stat != CUBLAS_STATUS_SUCCESS) 
{ 
    cout << "CUBLAS Initialization failed!" << endl; 
    exit(EXIT_FAILURE); 
} 
... 
... 
stat = cublasSetVector(N, sizeof(float), vB, N, dev_B, N); 
if(stat != CUBLAS_STATUS_SUCCESS) 
{ 
    cout << "CUBLAS setting vector failed" << endl; 
    exit(EXIT_FAILURE); 
} 

stat = cublasSetVector(N, sizeof(float), nullvec, N, dev_tmp, N); 
if(stat != CUBLAS_STATUS_SUCCESS) 
{ 
    cout << "CUBLAS setting vector failed" << endl; 
    exit(EXIT_FAILURE); 
} 
... 
... 
stat = cublasSaxpy(handle, N, 1.0f, dev_B, 1, dev_tmp, 1); 

所以,我利用CUDA 5.0 RC1日食nsight。我沒建這個項目,因爲我沒有完成它,但IDE給我讀下劃線在SAXPY操作:

Invalid arguments ' 
Candidates are: 
enum {cublas_api.h:3039} cublasSaxpy_v2(cublasContext *, int, const float *, const float *, int, float *, int) 

回答

3

在CUBLAS V2 API,所有的標量實際參數通過引用傳遞,而不是價值。 saxpy的正確呼叫會類似於:

const float alpha = 1.0f; 
stat = cublasSaxpy(handle, N, &alpha, dev_B, 1, dev_tmp, 1); 

這在文檔中有明確的討論。