Grizzly 0 5 августа, 2019 Опубликовано 5 августа, 2019 · Жалоба Сравниваю результаты профилирования демодулятора, написанного на С, для одного ядра С66 на 1.2 ГГц и Intel 6700 c 3.6 ГГц. Данные fixed-point. Intel выигрывает минимум в 2-3 раза по быстродействию. Реально ли всякие кордики, FFT, частотные дискриминаторы допилить интринсиками, чтобы раз в 5 ускориться? Ассемблер на С66 совсем не хочется применять. Ну FFT можно аппаратный использовать, но он не так много общего времени занимает. Понятно, что для сигналов под 30 МГц нужны ПЛИС, но всё-таки хочется впихнуть в DSP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 49 5 августа, 2019 Опубликовано 5 августа, 2019 · Жалоба у i7 ещё видеокарта есть с сотней двойных гигафлопсов. или 400 одинарных Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 5 августа, 2019 Опубликовано 5 августа, 2019 · Жалоба 2 часа назад, _pv сказал: у i7 ещё видеокарта есть с сотней двойных гигафлопсов. или 400 одинарных Угу. Получается, что нынче DSP только по TDP выигрывают. Процессоры общего назначения в разы стали быстрее, если смотреть с точки зрения необходимой скорости вычислений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 6 августа, 2019 Опубликовано 6 августа, 2019 · Жалоба Хм, заменил cordic на вычисление первой разности в ЧМ-детекторе: https://www.embedded.com/design/configurable-systems/4212086/DSP-Tricks--Frequency-demodulation-algorithms- На интеле в 2 раза стало быстрее работать, а на сигнальнике процентов на 5% медленнее. Вот и избавился от пары десятков итераций кордика... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealth-coder 2 6 августа, 2019 Опубликовано 6 августа, 2019 · Жалоба On 8/5/2019 at 8:43 PM, Grizzly said: Сравниваю результаты профилирования демодулятора, написанного на С, для одного ядра С66 на 1.2 ГГц и Intel 6700 c 3.6 ГГц. Данные fixed-point. Intel выигрывает минимум в 2-3 раза по быстродействию. Реально ли всякие кордики, FFT, частотные дискриминаторы допилить интринсиками, чтобы раз в 5 ускориться? Ассемблер на С66 совсем не хочется применять. Ну FFT можно аппаратный использовать, но он не так много общего времени занимает. Понятно, что для сигналов под 30 МГц нужны ПЛИС, но всё-таки хочется впихнуть в DSP. Смысл в разработке под сигнальник без интринсиков вообще не ясен, ИМХО в этом самый цимес. Тем более, что можно основную фазу разработки провести в какой-нибудь комфортной визуал студии, используя программную эмуляцию интринсиков. Во сколько раз можно ускориться - сильно зависит от задачи и того, с чем сравнивается. Для типовых задач ЦОС обычно вполне реально. Ну и не следует пренебрегать библиотеками от техаса, тоже неплохо написаны. По поводу 30 МГц - бабка надвое сказала, downlink или uplink LTE 20 МГц с аппаратными сопроцессорами турбо и витерби обрабатывается без проблем одним ядром, т.е. сильно зависит от задачи. On 8/5/2019 at 9:38 PM, _pv said: у i7 ещё видеокарта есть с сотней двойных гигафлопсов. или 400 одинарных Если задачу можно распараллелить на много маленьких то да, в противном случае толку либо никакого, либо результаты сравнимы. 23 hours ago, Grizzly said: Получается, что нынче DSP только по TDP выигрывают. Габариты, куча высокоскоростных интерфейсов прямо на СоКе без необходимости дополнительных сетевых адаптеров и мостов, аппаратные сопроцессоры декодеров, FFT, RAKE. Т.е. опять все упирается в решаемую задачу. И такое положение вещей было, в общем-то, всегда, чистая вычислительная мощность сигнальников была примерно равна процессорам от интела и амд, наличие специнструкций компенсировало более низкую тактовую (речь про задачи ЦОС, конечно). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 6 августа, 2019 Опубликовано 6 августа, 2019 · Жалоба 11 минут назад, stealth-coder сказал: По поводу 30 МГц - бабка надвое сказала, downlink или uplink LTE 20 МГц с аппаратными сопроцессорами турбо и витерби обрабатывается без проблем одним ядром, т.е. сильно зависит от задачи. В этом кейсе, безусловно, сигнальники хорош. Плюс ещё аппаратный FFT. Самому сигнальнику остаётся точная синхронизация, оценка канала и демаппер. Плюс автомат состояний. Если всякие свёртки тоже через аппаратный FFT считать, то львиная доля затрат снимется и с этой части. Стоит же что-то нестандартное начать делать, то уже не все так гладко. Взять тот же WiFi. Пакеты во времени случайны. Надо в полосе 20 МГц постоянно искать автокорреляционной двух преамбул. Тактовая 1.2 ГГц. 60 тактов на комплексный отсчёт. Можно считать скользящими способами автокорреляцию и мощность. Где-то впритык, наверное, и получится. Ещё же всякие фоновые задачи что-то отжирают. Дальше проще. После синхронизации всё тот же аппаратный сопроцессор FFT. Ещё возникает проблема, если куски отсчётов большие, которые приходится класть в DDR3. Тут ещё по сравнению с L2 будут потери. Похоже, у меня сейчас в этом проблема. Надо, наверное, стараться выходить в реал-тайм, чтобы обрабатывать мелкие порции данных в L2, а не отложенного из DDR3. 25 минут назад, stealth-coder сказал: Ну и не следует пренебрегать библиотеками от техаса, тоже неплохо написаны. Интересно, в реальности для Arctan2 будут обещанные 24 такта? Насколько в боевых условиях от лабораторных бенчей будут различия? http://www.ti.com/processors/digital-signal-processors/core-benchmarks/core-benchmarks.html Завтра буду пробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealth-coder 2 7 августа, 2019 Опубликовано 7 августа, 2019 · Жалоба 10 hours ago, Grizzly said: Ещё возникает проблема, если куски отсчётов большие, которые приходится класть в DDR3. При правильно настроенном кэше L1 вижу разницу в 1-2%. Всё, что требует рандомного доступа (обычно перемежитель), обязательно размещать в L2. 11 hours ago, Grizzly said: Насколько в боевых условиях от лабораторных бенчей будут различия? Пользовался библиотечными FFT, комплексные и вещественные фильтры, быстрое копирование, различия на уровне стат. погрешностей. Также неплохо пользоваться "здравым смыслом". Например, в OFDM эквалайзере использовал плавающую точку, но ограничился точностью вычисления 1/Х в 16 бит (одна итерация Ньютона-Рафсона), оказалось достаточно и стало настолько быстро, что даже с фиксированной точкой не стал заморачиваться, хотя даже нашёл пример реализации для WiMax (см. вложение). sprp530.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealth-coder 2 7 августа, 2019 Опубликовано 7 августа, 2019 · Жалоба 11 hours ago, Grizzly said: Взять тот же WiFi. Пакеты во времени случайны. Надо в полосе 20 МГц постоянно искать автокорреляционной двух преамбул. Порылся в загашнике, предлагают первичное обнаружение делать по энергии, а уже потом переходить к корреляциям. При таком подходе вычислительной мощности должно хватить, ещё останется. eth-30122-02.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 7 августа, 2019 Опубликовано 7 августа, 2019 · Жалоба 4 часа назад, stealth-coder сказал: Порылся в загашнике, предлагают первичное обнаружение делать по энергии Побоялся большого числа ложных тревог от всякого мусора в эфире. А так "скользящая" мощность очень быстро считается. 4 часа назад, stealth-coder сказал: хотя даже нашёл пример реализации для WiMax (см. вложение). Круто! Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 7 августа, 2019 Опубликовано 7 августа, 2019 · Жалоба @stealth-coder оказалось, что дело не в DDR3, а в делении float. Компилятор заменял его на вызов функции, не было поэтому программного конвейера. При замене на интринсик где-то в 15 раз стало быстрее :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 7 августа, 2019 Опубликовано 7 августа, 2019 · Жалоба Эта тема обсуждалась уже раз 100500... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 7 августа, 2019 Опубликовано 7 августа, 2019 · Жалоба 2 часа назад, thermit сказал: Эта тема обсуждалась уже раз 100500... Как-то пропустил. Похоже, каждый через это должен пройти... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 7 августа, 2019 Опубликовано 7 августа, 2019 · Жалоба А как лучше сделать эмуляцию для rcpsp? На форуме тексаса были вопросы, но ответа не прозвучало. С Ньютоном-Рафсоном понятно, не ясно, как начальное значение с 8-битной точностью получить. Нужно для исходной сишной модели. Или нет смысла это проверять, а просто 2-3 итерации сразу брать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 7 августа, 2019 Опубликовано 7 августа, 2019 · Жалоба 2 часа назад, Grizzly сказал: Как-то пропустил. Похоже, каждый через это должен пройти... Да. Каждый должен попрыгать по персональным граблям. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 7 августа, 2019 Опубликовано 7 августа, 2019 · Жалоба 55 минут назад, Grizzly сказал: А как лучше сделать эмуляцию для rcpsp? На форуме тексаса были вопросы, но ответа не прозвучало. С Ньютоном-Рафсоном понятно, не ясно, как начальное значение с 8-битной точностью получить. Нужно для исходной сишной модели. Или нет смысла это проверять, а просто 2-3 итерации сразу брать? Дык, а кто мешает посмотреть эмуляцию команд? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться