Полная версия этой страницы:
Оптимизация Speex под TI
sigmaN
May 30 2008, 23:17
Прошу помощи в оптимизации speex.
Для BF там есть оптимизированные функции на ассемблере, я хочу закодить аналогично для TI.
Если с TI хотя-бы как-то может разберусь, то BF я в глаза никогда не видел!
Если бы отозвался человек, который смог бы прокомментировать функции BF, то можно было-бы, соблюдая "ход мысли" закодить то-же для TI.
т.е. есть функция на Си, есть функция на BF АСМ, надо проанализировав то и другое(потому как асм функции переорганизованы и если и похожи на Сишные то только в общей логике) увидеть важные моменты, понять что изменили авторы и почему они это сделали.
После этого, я думаю, можно сделать и для TI, DSP ведь все похожи, главное уловить мысль.
Поможете?
Я не думаю что буквальное перекодирование ассемблера BF в другой - хорошая идея. Просто уже потому, что для этого нужно хорошо знать и тот и другой.
Из реализации для BF можно почерпнуть много пользы, но другим способом
1) во-первых отследив какие модули требуют оптимизации в первую очередь, то есть наиболее затратны. Оптимизированые модули для bf - это h-файлы в которые на ассемблере заинлайнены некоторые функции - начиная от математических операций заканчивая фильтрами и поисковыми процедурами
fixed_bf.h
filters_bf.h
ltp_bf.h
...
cb_search_bf.h
Из них можно выписать названия функций требующих оптимизации, что само по себе не очевидно
(какие фунуции требуют оптимизации а какие - нет)
2. Интересна и не слишком-то стандартна сама метода, которой был ассемблерный код интегрирован в С - ассемблерные вставки в h-файлы. Возможно, что для gcc этот подход естественный, но в обычной ситуации не очень типичный и не очень часто используется. Если Вы не собираетесь создавать суперкод на продажу, а собираетесь оптимизировать его только до достижения некоторых целевых показателей, устраивающих вас по быстродействию - то такой подход смотрится эффективным - Вы можете отдельно по-быстрому оптимизировать отдельные критические циклы в коде , а не только модули целиком
sigmaN
May 31 2008, 13:02
Вы правы. Именно по такому пути я и хочу пойти.
Мне нужна помощь именно в коментариях того, что перекодировано, каким образом(за счёт чего) цикл перекодированный именно так - стал работать быстрее.
В мануале спикса даны эти самые функции. Автор рекомендует именно их переписывать в первую очередь.
для BF именно их и оптимизируют(ну и ещё парочку дополнительно).
Супер код на продажу не нужен.
Нужно его по возможности ускорить, чтобы он смог работать прямо из flash(в лучшем случае). Но хотя-бы когда приемлимая часть кода в RAM...
Сейчас, даже если код этих самых критичных функциийи и RTS library запускать из оперативки - всё равно не получается realtime. Запустить весь код из оперативки можно - но только стандартный кодер+декодер.... Тогда он успеват без проблем.
Также, хочу прикрутить TI реализацию FFT к спиксу.
Когда займусь - тоже, наверняка, нужна будет ваша помощь...
Как считаете, вообще реально из флэши запустить, а оперативку только для переменных??
MALLOY2
Jun 2 2008, 12:46
какой у вас проц, у меня на 5509 6 каналов работает в реалтайме все написанное на С.
Проц) DSP контроллер TMS320F28335.
В реалтайме работает только сам кодер+декодер(без эхо и шумодава).
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.