我想用cuda创建上三角矩阵
在上三角矩阵中,元素位于 对角线以下的是零。这个功能应该分配 其他元素的给定值。
但是在代码下方将所有值分配为0为什么?
__global__ void initUpperTrinagleGPU(int *devMatrix, int numR, int numC, int value) {
int x = blockDim.x*blockIdx.x + threadIdx.x;
int y = blockDim.y*blockIdx.y + threadIdx.y;
int offset = y * numC + x;
if(numC <= numR) {
devMatrix[offset] = 0;
}
else
devMatrix[offset] = value;
}
答案 0 :(得分:1)
这个条件错误if(numC <= numR)
,如果cols少于或等于行,则为真。
这可能有用,但它只是在我的头脑中,没有经过测试:
if(x >= y) {
devMatrix[offset] = 0;
}
else {
devMatrix[offset] = value;
}
请注意,您应该将其包装到另一个条件中,例如:
if(y < numR && x < numC) { ...