Выравнивание высоты тона для 2D текстур
2D текстуры являются полезной функцией CUDA в приложениях обработки изображений. Чтобы связать линейную память основного тона с 2D-текстурами, память должна быть выровнена.cudaMallocPitch
хороший вариант для выравнивания выделения памяти. На моем устройстве поле возвращаетсяcudaMallocPitch
кратно 512, т. е. память выровнена на 512 байт.
Фактическое требование выравнивания для устройства определяетсяcudaDeviceProp::texturePitchAlignment
что составляет 32 байта на моем устройстве.
Мой вопрос:
Если фактическое требование выравнивания для 2D-текстур составляет 32 байта, то почемуcudaMallocPitch
вернуть 512 байт выровненной памяти?
Isn»это пустая трата памяти? Например, если я создаю 8-битное изображение размером 513 x 100, оно будет занимать 1024 x 100 байт.
Я получаю это поведение в следующих системах:
1: Asus G53JW + Windows 8 x64 + GeForce GTX 460M + CUDA 5 + Core i7 740QM + 4 ГБ ОЗУ
2: Dell Inspiron N5110 + Windows 7 x64 + GeForce GT525M + CUDA 4.2 + Corei7 2630QM + 6 ГБ ОЗУ