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

 
 
> ПЛИС для вычислений с длинной арифметикой
planetzeus
сообщение Nov 27 2017, 15:18
Сообщение #1





Группа: Участник
Сообщений: 9
Регистрация: 27-11-17
Пользователь №: 100 387



Помогите пожалуйста с выбором.
Нужно делать вычисления с длинной арифметикой - до 8 тысяч бит. Т.е нужно простое АЛУ, но числа очень длинные.
Вычисления относительно простые - сложение, вычитание (сложение с отрицательным в обратном коде), сдвиг на бит и пара таких же длинных счетчиков.
Никаких умножений или делений. Т.е задаем начальные значения и и девайс должен складывать (вычитать) числа в зависимости от знакового бита, пока не дойдет до конечного или не найдет совпадения с заданным длинным числом.
На компьютере такие вычисления крайне медленные. На GPU тоже, так как в любом случае сложение вычисляется группами по 64 бита.
Поэтому подумал, что идеальный вариант - собственное АЛУ, которое делает одну операцию со всеми битами за такт. Насколько я понимаю, самый правильный вариант - ПЛИС.
Желательно делать перебор с максимальной скоростью - к примеру если есть возможность 1 или 2 Ггц, то именно это и нужно.
Почитал про ПЛИС и есть желание разобраться, но не понятно с какого девайса начинать искать. Не хотелось бы покупать плату, которая в итоге не подойдет для этой задачи.
Мне не нужны разные интерфейсы, USB и может быть микроконтроллер на плате пригодится, но остальное по большому счету не очень важно.
Посоветуйте пожалуйста с чего начинать и какую плату для разработки выбрать. Самый главный критерий - максимальная производительность и возможность "зашить" свою логическую схему.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Ivan_33
сообщение Nov 28 2017, 08:29
Сообщение #2


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



А что мешает написать это все на opencl под видеокарту, протестировать, а затем переписать код под ПЛИС, протестировать на хостинге, не покупая дорогие ПЛИС и карты и сравнить результаты.
Получится и быстрее, и денег меньше и.т.д. Если профит в ПЛИС будет виден - заморочиться с реализацией на HDL языках.


--------------------
Go to the top of the page
 
+Quote Post
planetzeus
сообщение Nov 28 2017, 10:37
Сообщение #3





Группа: Участник
Сообщений: 9
Регистрация: 27-11-17
Пользователь №: 100 387



Цитата(_Ivan_33 @ Nov 28 2017, 12:29) *
А что мешает написать это все на opencl под видеокарту, протестировать, а затем переписать код под ПЛИС, протестировать на хостинге, не покупая дорогие ПЛИС и карты и сравнить результаты.

Всё, что мне нужно - это операция (2x+1), инкремент и сумма двух чисел.
Я уже сказал, операция 2x + 1 на логике в любом случае будет быстрее, так как это можно сделать за единицу времни. Т.е есть на входе схемы число X из 8000 бит, на выходе X*2+1, простая логическая схема.
Ни CUDA, ни OpenCL API не позволяют такого. Как можно другим способом сделать сдвиг 8000 бит за одну операцию? На CUDA (или OpenCL) можно распараллелить на блоки вычисления, но не разбить длинное число на биты и вычислять куски отдельными блоками/потоками, так как синхронизировать потом все это совсем нетривиальная задача.
Суммирование можно попробовать оптимизировать логикой. По моему это в любом случае будет быстрее, чем вычислять суммы на GPU блоками. Например разбить все биты на группы по 8 бит и складывать байтами.
Я не спец в электронике, вот например схема:

после такого сумматора первого уровня получаем два числа, которые затем складываем как в обычном сумматоре с итерациями и переносами...
если A = 2543 , а B = 1052, два блока по 8 бит
A = (9)(239)
B = (4)(28)
то после первого уровня получаем два числа
C1 = (13)(11)
C2 = (1)(0) (здесь всегда будут только 1 или 0)
Складываем сумматором второго уровня (с циклом если нужно)
Получаем (14)(11) = 3595
Первый уровень сумматора сразу выдает результат без необходимости переносов в пределах 8 битного блока. Второй уровень содержит меньше логики.
В общем, есть надежда, что с помощью внутрисхемной логики можно ускорить решение задачи во много раз.

Цитата(AVR @ Nov 28 2017, 14:08) *
Не увидел, чтобы кто-то спросил автора темы: зачем это всё? Может реально решить поставленную задачу иными способами.

Иного способа не нашел, к сожалению. Просто исследования, хочу попробовать решить эту задачу на ПЛИС. Компьютер решает задачу, но очень медленно.
Go to the top of the page
 
+Quote Post
Alex77
сообщение Nov 28 2017, 11:21
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695



Цитата(planetzeus @ Nov 28 2017, 13:37) *
Всё, что мне нужно - это операция (2x+1), инкремент и сумма двух чисел.
Я уже сказал, операция 2x + 1 на логике в любом случае будет быстрее, так как это можно сделать за единицу времни. Т.е есть на входе схемы число X из 8000 бит, на выходе X*2+1, простая логическая схема.

Почему-то мне кажется что некорректно описано задание.
"X*2+1" - сиё означает умножение на 2 те сдвиг и пририсовывание бита 1.
Всё это реализуется "статическим сдвигом (т.е. реального сдвига нет)" и добавления вечной 1-цы.
Таким образом схема будет работать на максимальной скорости в 500МГц.

А на словах задание звучит как "А+Б+1".
Что Автору требуется ?
wacko.gif
Go to the top of the page
 
+Quote Post
planetzeus
сообщение Nov 28 2017, 11:38
Сообщение #5





Группа: Участник
Сообщений: 9
Регистрация: 27-11-17
Пользователь №: 100 387



Цитата(Alex77 @ Nov 28 2017, 15:21) *
"X*2+1" - сиё означает умножение на 2 те сдвиг и пририсовывание бита 1.
Всё это реализуется "статическим сдвигом (т.е. реального сдвига нет)" и добавления вечной 1-цы.
Таким образом схема будет работать на максимальной скорости в 500МГц.

А на словах задание звучит как "А+Б+1".
Что Автору требуется ?
wacko.gif

Именно! Нужна максимальная скорость - все операции, которые можно реализовать схемой вход->[схема]->выход (с нужным значением). Операций нужно несколько, я ж написал. (2х+1) - одна операция. А+Б - другая операция. Сравнение с 0 - третья операция, которая тоже решается логической схемой.

Мне требуется только грамотный совет) Какой девайс выбрать чтобы все это пробовать? Т.е чтобы хватило логических элементов, чтобы была максимальная скорость. Девайсы недешевые, не хотелось бы потратить деньги и понять, что полностью реализовать не получится потому что мало элементов, или другие ограничения.

Цитата(blackfin @ Nov 28 2017, 15:21) *
Как вы собираетесь загружать в ПЛИС 8000-разрядные числа?

Я думаю последовательно. Т.е если будут например 4 регистра по 8000 бит, то 2 внешних пина на выбор регистра, один пин для data, один на синхронизацию. Еще раз говорю, я не спец в электронике. Максимум, что я делал - это RPi и на уровне "помигать светодиодом". Вот хочу освоить ПЛИС, спрашиваю у людей с опытом совета.

Go to the top of the page
 
+Quote Post
blackfin
сообщение Nov 28 2017, 11:44
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(planetzeus @ Nov 28 2017, 14:38) *
Мне требуется только грамотный совет. Какой девайс выбрать чтобы все это пробовать? Т.е чтобы хватило логических элементов, чтобы была максимальная скорость.

Выбирайте Stratix 10. Его скорости вам точно хватит.. biggrin.gif
Go to the top of the page
 
+Quote Post
jojo
сообщение Nov 28 2017, 12:23
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827



Цитата(blackfin @ Nov 28 2017, 14:44) *
Выбирайте Stratix 10. Его скорости вам точно хватит.. biggrin.gif


Или Xilinx Kintex-7, Virtex-7 и более новые Ultrascale. Я бы взял что-то из середины семейства примерно на 400...500 тыс. триггеров. Потому что больше не потянет система охлаждения и питания отладочной платы.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Nov 28 2017, 12:28
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(jojo @ Nov 28 2017, 15:23) *
Или Xilinx Kintex-7, Virtex-7 и более новые Ultrascale. Я бы взял что-то из середины семейства примерно на 400...500 тыс. триггеров. Потому что больше не потянет система охлаждения и питания отладочной платы.

Да всё потянет! Не болтайте ерундой!!! DK-U1-VCU1525-A-G.....
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- planetzeus   ПЛИС для вычислений с длинной арифметикой   Nov 27 2017, 15:18
- - x736C   8000 тыс за такт на частоте 1 гиг — забудьте. Мож...   Nov 27 2017, 15:54
|- - planetzeus   Цитата(x736C @ Nov 27 2017, 19:54) 8000 т...   Nov 27 2017, 16:11
- - x736C   Ошибся. Имелось в виду 8 тыс., а не 8000 тыс. ПЛИ...   Nov 27 2017, 16:37
- - RobFPGA   Цитата(planetzeus @ Nov 27 2017, 18:18) ....   Nov 27 2017, 16:51
- - _pv   а вот это вот вычитание/сложение одного и того же ...   Nov 27 2017, 17:41
- - planetzeus   Спасибо всем за ответы. Согласен, что сумматор - с...   Nov 27 2017, 17:56
|- - Shivers   Цитата(planetzeus @ Nov 27 2017, 20:56) С...   Nov 28 2017, 06:19
- - _pv   тогда уж https://www.aliexpress.com/item/Xilinx-FP...   Nov 27 2017, 18:04
- - ViKo   Это что, майнеры криптовалюты ищут черный ход?   Nov 27 2017, 20:00
|- - AVR   Цитата(planetzeus @ Nov 28 2017, 13:37) И...   Nov 28 2017, 10:54
||- - planetzeus   Цитата(AVR @ Nov 28 2017, 14:54) Не, не т...   Nov 28 2017, 11:07
||- - blackfin   Цитата(planetzeus @ Nov 28 2017, 14:07) М...   Nov 28 2017, 11:21
||- - AVR   Цитата(planetzeus @ Nov 28 2017, 14:07) П...   Nov 28 2017, 14:14
||- - Fat Robot   Использовать CLA. Если есть ограничения на pipel...   Nov 28 2017, 15:20
|- - blackfin   Цитата(planetzeus @ Nov 28 2017, 13:37) Я...   Nov 28 2017, 11:00
||- - jojo   Цитата(blackfin @ Nov 28 2017, 15:28) Да ...   Nov 28 2017, 12:45
||- - x736C   Цитата(jojo @ Nov 28 2017, 15:45) Кстати,...   Nov 28 2017, 22:30
||- - jojo   Цитата(x736C @ Nov 29 2017, 01:30) Я бы е...   Nov 29 2017, 05:33
|- - Realking   Цитата(planetzeus @ Nov 28 2017, 14:38) В...   Nov 28 2017, 12:57
|- - RobFPGA   Приветствую. Цитата(planetzeus @ Nov 28 2017,...   Nov 28 2017, 13:55
- - AVR   Не увидел, чтобы кто-то спросил автора темы: зачем...   Nov 28 2017, 10:08
- - ViKo   Инкрементировать 8000-разрядное число (т.е. + 1) н...   Nov 28 2017, 10:57
- - _Ivan_33   И все-таки по поводу девайса, посмотрите на решени...   Nov 28 2017, 12:55
- - krux   planetzeus Перенос в FPGA "только АЛУ", ...   Nov 28 2017, 17:09
|- - planetzeus   Цитата(krux @ Nov 28 2017, 21:09) в FPGA ...   Nov 28 2017, 18:01
|- - krux   Цитата(planetzeus @ Nov 28 2017, 21:01) П...   Nov 28 2017, 18:25
- - iiv   Цитата(planetzeus @ Nov 27 2017, 20:18) П...   Nov 28 2017, 18:23
|- - planetzeus   Цитата(iiv @ Nov 28 2017, 22:23) То есть ...   Nov 28 2017, 18:42
|- - AVR   Цитата(planetzeus @ Nov 28 2017, 21:42) С...   Nov 28 2017, 19:23
|- - planetzeus   Цитата(AVR @ Nov 28 2017, 23:23) Только в...   Nov 28 2017, 20:05
|- - jojo   Цитата(planetzeus @ Nov 28 2017, 23:05) И...   Nov 28 2017, 20:45
||- - blackfin   Цитата(jojo @ Nov 28 2017, 23:45) На вдав...   Nov 28 2017, 21:39
||- - blackfin   Цитата(jojo @ Nov 28 2017, 23:45) 25*2*80...   Nov 29 2017, 05:05
||- - jojo   Цитата(blackfin @ Nov 29 2017, 08:05) Рез...   Nov 29 2017, 05:39
||- - blackfin   Цитата(jojo @ Nov 29 2017, 08:39) Тем не ...   Nov 29 2017, 05:43
|- - Plain   Цитата(planetzeus @ Nov 28 2017, 23:05) П...   Nov 28 2017, 23:24
- - Shivers   Я там выше уже писал про систему остаточных классо...   Nov 29 2017, 05:15
|- - blackfin   Цитата(Shivers @ Nov 29 2017, 08:15) Все ...   Nov 29 2017, 05:36
- - vladec   И все таки, почему как предлагает Shivers не хотит...   Nov 29 2017, 07:29
- - Александр С.   Когда-то Mentor Graphics агитировал всем делать AS...   Dec 13 2017, 16:23
- - jojo   Цитата(Александр С. @ Dec 13 2017, 19:23)...   Dec 13 2017, 16:42
- - iosifk   Цитата(Александр С. @ Dec 13 2017, 19:23)...   Dec 13 2017, 19:06


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

 


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


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