|
|
  |
GSL - GNU Scientific Library, порт на Cortex-M4F |
|
|
|
Nov 26 2012, 21:55
|

бессмертным стать можно тремя способами
    
Группа: Свой
Сообщений: 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 датчиков давления. по распределению давления решается задача вычисления трех составляющих скорости в строительных осях ЛА. выбивание двух датчиков не приводит отказу системы, только снижается точность. таким образом имеет угол атаки угол скольжения и модуль скорости что требуется для управления в САУ этой летающей сарайки. работет, быстро я доволен. пока реально эта хрень не продувалась и сказать реальную точность и соответсвие заложенной модели обтекания трудно - но метод работает и хорошо. у когонить есть небольшая аэродинамическая труба? за электричество заплачу  а то мою академию Жуковского уничтожили сволочи. у нас в Жуковке были трубы..... я не успел. надо было родится лет 50 назад.
|
|
|
|
|
Nov 29 2012, 17:29
|
вопрошающий
    
Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436

|
Цитата(klen @ Nov 27 2012, 02:55)  a) базовый тип заменян на float надеюсь, что лапак Вы просто d->f преобразовали, но вот с остальными - могут быть проблемы - многие поставщики софтвера для ГСЛя завязываются на реальную точность так, что подстановка в лоб может привести к неожиданным результатам - все почти всегда работает, но иногда, и в самый не подходящий момент, падает с непредсказуемым ответом... Цитата(klen @ Nov 27 2012, 02:55)  у когонить есть небольшая аэродинамическая труба? Вам со сверхзвуком или без?
|
|
|
|
|
Nov 30 2012, 18:34
|

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

|
Цитата(iiv @ Nov 29 2012, 21:29)  надеюсь, что лапак Вы просто d->f преобразовали, но вот с остальными - могут быть проблемы - многие поставщики софтвера для ГСЛя завязываются на реальную точность так, что подстановка в лоб может привести к неожиданным результатам - все почти всегда работает, но иногда, и в самый не подходящий момент, падает с непредсказуемым ответом...
Вам со сверхзвуком или без? 1. Совершенно верно, в алгоритмах gsl в разных местах например проверяется результат на машиенное эпсилон, ну например при анализе сошлось решение или еще чтото. Естественно эти тонкие моменты я попытался отредактировать применительно к разрядной сетке float. завязываются на точность не поставщики а потребители этого софта... а в данном случаем мы сами его пишем и можем проанализировать что получилось. задача то стоить выжать из GSL все что она даст на флотах а не выжать на флотах то что она дает на даблах как я уже писал - это инструмент и подсовывать нужно ПРАВИЛЬНЫЕ данные для обработки - тоесть просто иметь ввиду что работаем с флотам. другое дело если в алгоритмы GSL гдето заложен костыль который жеско на дабл ориенирован - но пока я таких мест не нашел, разработчики кода видимо понимают такие вещи и стараются не подкладывать граблей. если чтото обноружится я поравлю по месту. тестирование тестирование... а главно с математической точки зрения ставить задачу нужно корректоно - учитывая тип операнда. 2. нужна дозвуковая. на сверхзвуке кстате проще выглядит обтекание во многих ситуациях но там геморой с изменеием температуры газаи и прочей хренью.
|
|
|
|
|
Dec 1 2012, 23:10
|
вопрошающий
    
Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436

|
В самом лапаке (который из ГСЛя) надо пользовать fXXXXX вместо dXXXXX, но в остальных случаях будет сложно, реально будет вылетать иногда, чисто по своему опыту. В дополнении могу посоветовать попользовать софт qblas от Elegant Mathematics. Там реализована идея представить число с двойной точностью в виде суммы двух чисел с одинарной точностью отличающихся на машинный эпсилон... Реально стоит пара (+*) таких даублов примерно в 10 раз больше одной такой пары флоатов. Цитата(klen @ Nov 30 2012, 23:34)  2. нужна дозвуковая. на сверхзвуке кстате проще выглядит обтекание во многих ситуациях но там геморой с изменеием температуры газаи и прочей хренью. жалко... своя есть только сверхзвуковая, правда тоненькая, 7см, дует скачком до трех махов. Дозвук не нужен был, поэтому так и не обзавелся. Могу посчитать Больцманом, есть ресурсы и решалки, не обещаю, что быстро, так как вычислительные мощности реально загружены, да и гонять Больцмана на дозвуковую турбулентность - реально барство. А Эйлера и НС своих нету... за ненадобностью и недостоверностью...
|
|
|
|
|
Dec 2 2012, 12:49
|

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

|
Цитата(klen @ Nov 27 2012, 00:55)  в соем текущем проекте использу алгоритм минимизации системы нелинейных уравнений. имеется воздушный обтекатель н летатеоьном аппарате, на нем установлены 5 датчиков давления. по распределению давления решается задача вычисления трех составляющих скорости в строительных осях ЛА. выбивание двух датчиков не приводит отказу системы, только снижается точность. таким образом имеет угол атаки угол скольжения и модуль скорости что требуется для управления в САУ этой летающей сарайки. работет, быстро я доволен. пока реально эта хрень не продувалась и сказать реальную точность и соответсвие заложенной модели обтекания трудно - но метод работает и хорошо. А Вы не забывайте конспектировать свои идеи в полетах?  Валидация своей модели это намного привлекательнее. А всякими автоматизмами в наше время даже метеорологи нынче занимаются ))))))))))))))))))) И про самочувствие не забывайте! Может и не надо особо торопиться, так просто памятка. Всего доброго, можете в личку написать Хотя задача у Вас сложная сама по себе. Ещё и анализ gsl. Вы прям по исходникам разбор ведете? А исходники могут быть разные.
|
|
|
|
|
Dec 3 2012, 07:03
|

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

|
>В самом лапаке (который из ГСЛя) надо пользовать fXXXXX вместо dXXXXX, но в остальных случаях будет сложно, реально будет вылетать иногда, чисто по своему опыту. В дополнении могу посоветовать попользовать софт qblas от Elegant Mathematics. Там реализована идея представить число с двойной точностью в виде суммы двух чисел с одинарной точностью отличающихся на машинный эпсилон... Реально стоит пара (+*) таких даублов примерно в 10 раз больше одной такой пары флоатов. будет время - посмотим как это интересно двумя флотам обойтись. >Могу посчитать Больцманом, есть ресурсы и решалки, не обещаю, что быстро, так как вычислительные мощности реально загружены, да и гонять Больцмана на дозвуковую турбулентность - реально барство. А Эйлера и НС своих нету... спасибо, посчитать разными спосабами я и сам умею. хочется именно продуть... ну да ладно, чтонить придумаем какимнибудь косвенным методом. допилил допилил почти всю gsl - везде кроме блока специальных функций используются аппратный модуль числа и корень. чучуть осталось. как допилю выложу.
|
|
|
|
|
Dec 4 2012, 20:47
|

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

|
фисе, эпопея с портирование GSL условно закончена до вскрытя глюков. итак - чего получили на выходе 1. операнд по умолчанию - float 2. abs() sqrt() инланятся в одну инструкцию FPU 3. элементраные функции котрые тянутся из libm вызыватся в float версии. 4. в либе есть функции на даблах но они имеют соответствующие имена функций с суфиксами XXX_double(....) выдирать я это не стал - не мешает. тоесть если вы даблы за уши не притяние то они к Вам не приползут. что и хотелось получить. теперь включаме мозги при постановке задачи и выборе моделей управляймой системы и юзаем FPU в хвост и в гриву теперь начну жарить Lua 5.2.1, чето мне концепция eLua совсем не вштирила, биндинги можно у них взять но основуную библиотеку нативно!!! http://klen.org//Files/DevTools/linux-x86_...20121205.tar.7zЦитата(AHTOXA @ Dec 4 2012, 21:22)  меня там ждут с распростертыми объятьями.... скорее бежать нада а то блины с икрой остынут и водка нагреется. стол накрыт прям возле трубы!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|