Умножить каждую строку матрицы на каждый элемент вектора, используя тягу? - PullRequest
1 голос
/ 01 мая 2019

У меня есть комплексная матрица 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 для решения этой проблемы и повышения производительности.Как новичок в разработке, я не смог найти подходящий метод.

Я также хочу узнать, как я могу улучшить свое собственное ядро.

...