记录一种CUDA常见错误情景:结果随机

最近需要将之前的CUDA优化代码复盘,得到每一种优化下的加速比,因此,每一次优化后需要对比C,CUDA的结果,赶巧不巧,遇上了这么一种情况:

核函数功能 :核函数D_SDF1_SRC1_MultiChan需要在一个Block中完成多路的执行,因为可以共用数据,利用共享内存提供更快和更少次数的内存访问;其Block图如图所示:
在这里插入图片描述
于是希望在每一行的Thread中取不同的常数,使用threadIdx.y作为标识:

__global__ void SRC1Kernel_MultiChan(short *d_sr1, float *d_hsrc1, complexType *d_ssrc1, double *d_fc)
{
   
	int bx = blockIdx.x; //unique i
	int tx = threadIdx.x; //unique m
	int ty = threadIdx.y; //unique fc
	int stride = gridDim.x; 
	int stride_SM = blockDim.x * ty;

	__shared__ float add_re[Q * ChanNum];
	__shared__ float add_im[Q * ChanNum];
	__shared__ double fc_kernel[ChanNum];

	if (tx == 0) fc_kernel[ty] = d_fc[ty];
	__syncthreads();


	for (int i = bx; i < OLENGTH - Q; i += stride) {
   
		int t1 = tx + ((D * i) % I) * Q;
		int t2 = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值