整容说文库 > 程序代码 > 教育资讯

[問題] CUDA 複數矩陣相乘 輸出結果只有一半正確

来源:学生作业帮助网 编辑:整容说文库 时间:2020/12/01 22:34:13 程序代码
[問題] CUDA 複數矩陣相乘 輸出結果只有一半正確程序代码
請問我試了一個複數矩陣乘法(相同位置的數值執行乘法運算),
分別把複數矩陣中的,實數與數值取出在分別坐乘法

以下是我部分的程式,
__global__ void CMatrix_mul2(cuComplex* input11, cuComplex* input22, cuComplex* output11)
{
int col = blockIdx.x*blockDim.x+threadIdx.x;
int row = blockIdx.y*blockDim.y+threadIdx.y;
output1[row*NNx+col].x = input1[row*NNx+col].x * input2[row*NNx+col].x   - input1[row*NNx+col].y * input2[row*NNx+col].y;
output1[row*NNx+col].y = input1[row*NNx+col].x * input2[row*NNx+col].y + input1[row*NNx+col].y * input2[row*NNx+col].x;
}

而這樣的做法,做了數次之後,最後我列印出來的值只有前一半是正確的,而後一半是錯誤的(ex 1024x1024複數矩陣, 正確的只有512x1024),

而我的block與thread是這樣設定的

int bx = (NNx + BLOCK_SIZE - 1) / BLOCK_SIZE;
dim3 blocks(bx, bx);
dim3 threads(16, 16);

是不是有什麼可以該善的呢,謝謝
这个没看出有问题,你还是把全部代码都贴出来吧。

另外你的BLOCK_SIZE一直是16吗?
发了请教贴,想挣的积分。
引用 1 楼 gogdizzy 的回复:
这个没看出有问题,你还是把全部代码都贴出来吧。


做了數次的循环中,in和out的数组空间的设定对吗?
程序代码