![]() |
|
Модераторы: LSD |
![]()
|
|
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев |
Уважаемые Господа!
Возник методологический вопрос. Последнее время занялся изучением такого вопроса, как адаптация абстрактного программного кода на вычислительную платформу с заданными параметрами. К сожалению, литературы по этой проблеме нет, так что приходится выкручиваться самостоятельно... Идея в следующем. Необходимо провести адаптацию входного алгоритма, отражая особенности организации вычислительного процесса, как функцию от особенностей архитектуры вычислительной системы. Вычислительная структура имеет след. параметры: 1. Исключительно целочисленное 32-ух битовое АЛУ (т.е. процессор целочисленный); 3. Имеется MAC-юнит (одно-тактовые операции умножения с накоплением). Что тут просматривается сразу: 1. Введение нового формата хранения чисел (что-то типа Q15, Q14); 2. Необходимо видоизменить базовые операции (*,+, /, -). Добавить или что-то выбросить, если архитектура системы не в состоянии эффективно выполнять их. 3. На базе выбранных базовых операции (к примеру, пусть вычислительная система в состоянии эффективно выполнять только сложение и вычитание) строить более сложные операции - сдвиги, умножения с накоплением, вычисления стандартных функции. 4. И как итог, адаптация входного алгоритма к построенной арифметике. Что собственно не является тривиальной задачей. (по этой проблематику я открыл спец. тему). Жду ваших отзывов и мнений и ссылок по этому поводу... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. |
Не совсем понял, что ты хочешь обсудить в этой теме. Но могу предложить использование C++ и ООП (против, которого ты высказался во флейме
Надо ввести макросы и typedef'ы для всех типов. Как это сделано в WinAPI. Перегрузить все операторы. Можно некоторый типы сделать классами и в них определить, как должны работать операторы. Реализацию операторов можно писать на asm для конкретной архитектуры. Вообщем так тебе надо будет написать C Run-Time для твоей платформы и необходимые файлы заголовков. И тогда просто перекомпилируешь программы, написанные для другой платформы с новой библиотекой и дело в шляпе. Может я, правда, не о том толкую. |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев |
Да, точно, я забыл про это... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев |
Забыл про одну оговорку... Входной код представлен на С, компилятор хотя и поддерживает ООП, но это явно не целесообразно по причине того, что выходной код будет явно избыточен... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев |
Тут конечно может дело и в шляпе, но в большинстве случаев такое решение просто не годится... Прога, собранная таким путем будет настолько медленно работать, что вообще перестанет быть актуальной. Переписывание операторов на асм, ускорит алгоритм только, примерно, в 2 раза. Для таких задач нужен подход, ориентированный исключительно на архитектуру платформы. В этом и заключается суть проблемы... Например, ты отладил свой уникальный метод решения систем линейных уравнений и даёшь его мне для того, чтобы я запустил твою прогу на мотоловском ColdFire(ре), у которого тактовая частотота 25МГц. А все вычисления проводятся у тебя исключительно с типом double, да разных классов немеряно... Мне-то что делать?!!! Процессор 32-ух битный, целочисленный, медленный и вообще... Твой алгоритм в чистом виде проц будет перемалывать где-то часа 2... Так что не всё так просто -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. |
А ты хочешь выполнять операции над числами с пл. запятой прям в тексте? Я думал, это будут функции. А перегрузка - это и есть вызов функции.
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев |
Так уж получается, что оптимальность и универсальность сильно конфликтуют между собой...
Программа на ассемблере всегда будет быстрее программы на Jave, но работать будет только на одном процессоре. Я бы предложил строить программу иерархично: написать функции работы с арифметикой (+,-,*,/) потом более сложные функции (использующие предыдущие), типа sin,sqrt потом можно взяться за операции над векторами и матрицами а сам алгоритм будет использовать уже эти функции Для адаптации программы к какой-либо платформе нужно просто переписать эти функции специально для этой платформы Наверняка появится вопрос: а какие функции переписывать? начинать нужно снизу (с арифметики) если быстродействие недостаточно высокое, переписать функции следующего уровня. Это сообщение отредактировал(а) maxim1000 - 22.9.2003, 16:43 -------------------- qqq |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев |
Уважаемый maxim2000, Вы забыли, для того, чтобы начать переписывать на ассемблер функции иерархично необходимо исходный код подготовить, адаптировать для этого процесса. На мой взгляд имеет смысл, если программа использует нецелые типы данных, перевести её на целочисленную арифметику, также необходимо избавиться от классов, динамических структур данных и условных циклов... Мой вопрос, собственно из заключается в методике подготовки программы к т.н. иерархическому переписыванию на ассемблер... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев |
Проблема как раз и заключается в том, что я вообще не хочу выполнять операции над числами с пл. запятой на целочисленном процессоре. Для этого я хочу ввести целочисленную арифметику, к сожалению, как это точно делается пока не знаю... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| maxim1000 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев |
немного поцитирую сам себя
Здесь нет ни одного слова о переписывании программы на ассемблер или любой другой адаптации к конкретной платформе, здесь как раз и говорится о том, как подготовить программу для последующей адаптации.
только не надо приписывать мне новых терминов -------------------- qqq |
||||
|
|||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев |
Используя свой личный опыт в этом вопросе и ваши ценные советы, получилась
статья. Это пока только черновой вариант, уж очень много в ней спорных вопросов и неоднозначностей... Жду ваших критических замечаний и положительных отзывов (если такие будут -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев |
И не забывайте про то, что у меня в подписи... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
![]()
|
| Правила раздела «Флейм» | |
|
|
Добро пожаловать в «Флейм». В разделе не действуют многие правила:
Строго запрещено:
Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт. Глас Винграда:
Глас Философии:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Флейм | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |