Цитата(_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)

Не увидел, чтобы кто-то спросил автора темы: зачем это всё? Может реально решить поставленную задачу иными способами.
Иного способа не нашел, к сожалению. Просто исследования, хочу попробовать решить эту задачу на ПЛИС. Компьютер решает задачу, но очень медленно.