Занятный блог (не первой свежести, но от этого не менее интересный) от Horace He про замеры скорости матричного умножения.
Естественно было бы ожидать, что скорость матричного умножения не зависит от элементов в матрицах ибо сам алгоритм может определяться размерами матриц, спецификой железа, но не от значений.
Однако, бенчмаркинг показывает, что умножение матриц из одних нулей / матриц из одних единиц работает заметно быстрее, чем в случае, когда элементы сэмплируются из равномерного или нормального распределения (процентов на 20%) 😱.
Оказывается, дело в троттлинге. Если элементы постоянно меняются, то транзисторы каждый раз переключаются при подгрузке элементов, и, чтобы вписаться в лимит по энергопотреблению, GPUшка автоматически снижает частоты. Для матриц из одних и те же элементов переключения транзисторов нет - соотвественно, и нет троттлинга.
Для дальнейшей верификации гипотезы автор пробует разные распределения - матрицы из одних чисел пи, бинарные, тернарные матрицы. Чем более случайное распределение - тем медленнее операция перемножения.
Эффект становится еще более выраженным при ручном снижении порога энергопотребления.
При этом заявленная производителем скорость операций на практике не достигается.
Post #702
2.49K
- ❤ 21
- 😱 10
- 👍 5