2012-08-29 2 views
1

이 있어야합니다 나는 내 문제식 포인터 - 투 - 객체 유형

__global__ void matvec(int *MAT, int *VEC, int *SOL) 
{ 
    int bx = blockIdx.x; 
    int tx = threadIdx.x; 
    int i = 32*bx+tx; 
    for (int j = 0; j < X; j++){ 
    SOL[i] = ((MAT[i][j] * VEC[j]) + SOL[i]) % 2; 
    } 
} 

CUDA
에 다음 코드 라인 6에서 나는 오류를 가지고있다 있습니다. 그것은 내 표현식에 포인터 - 객체 유형이 있어야한다고 말합니다.

답변

8

오류에 대한 이유는 2 차원 배열과 포인터를 치료하는 것입니다. 당신은 int *MATMAT 정의,하지만 당신은 MAT[i][j]로 액세스 할 수 있습니다.

내가 MAT[i*X + j]로 변경할 것, 제대로 MAT을 할당 한 가정. 또는, 당신은 제대로 할당 한 가정, 다시 int **MATMAT을 정의합니다.

(BTW, 이것은 CUDA 문제가 아니며 간단한 C 구문 오류입니다.)

+4

+1 마지막 문장. – talonmies

+0

스택 오버플로에 오신 것을 환영합니다! 답변으로 추가 정보를 게시하지 마십시오. 대신 원래 게시물에서 '수정'을 클릭하고 추가 정보 (코드)를 입력하십시오. 그런 다음 게시 한 잘못된 답변을 삭제하십시오. – harrism