Перейти к содержанию
    

Торомоза с БПФ

Добрый день всем!

 

Происходят странные вещи. Работаю с C6670. Необходимо выполнять двумерное комплексное БПФ от матрицы размером NxN, где N=128. По скоростному отчёту (benchmark) TI одно ядро этого проца должно выполянть одномерное комплексное БПФ для N=128 при за 1680 циклов, т.е. при тактовой частоте F=983МГц около 2мкС. Правдоподобно. Но начальство этому не поверило и заставило меня реально в этом убедиться.

 

Взял исходник функции DSP_fft32 из примера fft_example пакета DSPLIB 3.1. Загнал его в цикл NxNxM (для имитации 2D-FFT), где M-взято равным 50, что бы время выполнения было значительным.

Запусаем в отладчике CCS 5.1 на одном ядре. Профилировщиком я даже не стал пользоваться - просто по секундомеру засекали.

26 секунд! Если поделить на NxNxM, то получается, что одно 128-точечное компл. БПФ выполняется около 30мкс!! Но это же, простите, показатели DSP 90х годов!

 

Корифеи помогите, в чём здесь фокус?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как настроен CASH? где хранятся исходные данные? куда они уходят? правильно ли настроена тактовая (PLL)?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как настроен CASH? где хранятся исходные данные? куда они уходят? правильно ли настроена тактовая (PLL)?

 

Добрый день, bav, хоть кто-то ответил :)

 

Кто такой CASH, к стыду своему, не знаю. И исходные данные (один и тот же массив размера 2N) и результаты расчёта (массив такого же размера) храняться в L1D и никуда не передаются.

По поводу PLL: после выбора "Connect Target" консоль сообщает следующее: "PLL1 setup for DSP @ 983.0MHz, ..."

 

Хотя мысль хорошая: а реально ли у меня тактовая частота такова? Надо будет проверить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И исходные данные (один и тот же массив размера 2N) и результаты расчёта (массив такого же размера) храняться в L1D и никуда не передаются.
А как насчёт банков памяти в этом ядре - имеются в нём банки памяти?

Насколько помню из C5502, там были 2-портовые банки памяти, которые допускали не более двух обращений к банку за такт. Соответственно - если требуется больше обращений за такт, то расположение данных в одном банке приводит к тормозам. И приходилось входные/выходные данные фильтров и таблицы коэффициентов разносить по разным банкам памяти для получения полной скорости.

 

Сейчас работаю с ядром C674x и пока ничего не знаю про его банкинг - есть ли он здесь?

 

Взял исходник функции DSP_fft32 из примера fft_example пакета DSPLIB 3.1.
Вы именно исходник DSP_fft32 взяли? Или скомпилённую библиотеку подключили? Если первое - возможно у вас эта функция скомпилялась неоптимально. Попробуйте библиотечную. Я использую второй вариант.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О. ура, разобрался! Особый фэнкс jcxz'у, он меня навёл на решение этим сообщением:

 

Вы именно исходник DSP_fft32 взяли? Или скомпилённую библиотеку подключили? Если первое - возможно у вас эта функция скомпилялась неоптимально. Попробуйте библиотечную. Я использую второй вариант.

 

просто в настройках проекта пришлось по максимуму поубивать всякие добавки, которые пришлёпывают для отладки. Теперь нельзя посмотреть не переменные, ни память, ничего. Но зато сразу всё ускорилось на порядок, по тестам выполнение одного БПФ - 1,7мкС, у меня получается чуть больше двух микросекунд. Это уже приемлимо.

Хотя остался вопрос, что ж там сборщик такого понадобавлял в отладочный проект, что так всё тормозит?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...