版主:您好!
我自己编写了一个核函数,设置了相应的执行参数,目的是实现两个矩阵之间行与行的相乘,矩阵大小都是32*new_size;程序无法正确的显示结果,请教版主,我这个核函数编写的错误与否?具体代码如下:
dim3 dimBlock(256,1);
dim3 dimGrid((new_size+dimBlock.x-1)/dimBlock.x,(channel_num14+dimBlock.y-1)/dimBlock.y);
ComplexPointwiseMulAndScale<<<dimGrid,dimBlock>>>(d_signal,d_filter,new_size,1.0f/new_size);
以上代码设置参数及其调用核函数,核函数如下:
//频域相乘的内核函数
static __global__ void ComplexPointwiseMulAndScale(Complex* a,Complex* b, int size, float scale)
{
const int bid = blockIdx.y ;
const int tid = blockIdx.x * blockDim.x + threadIdx.x;
const int numThreads=blockDim.x*gridDim.x;
for (int i=;bid;i<32;i+=gridDim.y)
{
for (int j = tid; j < size; j +=numThreads)
{
a[i*size+j] = ComplexScale(ComplexMul(a[i*size+j], b[i*size+j]), scale);
}
}
在此谢谢版主!