2
나는 cuda를 처음 사용했습니다. 나는 3 채널 (색상)의 2D 이미지 (너비, 높이)를 가지고 있습니다. 내가 원하는 무엇 내가 너비와 높이에 대한 Z에 대한 색상 X, Y를 사용 점심 3D 블록이쿠다 인덱스 맵 3D 블록, 2D 그리드
kernel_2D_3D<<<dim3(1,m,n), dim3(3,TILEy,TILEz)>>>(float *in, float *out)
같은 2D 그리드이 커널입니다. 내 질문 : 어떻게 이미지의 행과 열을 계산할 수 있습니다 :
- 부호없는 int Row =?
- 부호없는 정수 Col =?
및 I는 높이 폭 (Z)에 대해 Y를 사용하는 경우, 글로벌 고유 인덱스
__device__ int getGlobalIdx_2D_3D()
{
int blockId = blockIdx.x+ blockIdx.y * gridDim.x;
int Idx = blockId * (blockDim.x * blockDim.y * blockDim.z)
+ (threadIdx.z * (blockDim.x * blockDim.y))
+ (threadIdx.y * blockDim.x)
+ threadIdx.x;
return Idx;
}
좋아, 나는이 답변이 사실인지 아닌지를 확신 할 수 없다고 생각한다. 일부 독서 후에 나는 내 노트북에서 그것을 할 수 없다는 것을 발견했다. // CUDA를 지원하는 장치가 하나있다. // 장치 0 이름 : GeForce 9120M GS // 전산 능력 : 1.1 // 최대 전역 메모리 크기 : 536150016 // 최대 상수 메모리 크기 : 65536 // 블록 당 최대 공유 메모리 크기 : 16384 // 최대 블록 크기 : 512 x 512 x 64 // 최대 그리드 크기 : 65535 x 65535 x ** 1 ** // 워프 크기 : 32 – ALMIStack
@ALMIStack ... 오해 때문에 죄송합니다. 나는 잘못된 가정을 제거했습니다. – sgarizvi
그래서 grid.z = 1이고 ((n + TILEz-1)/TILEz) – ALMIStack