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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Floating and fixed point arithmetic in FPGA
Rst7
сообщение Aug 31 2009, 16:25
Сообщение #16


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Но для этого нужно как минимум вникнуть во все детали и хорошо во всем разбираться.


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

Умножение: Вроде все хорошо, допустим, числа нормализованы и всегда есть единичный старший бит. Тогда, по результатам умножения для нормализации надо проверить старший бит произведения, и, если он равен 0, то сдвинуть результат влево с увеличением результирующего порядка на 1. Типа перенос учесть в сумматоре порядков.

Деление: а тут таких простых результатов не получается - количество нулей в частном может быть произвольным. Т.к. выполнять после деления поиск первой единицы в частном и сдвиг результата до нормализованного очень уж тоскливо, есть смысл вкрутить автонормализацию в само деление. Допустим, если деление выполняется в столбик, то наличие каждого ведущего нулевого бита в частном должно приводить к уменьшению величины порядка результата на единичку. Как только встречается 1, то деление продолжается обычным образом.

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


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
zverek
сообщение Aug 31 2009, 17:34
Сообщение #17


Участник
*

Группа: Свой
Сообщений: 62
Регистрация: 2-04-09
Из: Москва
Пользователь №: 47 059



Цитата(Rst7 @ Aug 31 2009, 20:25) *
Не могу сказать, что уж очень там с "деталями" сложно.

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


Сорри, я по старой доброй институтской памяти...

Цитата(Rst7 @ Aug 31 2009, 20:25) *
Вроде и не очень страшно... но следующей стадией должна быть замена деления в столбик на более производительный метод, а там уже (возможно) не так просто будет решить вопрос с нормализацией малой кровью.


А как, например, косинус считают с плавающей точкой? Через ряды? (Я не про синус нуля, пи и прочее из школьных учебников). То есть я понимаю, что можно через "сложение" все сделать. Акцент на производительность (как это не в теории делается)? Или опять все сводится к реализации умножения/деления + конвейер?

Дополнение: наткнулся на интересную статейку чувствую, что в разных современных GPU таких уловок масса. Наткнулся на нее здесь, значит "в лоб" даже сопроцессор не считает.
Сорри за глупый вопрос, математику подзабыл, а до каких пор надо складывать, когда считаем синус, понимаю, что все вычисления приближенные, или в этом IEEE какраз это и описано?
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 1 2009, 03:43
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(des333 @ Aug 30 2009, 17:03) *
Я думаю, если не хочется советовать по теме, писать никто не заставляет...

Вы хотите сравнить сферического коня в вакууме. Для этого идеально подходит плавающая точка. А еще лучше вообще символьные преобразования.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 1 2009, 03:46
Сообщение #19


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Гвоздик @ Aug 31 2009, 10:00) *
Некоторое время назад я тоже столкнулся с задачей вычисления алгоритма с дробными числами на ПЛИСине. По моим практическим наблюдениям опенкоресные и закрытые от копирования умножители, сумматоры и делители чисел с плавающей запятой работали слишком медленно, чтобы их можно было серьезно применять. Решением оказалось применение Матлаба в связке с зайлинксовским "AccelEDA". Все исходные данные и результат автоматически приводились Матлабом к целым числам соотвествующей разрядности. Точность вычислений терялась, но в пределах ТЗ. Зато написать все и отмоделировать можно очень быстро.


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

Цитата(Rst7 @ Aug 31 2009, 10:34) *
Я бы не стал так огульно хаять плавающую точку smile.gif


дык ее никто и не хает, но согласитесь что реализация плавающей точки весит больше чем фиксированной/целочисленной ? smile.gif

Цитата(zverek @ Aug 31 2009, 11:05) *
По ощущениям, разные крутые GPU (там где много вычислителей с плавающей точкой) так и делают, снаружи оно поддерживает все стандарты, а внутри злые и очень продуманные алгоритмы (VLIW, или вообще что-то свое).


последнее что я читал про GPU подводило к мысли что современные GPU как раз ушли с фиксированной точки на плавающую и все вычисления внутри строятся как раз на ней.

Цитата(zverek @ Aug 31 2009, 12:34) *
А как, например, косинус считают с плавающей точкой? Через ряды? (Я не про синус нуля, пи и прочее из школьных учебников). То есть я понимаю, что можно через "сложение" все сделать. Акцент на производительность (как это не в теории делается)? Или опять все сводится к реализации умножения/деления + конвейер?

Дополнение: наткнулся на интересную статейку чувствую, что в разных современных GPU таких уловок масса. Наткнулся на нее здесь, значит "в лоб" даже сопроцессор не считает.


ну это был достаточно старый сопроцессор, с современными GPU не сравнить. А алгоритм расчета синуса зависит от требуемой вам точности.


--------------------
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 1 2009, 03:56
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(des333 @ Aug 30 2009, 20:34) *
Алгоритмы, оптимизацию, рассчеты, сравнительный анализ и т.д. 

Простой пример. Астрономы, когда считают расстояния до звезд, часто считают то синус (x) = x. И работает! Расстояние до какой-то там звезды, у черта на куличках такое, что диаметр орбиты нашего глобуса такой что плакать хочется. От этого углы крохотные, а вблизи нуля, синус это просто палка под углом в 45 градусов.

А в функциях что дает TI, синус вообще имеет период 65535, и амплитуду 32768 и тоже работает. И методов расчета его в ТИ предлагает три: через ряд (ну очень не длинный), через таблицу (ну очень не большую) и кажись через таблицу с интерполированием. И тоже работает! Асинхронные и синхронные двигатели + всякие УПСы, прекрасно работают на таком урезанном синусе. А астрономам не подходит: диаметр орбиты нашего глобуса, делёное на расстояние до какой-то там звезды стабильно дает 0, для почти всех звезд.

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

Это так, на пальцах.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 1 2009, 04:00
Сообщение #21


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Methane @ Aug 31 2009, 21:56) *
Про GPU. Не от хорошей жизни там FPU. Делается это все для того чтобы игрушки быстро бегали. А игрушки как пишут - быстрей-быстрей, дешевле-дешевле. Кто будет тратить время на оптимизации, фиксированную точку итд.


да и проще им, собрал один раз качественный FPU на кремнии и размножил N раз, все же не фпга %)


--------------------
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 1 2009, 04:04
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(des00 @ Sep 1 2009, 06:46) *
дык ее никто и не хает, но согласитесь что реализация плавающей точки весит больше чем фиксированной/целочисленной ? smile.gif

Я не соглашусь. Сравните умножение какогонить урезанного эмулятора плавающей точки, где под float пару байт отведено и умножение с фиксированной точкой типа 64.64. Все хорошо на своем месте.

Цитата(des00 @ Sep 1 2009, 07:00) *
да и проще им, собрал один раз качественный FPU на кремнии и размножил N раз, все же не фпга %)

А на кремнии собрать несколько качественных FPU и запхать их в FPGA?
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 1 2009, 04:12
Сообщение #23


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Methane @ Aug 31 2009, 22:04) *
Я не соглашусь. Сравните умножение какогонить урезанного эмулятора плавающей точки, где под float пару байт отведено и умножение с фиксированной точкой типа 64.64. Все хорошо на своем месте.


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

Цитата
А на кремнии собрать несколько качественных FPU и запхать их в FPGA?


ИМХО не имеет смысла, это как идея, которая витала у хилых %) аппаратные элементы видео декодеров на фпга, даешь h.264 за 2 доллара (на спартан 3), которая быстра загнулась. Подобное (FPU) нужно небольшому количеству людей, а место на кристале будет занимать много (ведь надо делать честный IEEE, а не в тапки с...ь).

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


--------------------
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 1 2009, 04:32
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(des00 @ Sep 1 2009, 07:12) *
задачи конечно бывают разные, но на 64-х битном проце с умножителем 64х64 не вижу никаких проблем.

Я и на 8 битовом проблем не нахожу. smile.gif

Цитата
ИМХО не имеет смысла, это как идея, которая витала у хилых %) аппаратные элементы видео декодеров на фпга, даешь h.264 за 2 доллара (на спартан 3), которая быстра загнулась. Подобное (FPU) нужно небольшому количеству людей, а место на кристале будет занимать много (ведь надо делать честный IEEE, а не в тапки с...ь).

Не понял, это идея корейцев была? Вопли "h.264" в FPGA c их стороны шли?

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

То ихних маркетологов увольнять нада. Они могли эту самую блочную плавающую точку и в FIR фильтрах применять и вообще везде подряд. Работы на пол часа, толку ноль, зато кричать "мы круче ксилинкса" можно на всех сайтах типа edn.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 1 2009, 04:42
Сообщение #25


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Methane @ Aug 31 2009, 22:32) *
Я и на 8 битовом проблем не нахожу. smile.gif


у нас разный взгляд на проблему %)

Цитата
Не понял, это идея корейцев была? Вопли "h.264" в FPGA c их стороны шли?


мне ее озвучивал начальник, после встречи с манагерами хилых в америке, хотели аппаратный CABAC/CAVLC, Deblock и ME в фпга класса спартан3е smile.gif Потом как я понял к нему микроба, ДДР2, интерфейсы и вуаля транскодер почти за 2 бакса %)

Цитата
То ихних маркетологов увольнять нада. Они могли эту самую блочную плавающую точку и в FIR фильтрах применять и вообще везде подряд. Работы на пол часа, толку ноль, зато кричать "мы круче ксилинкса" можно на всех сайтах типа edn.


вам виднее, я подробно не разбирался что они там предлагают


--------------------
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 1 2009, 04:48
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(des00 @ Sep 1 2009, 07:42) *
мне ее озвучивал начальник, после встречи с манагерами хилых в америке, хотели аппаратный CABAC/CAVLC, Deblock и ME в фпга класса спартан3е smile.gif Потом как я понял к нему микроба, ДДР2, интерфейсы и вуаля транскодер почти за 2 бакса %)

А, закон постоянства интеллекта в действии.
Go to the top of the page
 
+Quote Post
des333
сообщение Sep 1 2009, 10:55
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079



Цитата(Methane @ Sep 1 2009, 07:43) *
Вы хотите сравнить сферического коня в вакууме. Для этого идеально подходит плавающая точка. А еще лучше вообще символьные преобразования.


Да я ничего сравнивать не хотел  smile.gif
Хотел просто нарыть литературу.

Цитата(Methane @ Sep 1 2009, 07:56) *
....

Это так, на пальцах.

Так вот мне, как раз, нужно не на пальцах, а много-много сложной теории.  smile.gif

Сообщение отредактировал des333 - Sep 1 2009, 10:55


--------------------
Go to the top of the page
 
+Quote Post
zverek
сообщение Sep 1 2009, 17:56
Сообщение #28


Участник
*

Группа: Свой
Сообщений: 62
Регистрация: 2-04-09
Из: Москва
Пользователь №: 47 059



А нет ли какого-то математического САПРа, который покажет разные способы вычисления, например, синуса в зависимости от того, что мы хотим получить (погрешность, точность, и т.д.)? Имел дело только с Matlab'ом, но мельком (очень не понравился его суконный язык, ощущение такое, что работаешь с БолшойЭВМ и перфокартами и он вот вот обзовет тебя нехорошим словом) и с Mathemati'кой (строил графики). Интересно посмотреть, как он будет считать.

Цитата(des00 @ Sep 1 2009, 07:46) *
А алгоритм расчета синуса зависит от требуемой вам точности.


А какая там, у них, в FPU/GPU? Неужели про это нет книг и разбирать приходится на "живых" примерах. Так не охото идти в "Библиотеку имени Ленина" за книгой 1964 года "Вычислительная математика ЭВМ". У нас что с того времени книг не писали?
Go to the top of the page
 
+Quote Post
Methane
сообщение Sep 1 2009, 18:30
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(zverek @ Sep 1 2009, 20:56) *
А нет ли какого-то математического САПРа, который покажет разные способы вычисления, например, синуса в зависимости от того, что мы хотим получить (погрешность, точность, и т.д.)? Имел дело только с Matlab'ом, но мельком (очень не понравился его суконный язык, ощущение такое, что работаешь с БолшойЭВМ и перфокартами и он вот вот обзовет тебя нехорошим словом) и с Mathemati'кой (строил графики). Интересно посмотреть, как он будет считать.

Вот лучше матлаба я лично не знаю.

Цитата
А какая там, у них, в FPU/GPU? Неужели про это нет книг и разбирать приходится на "живых" примерах. Так не охото идти в "Библиотеку имени Ленина" за книгой 1964 года "Вычислительная математика ЭВМ". У нас что с того времени книг не писали?

Есть. К примеру посмотрите в хелпе матлаба. smile.gif
Go to the top of the page
 
+Quote Post
zverek
сообщение Sep 1 2009, 19:04
Сообщение #30


Участник
*

Группа: Свой
Сообщений: 62
Регистрация: 2-04-09
Из: Москва
Пользователь №: 47 059



Цитата(Methane @ Sep 1 2009, 22:30) *
Вот лучше матлаба я лично не знаю.


Не, я его ни в коем случае не ругаю, просто описал первое впечатление smile.gif Спасибо, попробую. smile.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:15
Рейтинг@Mail.ru


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