PaviaЦитата:
По поводу оценки. Без глубокого знания архитектуры мы можем сделать оценку. А она может значительно отличаться от действительности в разы. К примеру КИХ филтер через умножение и сумирование и его аналог через БПФ. Первый имеет сложность O(N*M) второй O(N*log(N)). Но при этом хорошо оптимизировать второй трудно, а первый легко. Вот и выходит на практике что первый выгоднее по скорости чем второй. Так как работает в 5-50-200 раз быстрее.
5 оба максимально оптимизированы
50 не оптимизированы
200 оптимизирован только первый.
Я надеюсь, что у меня не будет таких затруднений. Алгоритмы, которые мне нужно оценить, в основном используют много матричных умножений и сложений, некоторые используют вычисления псевдообратных матриц и разложение на собственные вектора.
Цитата:
Так что без практике на железе трудно оценить.
Согласен, но я вот и хочу понят какие алгоритмы можно применить на практике, а какие нет. Больше даже интересует оценка
o(), а не
O().
У меня есть следующее соображение. Допустим я знаю, что Алгритму 3 требуется выполнить
умножений двух чисел за время
, а Алгоритму 1
умножений, и у меня есть устройство (ПЛИС например) которое за время
может выполнить максимум
умножений. Следовательно Алгоритм 1 никак не получится использовать на данной ПЛИС.
Это без учета возможности параллельных вычислений. Их тоже нужно будет как-нибудь учесть...
А еще нужно будет учесть memory bandwidth, что тоже печально. Вообще работы мне хватит на месяц точно.