그림에서 Histogram 용 CUDA 커널을 작성하고 있지만 커널에서 배열을 반환하는 방법을 모르고 있었고 다른 스레드가 읽을 때 배열이 변경됩니다. 그것을위한 가능한 해결책?CUDA 히스토그램 커널을 만드는 방법은 무엇입니까?
__global__ void Hist(
TColor *dst, //input image
int imageW,
int imageH,
int*data
){
const int ix = blockDim.x * blockIdx.x + threadIdx.x;
const int iy = blockDim.y * blockIdx.y + threadIdx.y;
if(ix < imageW && iy < imageH)
{
int pixel = get_red(dst[imageW * (iy) + (ix)]);
//this assign specific RED value of image to pixel
data[pixel] ++; // ?? problem statement ...
}
}
@para d_dst : 입력 이미지 TColor는 float4와 동일합니다.
@para 데이터 (또는 일반적으로 GPGPU)와 CUDA로 구현 될 때 [255]
extern "C" void
cuda_Hist(TColor *d_dst, int imageW, int imageH,int* data)
{
dim3 threads(BLOCKDIM_X, BLOCKDIM_Y);
dim3 grid(iDivUp(imageW, BLOCKDIM_X), iDivUp(imageH, BLOCKDIM_Y));
Hist<<<grid, threads>>>(d_dst, imageW, imageH, data);
}
그러나 내 과제는 CUDA를 사용하여 히스토그램을 적용 해보는 것입니다. 그리고 나는 그것을 끝낼 수 없다. 데이터가 단일성을 달성 할 수는 없다. – kitw