2013-04-14 2 views
0

를 원하는 ED 대각선 아래에있는 엘리먼트는 제로이다. 이 함수는 주어진 값을 다른 요소에 할당해야합니다.상 삼각 내가 상 삼각 행렬에서 <p>쿠다</p>과 상 삼각 행렬을 생성하는 행렬

아래 코드는 모든 값을 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) { ...