Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обсуждение статьи, Методика адаптации программ... 
:(
    Опции темы
val
Дата 13.10.2003, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев




Используя свой опыт и ваши консультации по вопросам конвертации С++ в С и адаптации программного кода на DSP-платформы, родилась статья...
Прошу вас ознакомиться и выдать свои рекомендации, что вы считаете в ней не корректным, недопустимым, и чего хорошего видите... И помните, что написано в моей подписи smile.gif smile.gif smile.gif

Адрес статьи: КЛИКАЙТЕ СЮДА


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
podval
Дата 13.10.2003, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб




Модератор:

Здесь, пожалуйста, обсуждаем только вышеуказанную статью.
PM WWW ICQ   Вверх
val
Дата 14.10.2003, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев




Народ, не поленитесь, прочитайте и выскажитесь...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
val
Дата 15.10.2003, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев




podval, хотт тыы скажи что-нибудь?


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
podval
Дата 15.10.2003, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб




ОК.
Если мне не изменяет мой склероз, существует инструментарий разработчика, позволяющий генерить из программы на С++ команды процессоров из семейства Texas Instruments. Там как это все делается?

И вот это впечатляет:
Цитата
Описанная выше методика активно использовалась и давала положительные  результаты  в проектах адаптации программных моделей распознавания и сжатия речи, где основным оптимизационным параметром было время. Результатом вышеописанной методики было ускорение кода более чем в 15 раз на процессорах BlackFin фирмы Analog Devices и десятикратное ускорение на процессоре MCF5249 фирмы Motorola.

Можно подробности о том, где и как это было сделано? Что за фирма, какие разработки?
PM WWW ICQ   Вверх
val
Дата 15.10.2003, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев




Цитата
Если мне не изменяет мой склероз, существует инструментарий разработчика, позволяющий генерить из программы на С++ команды процессоров из семейства Texas Instruments. Там как это все делается?


Да, действительно, каждая фирма производитель DSP поставляет вместе со своим железом компиляторы из С++ в ассемблер этого железа.
К примеру,
Analog Devices - Visual DSP++
Motorola - CodeWarrier
TI- не знаю название продукта, но точно есть такая штука...

Помимо этого, есть другие частные фирмы, которые специализируются на выпуске компиляторов (WindRiver и др.).

Но, к сожалению, построить хороший оптимизирующий компилятор для DSP достаточно сложная задача и требует примерно времени от 1 до 2-ух лет, а к этому времени, этот самый DSP уже устаревает и появляются другие процессоры с принципиально другими характеристиками, набором регистров и т.д., которым уже нужен новый компилятор. Вот и приходится выбрасывать на рынок не очень совершенные компиляторы, сырые продукты для отладки... Что крайне негативно сказывается на оптимальность кода...

Посудите сами, как перемножить 2 32-ух разрядных числа на 16-ти разрядном процессоре?
Человек будет мутить примерно такой алгоритм:
1. Выделить младшую и старшую части в первом числе;
2. Выделить младшую и старшую части во втором числе;
3. Перемножать эти кусочки друг на друга;
4. Сложить результаты перемножений этих кусков...
5. Разобраться со знаком резутата, проверить на переполнение, сделать насыщение, если это необходимо...

А как глупенькому компилятору проникнуться в такую штуку ?!

Размер ассемлерного кода для такого умножения, написанного человеком, составляет примерно 50
строчек (в зависимости от типа ассемблера и процессора), а ассемблерный код, который генерирует компилятор для строчек
Код
Word32 a,b,c;
                                                   a=b*c
, - 200-250 строк (!) и это не придел для компилятора... А теперь попробуйте фильтровать в реальном времени чей-то "базар" smile.gif (это я о речи), если так болезненно перемножаются 2 числа... Я уж помолчу про операции с плавующей запятой...
Вот и приходиться выкручиваться...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
val
Дата 15.10.2003, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев




Цитата
Можно подробности о том, где и как это было сделано?

В самой статьи и изложено комплексная методика так такие штуки вытворять...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
val
Дата 15.10.2003, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев




Цитата
Можно подробности о том, где и как это было сделано? Что за фирма, какие разработки?


Про разработки на BlackFin(e) могу сказать - это одно из отделений института кибернетики в г. Киеве,
про MCF5249 не могу, в связи с некоторой конфиденциальностью этой информации...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
maxim1000
Дата 15.10.2003, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев




Цитата
Посудите сами, как перемножить 2 32-ух разрядных числа на 16-ти разрядном процессоре?

если компилятор поддерживает эту операцию, то она будет написана так как нужно, потому что эту последовательность команд писали люди, которые делали компилятор
сам компилятор не может придумать кусок кода, он просто заменяет C-шные строки на фрагменты ассемблера...
P.S.
на BlackFin'е это заняло 4 строки, но его нельзя уверенно назвать 16-разрядным процессором
а вот на ADSP это заняло 30 команд (и то, больше половина была для того, чтобы добраться до переменных)

Это сообщение отредактировал(а) maxim1000 - 15.10.2003, 18:29


--------------------
qqq
PM WWW   Вверх
podval
Дата 15.10.2003, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб




val
Ты имеешь в виду институт кибернетики им. Глушкова? А сайт есть у него или у этого подразделения?
PM WWW ICQ   Вверх
val
Дата 16.10.2003, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев




Цитата
если компилятор поддерживает эту операцию, то она будет написана так как нужно, потому что эту последовательность команд писали люди, которые делали компилятор


Нет, не всегда...

Простой пример из практики... Ассемблерный код расчета скалярного произведения двух векторов сгенерированный компилятором, не отражает особенности DSP архитектуры и не задействует MAC-операции...



--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
val
Дата 16.10.2003, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев




Цитата
сам компилятор не может придумать кусок кода, он просто заменяет C-шные строки на фрагменты ассемблера...


Под словом "придумать" нужно понимать наличие встроенных подпрограмм анализа кода, которые не тупо заменяют С-шные строки на ассемблерные, но и осуществляют некоторую оптимизацию выходного ассемблерного кода... Так вот, при такой формулировке компилятор может "придумать" новый кусок кода... Как я уже писал, что в связи с быстрой эволюцией архитектур DSP производители компиляторов не успевают создавать "думающие" компиляторы...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
val
Дата 16.10.2003, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев




Цитата
Ты имеешь в виду институт кибернетики им. Глушкова?


Так точно...

http://www.icyb.kiev.ua

Но сайт, конечно, тот еще...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
val
Дата 16.10.2003, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев




Ввиду замечаний, статья изменилась...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
maxim1000
Дата 16.10.2003, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев




Цитата
Простой пример из практики... Ассемблерный код расчета скалярного произведения двух векторов сгенерированный компилятором, не отражает особенности DSP архитектуры и не задействует MAC-операции...

ни один компилятор C не поддерживает такую операцию, как скалярное умножение (по крайней мере, она не входит в стандарт)


--------------------
qqq
PM WWW   Вверх
val
Дата 17.10.2003, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев




Цитата
ни один компилятор C не поддерживает такую операцию, как скалярное умножение


Я могу дать пример компилятора, который неявно поддерживает такую оперцию и великолепно преобразует скалярное умножение в ассемблерный код с испозованием МАС, причем результирующий код будет ничуть не хуже чем, если бы его писал человек... Это компилятор Diab фирмы WindRiver http://www.windriver.com...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
maxim1000
Дата 17.10.2003, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев




Цитата
Цитата
если компилятор поддерживает эту операцию, то она будет написана так как нужно, потому что эту последовательность команд писали люди, которые делали компилятор

Нет, не всегда...

Цитата
Я могу дать пример компилятора, который неявно поддерживает такую оперцию и великолепно преобразует скалярное умножение в ассемблерный код с испозованием МАС, причем результирующий код будет ничуть не хуже чем, если бы его писал человек..

более того: я думаю, ты не сможешь дать пример компилятора, который поддерживает скалярное произведение векторов и при этом делает его как-то глупо
потому я и говорю: если уж в компиляторе реализована какая-то операция, то реализована она будет оптимально
Цитата
Простой пример из практики... Ассемблерный код расчета скалярного произведения двух векторов сгенерированный компилятором, не отражает особенности DSP архитектуры и не задействует MAC-операции...

а вот назвать код расчета скалярного произведения "кодом, сгенерированным компилятором" можно лишь в том случае, если использующий его программист не принимал в его написании никакого участия, т.е. если компилятор поддерживает эту операцию сам.


--------------------
qqq
PM WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

Добро пожаловать в «Флейм».

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить

Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт.


Глас Винграда:


Глас Философии:


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Флейм | Следующая тема »


 




[ Время генерации скрипта: 0.1526 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.