上三角矩阵

时间:2013-04-14 12:14:19

标签: cuda

我想用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;
}

1 个答案:

答案 0 :(得分:1)

这个条件错误if(numC <= numR),如果cols少于或等于行,则为真。

这可能有用,但它只是在我的头脑中,没有经过测试:

if(x >= y) {
    devMatrix[offset] = 0;
}
else {
    devMatrix[offset] = value;
}

请注意,您应该将其包装到另一个条件中,例如:

if(y < numR && x < numC) { ...