16.09.2011, Изучение быстродействия и оптимизация алгоритма БПФ
Материал из SRNS
Korogodin (обсуждение | вклад) |
Korogodin (обсуждение | вклад) |
||
Строка 4: | Строка 4: | ||
Под исходные коды заведен проект [https://code.google.com/p/fft-for-arm-search fft-for-arm-search]. | Под исходные коды заведен проект [https://code.google.com/p/fft-for-arm-search fft-for-arm-search]. | ||
− | Исследуется БПФ от 2048 точек | + | Исследуется БПФ от 2048 точек. |
Согласно изученной литературе, минимальное количество операций достижимо для БПФ размером <math>N=2^{2n}</math> ("четной степени двойки"). Для него: | Согласно изученной литературе, минимальное количество операций достижимо для БПФ размером <math>N=2^{2n}</math> ("четной степени двойки"). Для него: | ||
Строка 12: | Строка 12: | ||
Остаются два рычага власти: варьировать N и менять разрядность и тип переменных в функции (уменьшать время умножения и сложения). | Остаются два рычага власти: варьировать N и менять разрядность и тип переменных в функции (уменьшать время умножения и сложения). | ||
− | По произведенным оценкам ARM'у на одно комплексное умножение (float+jfloat)*(float+jfloat) надо около 2.5-2.8 мкс (при расчете пришлось принять гипотезу исчезающе малого влияния суммирования на время вычисления). | + | По произведенным оценкам ARM'у на одно комплексное умножение (float+jfloat)*(float+jfloat) надо около 2.5-2.8 мкс (при расчете пришлось принять гипотезу исчезающе малого влияния суммирования на время вычисления). Отсюда, в изначальном варианте оценка свертки мс-ого сигнала для 10 частот - 300 мс. |
{| class="wikitable" border="1" | {| class="wikitable" border="1" |
Версия 15:34, 16 сентября 2011
<accesscontrol>SuperUsers</accesscontrol>
Под исходные коды заведен проект fft-for-arm-search.
Исследуется БПФ от 2048 точек.
Согласно изученной литературе, минимальное количество операций достижимо для БПФ размером ("четной степени двойки"). Для него:
- - число комплексных умножений;
- - число комплексных сложений.
Остаются два рычага власти: варьировать N и менять разрядность и тип переменных в функции (уменьшать время умножения и сложения).
По произведенным оценкам ARM'у на одно комплексное умножение (float+jfloat)*(float+jfloat) надо около 2.5-2.8 мкс (при расчете пришлось принять гипотезу исчезающе малого влияния суммирования на время вычисления). Отсюда, в изначальном варианте оценка свертки мс-ого сигнала для 10 частот - 300 мс.
Ревизия | ARM, ms | Pentium, ms | Примечание |
---|---|---|---|
2 | 23.3 | 0.28 | Исходный алгоритм с коэф, вх. и вых. данными во float |
0.28 | Входные данные int: изменений не замечено |
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.