cuBLAS cublasSgemv“分段故障”

时间:2017-12-11 12:10:20

标签: c++ cuda gpu cublas

运行cublasSegmv时出现分段错误。我的GPU是K20Xm。这是我的代码。

float *a, *x, *y;
int NUM_VEC = 8;
y = (float*)malloc(sizeof(float) * rows * NUM_VEC);
a = (float*)malloc(sizeof(float) * rows * cols);
x = (float*)malloc(sizeof(float) * cols * NUM_VEC);
get_mat_random(a, rows, cols);
get_vec_random(x, cols * NUM_VEC);

float *d_a = 0;
float *d_x = 0;
float *d_y = 0;

cudaMalloc((void **)&d_a, rows * cols * sizeof(float);
cudaMalloc((void **)&d_x, cols * NUM_VEC * sizeof(float);
cudaMalloc((void **)&d_y, rows * NUM_VEC * sizeof(float);
cublasSetVector(rows * cols, sizeof(float), a, 1, d_a, 1);
cublasSetVector(NUM_VEC * cols, sizeof(float), x, 1, d_x, 1);
cublasSetVector(NUM_VEC * rows, sizeof(float), y, 1, d_y, 1);
float alpha = 1.0f;
for (int i = 0; i < NUM_VEC; i++) {
  cublasSgemv(handle, CUBLAS_OP_T, cols, rows, &alpha, d_a, rows, d_x + i * cols, 1,0, d_y + i * rows, 1);
}

1 个答案:

答案 0 :(得分:1)

在我的有限测试中,错误是因为beta的{​​{1}}参数不能是cublasSgemv。您应该在主机或设备上为NULL变量分配内存。以下是我用来重现和修复错误的代码。

beta

希望这能解决问题。

相关问题