SIMD-программирование: гибридный подход для структуры структуры данных - PullRequest
2 голосов
/ 28 апреля 2020

В Справочном руководстве по оптимизации Intel https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf рассматривается преимущество компоновки данных Structure-Of-Arrays (SoA) для обработки SIMD по сравнению с традиционной компоновкой Array-Of-Structures (AoS). Это понятно

Однако есть один аргумент, который я не понимаю. На стр. 4-23 говорится, что «SoA может иметь недостаток, заключающийся в необходимости большего числа независимых ссылок на потоки памяти. Для вычислений, использующих массивы X, Y и Z (см. Пример 4-20), потребуются три отдельных потока данных. может потребовать использования большего количества предварительных выборок, дополнительных вычислений генерации адресов, а также большего влияния на эффективность доступа к страницам DRAM. " Чтобы смягчить эту проблему, они рекомендуют гибридный подход (пример 4-22).

Может кто-нибудь объяснить, что такое «три отдельных потока данных», «предварительные выборки» и «дополнительные вычисления генерации адресов» и «влияние на эффективность доступа к страницам DRAM»?

При { ссылка } Питер Кордес обсуждает два эффекта: три разных потока данных для X, Y и Z увеличат ie три регистра для адресов, и если три массива будут отображены в одинаковые строки кэша, частое удаление кэша будет проблема. Однако регистры не являются редким ресурсом на современных процессорах, и многоцелевые кэши должны уменьшить проблему с кэшем.

...