|
математика с float |
|
|
|
Aug 15 2014, 06:28
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Добрый день всем.
Инструменты работы: Циклон5Е, Квартус 13.0
Для реализации имеется некая формула, вернее набор последовательно вычисляемых формул, имеются операции умножения, деления, извлечение корня, и +,-,<>.. Аргументы при перемножении имеют довольно большие значения - до 200.000.000. При делении делитель имеет довольно малое значение - порядка 1е-8. Точности расчетов должны быть порядка 1е-8. Исходя из таких аргументов я принял решение реализации на плав.точке, при этом приходится использовать ядра Альтеры для проведения всех необходимых операций вычислений. Так вот, собственно, проблема в том, что эти ядра в кристалле занимают ОЧ.много ресурсов, и уже для расширения проекта приходится экономить на регистрах и памяти, и то места может и не хватить на будущее.
Имеются ли в природе модули, выполняющие мат.операции с плав.точкой, занимающие меньше места чем Альтеровские? Если да, то кто ими пользовался, что можете сказать о них?
Вариант перехода на фикс.точку я рассматривал, но при таком диапазоне аргументов и результатах вычислений у меня как-то не получилось это вытянуть.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 15)
|
Aug 15 2014, 08:48
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(billidean @ Aug 15 2014, 09:28)  Добрый день всем.
Для реализации имеется некая формула, вернее набор последовательно вычисляемых формул, имеются операции умножения, деления, извлечение корня, и +,-,<>.. Аргументы при перемножении имеют довольно большие значения - до 200.000.000. При делении делитель имеет довольно малое значение - порядка 1е-8. Точности расчетов должны быть порядка 1е-8. Исходя из таких аргументов я принял решение реализации на плав.точке, при этом приходится использовать ядра Альтеры для проведения всех необходимых операций вычислений. лучше попробуйте уточнить вопрос с точностью вычислений и алгоритмом вычислений с целью перехода целочисленное вычисления + переиспользование ресурсов как вариант можно запустить NIOS - и там сделать все вычисления с флоатом... какая скорость должна обеспечиваться?
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Aug 15 2014, 09:09
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(SM @ Aug 15 2014, 12:01)  Ну тут это не вариант. Уж лучше ПЛИС поставить с Cortex-A (там NEON/VFP, а то и две штуки). А плавучие инструкции NIOS + сам NIOS + софт для него будут однозначно больше, чем специализированный вычислитель, основанный на таком же float-блоке, что и в NIOS. что да, то да. НО billidean ничего не сказал про плис и я подумал, что плис без встроенного процессора и вариант о дополнительной/замене плис на более емкую не рассматривается, т.к. ТС спрашивает Цитата Исходя из таких аргументов я принял решение реализации на плав.точке, при этом приходится использовать ядра Альтеры для проведения всех необходимых операций вычислений. Так вот, собственно, проблема в том, что эти ядра в кристалле занимают ОЧ.много ресурсов, и уже для расширения проекта приходится экономить на регистрах и памяти, и то места может и не хватить на будущее.
Имеются ли в природе модули, выполняющие мат.операции с плав.точкой, занимающие меньше места чем Альтеровские? Если да, то кто ими пользовался, что можете сказать о них?
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Aug 15 2014, 09:24
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Про точности я писал: Цитата Точности расчетов должны быть порядка 1е-8. ПЛИС - без АРМа. Другая ПЛИС - этот вариант не рассматривается, нужно именно в этой. Меня интересуют именно сторонние вычислительные модули с плав.точкой. Кто их использовал, где брали, как с ними обстоят дела....
|
|
|
|
|
Aug 15 2014, 09:30
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(billidean @ Aug 15 2014, 13:24)  Меня интересуют именно сторонние вычислительные модули с плав.точкой. Кто их использовал, где брали, как с ними обстоят дела.... Я сам писал, с четко нужной мне разрядностью, и без излишеств IEEE. Экономия от альтеровских где то до 25-50% по площади, смотря в какую сторону оптимизировать и сколько тактов на операцию допускается. Там сложного то ничего нет - баррелевский сдвигатель, вычислитель экспоненты (тоже ускоренный, схема типа баррелевской, только как бы наоборот), сумматоры и умножители, все тривиальное. Деление и корень, если без них никак, тут уже чуток посложнее, через Ньютона-Рафсона. Но, в общем, тоже уровень "средней школы" HDL-проектирования, то есть + неделька к сроку. Однако в виде отдельных IP их нету... Они просто в рамках проекта внутри него.
|
|
|
|
|
Aug 15 2014, 09:56
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(billidean @ Aug 15 2014, 12:24)  как Вы реализовали алгоритм? с перераспределением ресурсов (последовательно или частично паралельно) или делали по возможности с максимальной степенью паралеллизации? Сколько было использовано IP core? Вопросы к чему, что максимальное распаралеливание вычислений требует чаще всего много ресурсов, может Вам стоит сделать реализацию последовательно-паралельную или вообще последовательную, при этом использовав минимально-необходимое количество IP core. Естественно, тогда упадет скорость обработки...
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Aug 15 2014, 16:01
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
У меня используется по одному ядру на каждый тип операций (+,-,*,/,..). Выполняется все последовательно-параллельно, т.е. однвременно выполняются только разнородные операции, например, одновременно провожу выполнение "*" и "+" и "-", и т.п. Стараюсь ресурсов использовать по-минимуму. Да, при таком подходе скорость обработки падает, но это все-таки не чисто последовательное вычисление, поэтому более-менее скорость устраивает.
Повторюсь, проблема в нехватке ресурсов для расширения проекта. Поэтому хочется уйти от этих "полновесных" Альтеровских ядер.
Кто-нибудь вообще использовал сторонние модули float-вычислений? Очень нужна инфа по ним.
|
|
|
|
|
Aug 27 2014, 14:53
|
Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 25-09-09
Из: Nizhny Novgorod, Russia
Пользователь №: 52 588

|
Цитата(billidean @ Aug 15 2014, 10:28)  ... Вариант перехода на фикс.точку я рассматривал, но при таком диапазоне аргументов и результатах вычислений у меня как-то не получилось это вытянуть. "Матлаб" пробовали? Разрядность целых чисел при переводе из дробных там осуществляется почти автоматически и точность вычислений можно будет оценить наглядно. К тому же умножители можно будет подобрать таким образом, чтобы повторно их использовать, если потребуется. На бумажке давно уже никто не считает.
|
|
|
|
|
Aug 29 2014, 09:02
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Цитата(Postoroniy_V @ Aug 28 2014, 18:14)  Пробовал симулировать, не получается, нужна библиотека DWARE, которая вроде под какой-то платной лицензией. Да и делителя плав. я не увидел.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|