У меня есть комплексная матрица A с размером (M, N) и комплексный вектор x с размером (1, M).
Я хочу вычислить diag (* 1005)* x ) * A = [x1 * a11 ... x1 * a1N;...;xM * aM1 ... xM * aMN]
Я написал собственное ядро для этой проблемы:
__global__ void v_dot_m(cuFloatComplex *d_res, cuFloatComplex *d_vec, cuFloatComplex *d_mat, int rows, int cols)
{
unsigned int tid = threadIdx.x;
unsigned int index = tid + blockIdx.x * blockDim.x;
if(index >= rows * cols)
return;
d_res[index] = cuCmulf(d_vec[int(index/cols)],d_mat[index]);
}
Керенл может вывести правильный результат.
Однако яхочу знать, как использовать библиотеку Thrust для решения этой проблемы и повышения производительности.Как новичок в разработке, я не смог найти подходящий метод.
Я также хочу узнать, как я могу улучшить свое собственное ядро.