0

cudaで上三角行列を作りたい

上三角行列では、対角線の下にある要素 ed はゼロです。この関数は、指定された値を他の要素に割り当てる必要があります。

しかし、以下のコードはすべての値を 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;
}
4

1 に答える 1

1

この条件は間違ってif(numC <= numR)います。行より列が少ないか等しい場合は真です。

これはうまくいくかもしれませんが、それは私の頭の外にあり、テストされていません:

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

これを次のような別の条件にラップする必要があることに注意してください。

if(y < numR && x < numC) { ...
于 2013-04-14T12:28:23.210 に答える