2013-04-14 174 views
0

我想創建上三角矩陣與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

這種情況是錯誤if(numC <= numR),如果有小於或等於比的cols行這是真的。

這可能會實現,但它只是從我的頭,沒有測試:

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

注,你應該包裝成像另一個條件是:

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