OpenCL: векторные регистры NVIDIA (float4, float8, ..) против векторных регистров Intel - PullRequest
0 голосов
/ 11 февраля 2012

Я знаю, что для Intel оптимизированы векторные регистры, например, микроархитектура SandyBridge (SSE + AVX), но как насчет графического процессора NVIDIA?

Некоторые источники, которые я где-то читал (я забыл где), утверждали, что используют векторрегистры бесполезны для графических процессоров NVIDIA. Однако у меня был тест-запуск программы с векторными регистрами на графическом процессоре, и по сравнению с одним без них они дали мне apx.Ускорение в 1,7 раза.

К вашему сведению, ЦП Intel дает ускорение в 1,25 раза только для той же программы.

Так что, если NVIDIA оптимизирует эти векторные регистры, может кто-нибудь дать мне объяснение или источник для чтения?Мне это нужно для документации.Спасибо.

1 Ответ

2 голосов
/ 12 февраля 2012

Вероятным источником повышения производительности графического процессора NVIDIA будет пропускная способность памяти.Аппаратное обеспечение может хранить и загружать 64- и 128-разрядные типы в одной транзакции на каждом многопроцессорном устройстве, что снижает общую задержку и увеличивает эффективную пропускную способность.Аппаратное обеспечение может обрабатывать 256 и 512 байтовых размеров транзакций на деформацию, поэтому соответствующим образом выровненный запрос float4 загрузки / сохранения для деформации может быть обслужен в одной транзакции, а запрос float8 загрузки / сохранения - в двух транзакциях.Это может привести к более высокому использованию пропускной способности глобальной памяти при любом уровне занятости.Посмотрите на слайде 35 из этой презентации Василия Волкова из Калифорнийского университета в Беркли для примера ядра memcpy в CUDA, которое иллюстрирует влияние размера шрифта (и результирующих размеров транзакций) на пропускную способность памяти.

...