Предсказать время выполнения для плотной линейной алгебры

9

Я хотел бы предсказать время выполнения для плотных операций линейной алгебры на определенной архитектуре, используя определенную библиотеку. Я хотел бы узнать модель, которая приближает функцию

Fop::входные размерывремя выполнения

для таких операций, как матричное умножение, поэлементное сложение, треугольное решение и т. д.

Я подозреваю, что эти среды выполнения в основном предсказуемы из-за регулярности операций, когда вы выходите за рамки размеров проблем, которые удобно помещаются в кеше.

Вопросов:

  1. Это предположение реалистично? Является ли функция времени выполнения почти детерминированной?
  2. Можно ли предположить, что эта функция будет полиномиальной по размерам входов? (т.е. я ожидаю, что умножение плотной матрицы будет выглядеть примерно так:αn×k×m за Ank×Bkm а также α некоторый скалярный коэффициент)
  3. Есть ли где-то уже существующая работа по этому вопросу?
  4. Мой текущий план состоит в том, чтобы сделать регрессию наименьших квадратов с L1регуляризатором. Любые другие предложения?

Изменить: Чтобы было ясно, я ищу среды выполнения, а не FLOP или какие-либо другие общие показатели производительности. Я хочу ограничиться одной конкретной архитектурой.

MRocklin
источник

Ответы:

10

Я недавно работал именно над этой темой. Возможно, вы захотите взглянуть на нашу статью: http://arxiv.org/abs/1209.2364 .

Почему вы заинтересованы в прогнозировании линейной алгебры во время выполнения? Вы собираетесь использовать модель для определенной цели?

Эльмар Пайз
источник
Спасибо за ссылку. Я взгляну. Я заинтересован в этом, потому что подозреваю, что по той же причине вы. Автоматический выбор алгоритма и планирование для матричных выражений. В этой крайне регулярной и предсказуемой области должно быть возможно много других невозможных проблем.
MRocklin
6

Существует много уже существующих работ. Большинство разработчиков библиотек линейной алгебры публикуют результаты производительности в терминах производительности с плавающей запятой, которые можно преобразовать во время выполнения.

Например, поиск «производительности DGEMM» приводит к следующему: http://math-atlas.sourceforge.net/timing/3_5_10/index.html .

Как правило, вы можете ожидать, что ответы не будут гладкими. Там будут скачки или всплески в окрестностях определенных размеров проблемы (которые относятся к размеру кэша). Также следует ожидать плато в скоростях и, следовательно, линейные области для широкого диапазона размеров проблем. Я не ожидаю, что полиномиальные подгонки будут очень полезны.

Учитывая широкие усилия по сравнительному анализу, может быть проще составить таблицу результатов и интерполировать по мере необходимости. Какова твоя цель?

Билл Барт
источник
1
Флоп / с плато в DGEMMуказывает наn3регион, потому что это скорость флопов растет с размером проблемы. Я согласен, что кусочная подгонка должна быть намного лучше, чем попытка подгонки к одному полиному.
Джед Браун
По моему опыту, конвертировать флопы во время выполнения сложно. Я действительно забочусь только о времени выполнения в моем случае. Я проверяю выполнимость статического планирования.
MRocklin
По моему опыту, шипы / плато возникают только для небольших проблемных размеров. Как только вы выходите за пределы кеша, все становится довольно гладко. Я согласен, что добавление кусочных функций, вероятно, улучшит подгонку.
MRocklin