2D 텍스처는 이미지 프로세싱 애플리케이션에서 CUDA의 유용한 기능입니다. 피치 선형 메모리를 2D 텍스처에 바인딩하려면 메모리를 정렬해야합니다. cudaMallocPitch
은 정렬 된 메모리 할당을위한 좋은 옵션입니다. 내 기기에서 cudaMallocPitch
에 의해 반환 된 피치는 512의 배수입니다. 즉, 메모리는 512 바이트 정렬입니다.2D 텍스처의 피치 정렬
장치의 실제 정렬 요구 사항은 내 장치에서 32 바이트 인 cudaDeviceProp::texturePitchAlignment
에 의해 결정됩니다.
내 질문은 : 2D 텍스처의 실제 정렬 요구가 32 바이트 인 경우
는 왜 cudaMallocPitch
수익 512 바이트의 메모리를 정렬합니까?
메모리 낭비가 아닙니까? 예를 들어 크기가 513 x 100 인 8 비트 이미지를 만들면 1024 x 100 바이트를 차지합니다.
나는 다음과 같은 시스템에서이 동작을 얻을 :
1 : 아수스 G53JW + 윈도우 8 64 + 지포스 GTX 460M + CUDA 5 + 코어 i7 740QM + 4기가바이트 RAM
2 : 델 인스 파 이런 N5110 + 윈도우 7 64 + 지포스 GT525M + CUDA 4.2 + Corei7 2630QM + 6기가바이트 RAM
이 어떤 하드웨어에인가? 나는 항상 cudaMallocPitch가보고 된 텍스쳐 정렬을 존중한다는 것을 발견했다. 내가 지금에 액세스 할 수있는 유일한 장치에서 바이트 단위로보고 정렬은 256이고, 나는 항상 피치 256 바이트의 배수를 얻을. – talonmies
질문을 업데이트했습니다. 질문에 상세한 시스템 구성을 추가했습니다. – sgarizvi