Правильный расчет эффективной полосы с y = Ax + b? - PullRequest
0 голосов
/ 01 июля 2011

Я хотел бы рассчитать ширину полосы умножения и сложения матричного вектора: (предположим, A = M, умноженное на N, большое) y = A * x + b

Но я немного запутался в том, что прочитал ичисло записи в количестве байтов, считанных из глобальной памяти:

- эффективная пропускная способность:

bytesReadWrite = M*N (for reading A) + N(for read x) + M (for read b)  + M(for write y)

или

bytesReadWrite = M*N (for reading A) + M*N (for read x) + M (for read b)  + M(for write y)

M * N для x, потому чтов основном мы читаем один раз весь x для каждой строки (также, если мы работаем с общей памятью, мы в конечном итоге читаем один раз вектор x для каждой строки)

Есть ли у кого-нибудь полезные советы о том, что является правильным выбором?Я действительно не понимаю ...

Я склонен использовать первый расчет, но почему?Имеет ли это смысл?

Большое спасибо !!!

1 Ответ

1 голос
/ 01 июля 2011

Это почти наверняка ничего из вышеперечисленного.Что касается пропускной способности памяти, современные процессоры будут загружать все элементы, с которыми нужно работать, один раз в кэш 2-го уровня и работать с ними оттуда, после чего результаты будут записаны обратно в память для любых измененных элементов.Фактически, ваша пропускная способность - это всего лишь общий размер всех задействованных элементов.Примечание: даже это упрощение, поскольку оно не учитывает эффекты потоковой передачи, не говоря уже о разбиении на страницы памяти.Для потоковой передачи весьма распространено, чтобы одна матрица работала с большим набором данных (например, вычисления в трехмерной графике);в этом случае матрица загружается в кэш L2 (и предположительно для разумно оптимизированного кода в регистры оттуда) один раз, а затем векторы загружаются.Еще раз, модель не является действительно полной без понимания современных методов разбиения по памяти;есть гигантское различие в вышеприведенном, если матрица и векторы хранятся, например, на разных страницах памяти;не говоря уже о серьезных оптимизациях в объединении векторов для «потоковой передачи» в кэш L2.И даже в этом случае предполагается, что модель процессора выполняет матричную математику;добавление графического процессора к изображению снова очень сильно меняет ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...