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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Адаптация програмного кода на конкретную платформу, Ваши и мои мысли по этому поводу... 
:(
    Опции темы
val
  Дата 22.9.2003, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


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




Уважаемые Господа!
Возник методологический вопрос. Последнее время занялся изучением такого вопроса, как адаптация абстрактного программного кода на вычислительную платформу с заданными параметрами. К сожалению, литературы по этой проблеме нет, так что приходится выкручиваться самостоятельно...

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

Вычислительная структура имеет след. параметры:
1. Исключительно целочисленное 32-ух битовое АЛУ (т.е. процессор целочисленный);
3. Имеется MAC-юнит (одно-тактовые операции умножения с накоплением).

Что тут просматривается сразу:

1. Введение нового формата хранения чисел (что-то типа Q15, Q14);

2. Необходимо видоизменить базовые операции (*,+, /, -). Добавить или что-то выбросить, если архитектура системы не в состоянии эффективно выполнять их.

3. На базе выбранных базовых операции (к примеру, пусть вычислительная система в состоянии эффективно выполнять только сложение и вычитание) строить более сложные операции - сдвиги, умножения с накоплением, вычисления стандартных функции.

4. И как итог, адаптация входного алгоритма к построенной арифметике. Что собственно не является тривиальной задачей. (по этой проблематику я открыл спец. тему).

Жду ваших отзывов и мнений и ссылок по этому поводу...





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


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.




Не совсем понял, что ты хочешь обсудить в этой теме. Но могу предложить использование C++ и ООП (против, которого ты высказался во флейме smile.gif ).

Надо ввести макросы и typedef'ы для всех типов. Как это сделано в WinAPI. Перегрузить все операторы. Можно некоторый типы сделать классами и в них определить, как должны работать операторы. Реализацию операторов можно писать на asm для конкретной архитектуры. Вообщем так тебе надо будет написать C Run-Time для твоей платформы и необходимые файлы заголовков. И тогда просто перекомпилируешь программы, написанные для другой платформы с новой библиотекой и дело в шляпе.

Может я, правда, не о том толкую.
PM MAIL ICQ   Вверх
val
Дата 22.9.2003, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


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




Цитата
Надо ввести макросы и typedef'ы


Да, точно, я забыл про это...




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


Program developer
**


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




Цитата
Перегрузить все операторы. Можно некоторый типы сделать классами и в них определить, как должны работать операторы.


Забыл про одну оговорку... Входной код представлен на С, компилятор хотя и поддерживает ООП, но это явно не целесообразно по причине того, что выходной код будет явно избыточен...


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


Program developer
**


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




Цитата
И тогда просто перекомпилируешь программы, написанные для другой платформы с новой библиотекой и дело в шляпе


Тут конечно может дело и в шляпе, но в большинстве случаев такое решение просто не годится...
Прога, собранная таким путем будет настолько медленно работать, что вообще перестанет быть актуальной. Переписывание операторов на асм, ускорит алгоритм только, примерно, в 2 раза. Для таких задач нужен подход, ориентированный исключительно на архитектуру платформы. В этом и заключается суть проблемы...

Например, ты отладил свой уникальный метод решения систем линейных уравнений и даёшь его мне для того, чтобы я запустил твою прогу на мотоловском ColdFire(ре), у которого тактовая частотота 25МГц. А все вычисления проводятся у тебя исключительно с типом double, да разных классов немеряно... Мне-то что делать?!!! Процессор 32-ух битный, целочисленный, медленный и вообще... Твой алгоритм в чистом виде проц будет перемалывать где-то часа 2... Так что не всё так просто sad.gif.


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


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.




А ты хочешь выполнять операции над числами с пл. запятой прям в тексте? Я думал, это будут функции. А перегрузка - это и есть вызов функции.
PM MAIL ICQ   Вверх
maxim1000
Дата 22.9.2003, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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




Так уж получается, что оптимальность и универсальность сильно конфликтуют между собой...
Программа на ассемблере всегда будет быстрее программы на Jave, но работать будет только на одном процессоре.
Я бы предложил строить программу иерархично:
написать функции работы с арифметикой (+,-,*,/)
потом более сложные функции (использующие предыдущие), типа sin,sqrt
потом можно взяться за операции над векторами и матрицами
а сам алгоритм будет использовать уже эти функции
Для адаптации программы к какой-либо платформе нужно просто переписать эти функции специально для этой платформы
Наверняка появится вопрос: а какие функции переписывать?
начинать нужно снизу (с арифметики)
если быстродействие недостаточно высокое, переписать функции следующего уровня.

Это сообщение отредактировал(а) maxim1000 - 22.9.2003, 16:43


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


Program developer
**


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




Цитата
Для адаптации программы к какой-либо платформе нужно просто переписать эти функции специально для этой платформы


Уважаемый maxim2000, Вы забыли, для того, чтобы начать переписывать на ассемблер функции иерархично необходимо исходный код подготовить, адаптировать для этого процесса.
На мой взгляд имеет смысл, если программа использует нецелые типы данных, перевести её на целочисленную арифметику, также необходимо избавиться от классов, динамических структур данных и условных циклов...

Мой вопрос, собственно из заключается в методике подготовки программы к т.н. иерархическому переписыванию на ассемблер...


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


Program developer
**


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




Цитата
А ты хочешь выполнять операции над числами с пл. запятой прям в тексте? Я думал, это будут функции. А перегрузка - это и есть вызов функции.


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


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


Эксперт
****


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




немного поцитирую сам себя smile.gif
Цитата
Я бы предложил строить программу иерархично:
написать функции работы с арифметикой (+,-,*,/)
потом более сложные функции (использующие предыдущие), типа sin,sqrt
потом можно взяться за операции над векторами и матрицами
а сам алгоритм будет использовать уже эти функции

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

только не надо приписывать мне новых терминов smile.gif


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


Program developer
**


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




Используя свой личный опыт в этом вопросе и ваши ценные советы, получилась
статья. Это пока только черновой вариант, уж очень много в ней спорных вопросов и неоднозначностей... Жду ваших критических замечаний и положительных отзывов (если такие будут smile.gif )...


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


Program developer
**


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




Цитата
Жду ваших критических замечаний


И не забывайте про то, что у меня в подписи... smile.gif smile.gif smile.gif


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

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

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

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

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

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

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


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


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


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

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


 




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


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

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