Наилучшая стратегия оптимизации использования полосы пропускания для 8 или 16-битных типов будет зависеть от схем доступа к памяти в рамках деформации. Если какой-либо конкретный перекос будет считываться сильно разбросанным способом, то использование типов размеров байтов и форсирование 32-битных размеров транзакций на деформацию может быть преимуществом, поскольку стандартные размеры транзакций будут тратить большую часть достигнутой пропускной способности. Но если шаблоны доступа внутри деформации будут попадать в смежные или почти смежные сегменты памяти, то, вероятно, лучшая стратегия будет заключаться в использовании uchar4
или ushort2
и нацеливании на достижение пропускной способности, используя объединенные 32-битные операции чтения на поток из глобальная память в массив разделяемой памяти, и все потоки в блоке считываются из этого. Может также стоить оценить производительность текстуры для нагрузок, если доступ на основе деформации содержит разброс.
Этот pdf содержит много полезной информации об оптимизации производительности памяти в Fermi. Я бы посоветовал вам потратить некоторое время на его чтение. Бенчмаркинг - действительно единственный способ оценить лучший подход для данного приложения, и в этом документе есть несколько полезных советов о том, как понять производительность памяти для данного фрагмента кода.