在波束形成中除了矩阵乘法,还需要一个矩阵转置。
其实用C语言来实现矩阵转置很简单,但是速度可能比较慢。参考博文:CUDA矩阵转置
const int TILE_SIZE = 4;
__global__ void TransposeKernel(const Matrix A, const Matrix B)
{
int i = blockIdx.x * TILE_SIZE + threadIdx.x; // column
int j = blockIdx.y * TILE_SIZE + threadIdx.y; // row
B.elements[j + i*B.stride] = A.elements[i + j*A.stride]