реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> GSL - GNU Scientific Library, порт на Cortex-M4F
klen
сообщение Nov 26 2012, 21:55
Сообщение #1


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Всем привет
завершил занимательную авантюру по портированию GSL на сопроц кортекса m4f.
0. GSL - хорошо структурированый набор методов и функый, алгоритмов для математической обраьотки данных. например высможете решить систему линейных уравнений или нелинейную, числено выполнить интегрирование, посчитать специальные функции и сат распределения, сгениерит случайные величины, решить диффуры и много чего другого применяймого на практике при решении задач управления сложными объектами http://www.gnu.org/software/gsl/manual/html_node/.
1. в исходном состоянии дефолтный операнд IEEE 754 double-precision binary floating-point format: binary64, что приводи к прорамной реализации оперций на наших любимы кортексиках. наличие в кармане сопроцессора длго не давло покоя... чуствовалась какаята пустота.. кторцю надобыло заполнить. есть молоток - должны быть и гвозди, а задачу уж потом придумаем. таков подход у тех кто делает чтото беспоатно ради искуства.
2. было выполнено портирование:
a) базовый тип заменян на float
б) функци в изобилии встречабщиеся в алгоритмах sqrt abs были заменяны на вызовы асмовых инлайнов: vabs vsqrt
в) в связи с изменеиние диапазона представления величин, точности, машинного эпсилон в алгоритмах которые используют эти понятия внесены измениния.
таким образом условно утверждаем что после компиляции все будет крутися на фпу что и хотелось.

както так

ктото скажет что это нафег не нужено. мне нужно и я использую.
http://www.klen.org/Files/DevTools/linux-x...20121125.tar.7z
в архиве либы и хидеры. если не хотите прописывать отделно пути для хиберов и либ то можно положить в стандартные - в моей сборке это ./arm-kgp-eabi/include и ./arm-kgp-eabi/lib/thumb/cortex-m4f

в соем текущем проекте использу алгоритм минимизации системы нелинейных уравнений. имеется воздушный обтекатель н летатеоьном аппарате, на нем установлены 5 датчиков давления. по распределению давления решается задача вычисления трех составляющих скорости в строительных осях ЛА. выбивание двух датчиков не приводит отказу системы, только снижается точность. таким образом имеет угол атаки угол скольжения и модуль скорости что требуется для управления в САУ этой летающей сарайки. работет, быстро я доволен. пока реально эта хрень не продувалась и сказать реальную точность и соответсвие заложенной модели обтекания трудно - но метод работает и хорошо.

у когонить есть небольшая аэродинамическая труба? за электричество заплачу sm.gif а то мою академию Жуковского уничтожили сволочи. у нас в Жуковке были трубы..... я не успел. надо было родится лет 50 назад.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 27 2012, 04:55
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(klen @ Nov 27 2012, 01:55) *
у нас в Жуковке были трубы..... я не успел. надо было родится лет 50 назад.

Тогда бы не было ЛА и CM4 :^)


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
iiv
сообщение Nov 29 2012, 17:29
Сообщение #3


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(klen @ Nov 27 2012, 02:55) *
a) базовый тип заменян на float


надеюсь, что лапак Вы просто d->f преобразовали, но вот с остальными - могут быть проблемы - многие поставщики софтвера для ГСЛя завязываются на реальную точность так, что подстановка в лоб может привести к неожиданным результатам - все почти всегда работает, но иногда, и в самый не подходящий момент, падает с непредсказуемым ответом...

Цитата(klen @ Nov 27 2012, 02:55) *
у когонить есть небольшая аэродинамическая труба?

Вам со сверхзвуком или без?
Go to the top of the page
 
+Quote Post
klen
сообщение Nov 30 2012, 18:34
Сообщение #4


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(iiv @ Nov 29 2012, 21:29) *
надеюсь, что лапак Вы просто d->f преобразовали, но вот с остальными - могут быть проблемы - многие поставщики софтвера для ГСЛя завязываются на реальную точность так, что подстановка в лоб может привести к неожиданным результатам - все почти всегда работает, но иногда, и в самый не подходящий момент, падает с непредсказуемым ответом...


Вам со сверхзвуком или без?


1. Совершенно верно, в алгоритмах gsl в разных местах например проверяется результат на машиенное эпсилон, ну например при анализе сошлось решение или еще чтото. Естественно эти тонкие моменты я попытался отредактировать применительно к разрядной сетке float. завязываются на точность не поставщики а потребители этого софта... а в данном случаем мы сами его пишем и можем проанализировать что получилось. задача то стоить выжать из GSL все что она даст на флотах а не выжать на флотах то что она дает на даблах sm.gif
как я уже писал - это инструмент и подсовывать нужно ПРАВИЛЬНЫЕ данные для обработки - тоесть просто иметь ввиду что работаем с флотам. другое дело если в алгоритмы GSL гдето заложен костыль который жеско на дабл ориенирован - но пока я таких мест не нашел, разработчики кода видимо понимают такие вещи и стараются не подкладывать граблей. если чтото обноружится я поравлю по месту.
тестирование тестирование... а главно с математической точки зрения ставить задачу нужно корректоно - учитывая тип операнда.

2. нужна дозвуковая. на сверхзвуке кстате проще выглядит обтекание во многих ситуациях но там геморой с изменеием температуры газаи и прочей хренью.
Go to the top of the page
 
+Quote Post
iiv
сообщение Dec 1 2012, 23:10
Сообщение #5


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



В самом лапаке (который из ГСЛя) надо пользовать fXXXXX вместо dXXXXX, но в остальных случаях будет сложно, реально будет вылетать иногда, чисто по своему опыту. В дополнении могу посоветовать попользовать софт qblas от Elegant Mathematics. Там реализована идея представить число с двойной точностью в виде суммы двух чисел с одинарной точностью отличающихся на машинный эпсилон... Реально стоит пара (+*) таких даублов примерно в 10 раз больше одной такой пары флоатов.

Цитата(klen @ Nov 30 2012, 23:34) *
2. нужна дозвуковая. на сверхзвуке кстате проще выглядит обтекание во многих ситуациях но там геморой с изменеием температуры газаи и прочей хренью.


жалко... своя есть только сверхзвуковая, правда тоненькая, 7см, дует скачком до трех махов. Дозвук не нужен был, поэтому так и не обзавелся. Могу посчитать Больцманом, есть ресурсы и решалки, не обещаю, что быстро, так как вычислительные мощности реально загружены, да и гонять Больцмана на дозвуковую турбулентность - реально барство. А Эйлера и НС своих нету... за ненадобностью и недостоверностью...
Go to the top of the page
 
+Quote Post
Виктория
сообщение Dec 2 2012, 12:49
Сообщение #6


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Цитата(klen @ Nov 27 2012, 00:55) *
в соем текущем проекте использу алгоритм минимизации системы нелинейных уравнений. имеется воздушный обтекатель н летатеоьном аппарате, на нем установлены 5 датчиков давления. по распределению давления решается задача вычисления трех составляющих скорости в строительных осях ЛА. выбивание двух датчиков не приводит отказу системы, только снижается точность. таким образом имеет угол атаки угол скольжения и модуль скорости что требуется для управления в САУ этой летающей сарайки. работет, быстро я доволен. пока реально эта хрень не продувалась и сказать реальную точность и соответсвие заложенной модели обтекания трудно - но метод работает и хорошо.


А Вы не забывайте конспектировать свои идеи в полетах? rolleyes.gif Валидация своей модели это намного привлекательнее. А всякими автоматизмами в наше время даже метеорологи нынче занимаются )))))))))))))))))))
И про самочувствие не забывайте! Может и не надо особо торопиться, так просто памятка. Всего доброго, можете в личку написать

Хотя задача у Вас сложная сама по себе. Ещё и анализ gsl. Вы прям по исходникам разбор ведете? А исходники могут быть разные.
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 3 2012, 07:03
Сообщение #7


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



>В самом лапаке (который из ГСЛя) надо пользовать fXXXXX вместо dXXXXX, но в остальных случаях будет сложно, реально будет вылетать иногда, чисто по своему опыту. В дополнении могу посоветовать попользовать софт qblas от Elegant Mathematics. Там реализована идея представить число с двойной точностью в виде суммы двух чисел с одинарной точностью отличающихся на машинный эпсилон... Реально стоит пара (+*) таких даублов примерно в 10 раз больше одной такой пары флоатов.

будет время - посмотим как это интересно двумя флотам обойтись.

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

допилил допилил почти всю gsl - везде кроме блока специальных функций используются аппратный модуль числа и корень. чучуть осталось. как допилю выложу.
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 4 2012, 08:45
Сообщение #8


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



еще более обработанная напильником сборка

http://klen.org//Files/DevTools/linux-x86_...20121204.tar.7z

начисто вычещены вызовы корня и модуля - все теперь нланится в асм в виде инструкций vabs.f32 vsqrt.f32 и едет прямиком через FPU.
поскольку еще есть нелдопиленные места в плане вызовов элементарных функций из libm типа sin cos exp... и как следствие подтягивание даборв на промежуточных вычислениях буду подменять их н флотовые версии типа sinf cosf expf и тд. в результате мы дожны увидть что в либе никаких манипуляций с операндами дабл нету.....

засим откланяюсь...
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 4 2012, 09:09
Сообщение #9


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(iiv @ Nov 29 2012, 21:29) *
Вам со сверхзвуком или без?
У нас в Питере в ГУАПе есть труба.

Прикрепленное изображение


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 4 2012, 14:12
Сообщение #10


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(demiurg_spb @ Dec 4 2012, 13:09) *
У нас в Питере в ГУАПе есть труба.

Прикрепленное изображение

хачу нимагу.... куплю землю под дачу... и построою там механообработочный цех, трубу, електростанцию...
в принципе можно ее сдеать если небольшие модели... нужен участок земли и чтоб потом не мешали демократы работать..
Go to the top of the page
 
+Quote Post
iiv
сообщение Dec 4 2012, 17:11
Сообщение #11


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(klen @ Dec 4 2012, 19:12) *
в принципе можно ее сделать если небольшие модели... нужен участок земли и чтоб потом не мешали демократы работать..


Да компрессором из строительного магазина + большой баллон можно делать, даже в подвале, правда нестационарные оптекания и маленькие модели, но физика уже будет хорошо видна...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 4 2012, 17:22
Сообщение #12


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Дык, в Институте Механики МГУ куча труб: http://www.imec.msu.ru/pages/02-10-10-1374853.html


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 4 2012, 20:47
Сообщение #13


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



фисе, эпопея с портирование GSL условно закончена до вскрытя глюков. итак - чего получили на выходе
1. операнд по умолчанию - float
2. abs() sqrt() инланятся в одну инструкцию FPU
3. элементраные функции котрые тянутся из libm вызыватся в float версии.
4. в либе есть функции на даблах но они имеют соответствующие имена функций с суфиксами XXX_double(....) выдирать я это не стал - не мешает.
тоесть если вы даблы за уши не притяние то они к Вам не приползут. что и хотелось получить.
теперь включаме мозги при постановке задачи и выборе моделей управляймой системы и юзаем FPU в хвост и в гриву beer.gif

теперь начну жарить Lua 5.2.1, чето мне концепция eLua совсем не вштирила, биндинги можно у них взять но основуную библиотеку нативно!!!

http://klen.org//Files/DevTools/linux-x86_...20121205.tar.7z

Цитата(AHTOXA @ Dec 4 2012, 21:22) *
Дык, в Институте Механики МГУ куча труб: http://www.imec.msu.ru/pages/02-10-10-1374853.html

меня там ждут с распростертыми объятьями.... скорее бежать нада а то блины с икрой остынут и водка нагреется. стол накрыт прям возле трубы!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 09:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01428 секунд с 7
ELECTRONIX ©2004-2016