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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Есть ли на форуме спецы по программированию на HLS?, Начинаю осваивать возникли вопросы
videoscan
сообщение Mar 1 2018, 13:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 16-09-14
Из: Москва
Пользователь №: 82 826



Народ!

Есть ли на форуме спецы по программированию на HLS?

Имеется в наличии:
- Xilinx Virtex UltraScale+ FPGA VCU118 Evaluation Kit (https://www.xilinx.com/products/boards-and-kits/vcu118.html#hardware);
- vivado 2017.4.
Нужно написать программу на Си, которая реализует алгоритм расчета, с большой степенью параллелизма.
Начинаю осваивать, возникли непонятки. Хочется посоветоваться. Понимаю, что это сплошная экзотика, но может есть живые спецы по этой части.

Сообщение отредактировал videoscan - Mar 1 2018, 13:28
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Mar 1 2018, 14:01
Сообщение #2


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

Группа: Свой
Сообщений: 1 073
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(videoscan @ Mar 1 2018, 16:24) *
...
Есть ли на форуме спецы по программированию на HLS?
...
есть живые спецы по этой части.

Живой есть - но не скажу что спец - делал несколько небольших модулей для разных задач.
Уж очень эта тема специфическая, особенно в начале мозги выворачивает и ломает стереотипы программирования.

Успехов! Rob.
Go to the top of the page
 
+Quote Post
videoscan
сообщение Mar 2 2018, 08:55
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 16-09-14
Из: Москва
Пользователь №: 82 826



Тогда сформирую вопрос. Возможно в процессе этого и сам пойму.
Упрощенно:
Есть 2 функции на С. Мне надо чтобы они работали одновременно.
Но дело в том, что есть блок памяти (глобальный), используемый обеими функциями.
Я сделал так, чтобы использование общей памяти функциями происходило в разные моменты времени и не пересекается, однако vivado этого не понимает и запускает функции последовательно.
В головной программе, которая вызывает эти функции я поставил директиву DATAFLOW.
Не помогло. При Sythesis выдается предупреждение:
WARNING: [XFORM 203-713] All the elements of global array 'b1_1_1' should be updated in process function 'kernel1_0' (kernel_array.c:272), otherwise it may not be synthesized correctly.
И после C/RLT Cosimalation симулятор показывает, что функции выполняются последовательно.
Бьюсь, ставлю разные директивы - не помогает.
Буду благодарен за любые мысли и обсуждение.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Mar 2 2018, 10:29
Сообщение #4


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

Группа: Свой
Сообщений: 1 073
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(videoscan @ Mar 2 2018, 11:55) *
Тогда сформирую вопрос. Возможно в процессе этого и сам пойму.
Упрощенно:
Есть 2 функции на С. Мне надо чтобы они работали одновременно.
..
Буду благодарен за любые мысли и обсуждение.


Неплохо все ж пример кода какой нибудь - всеж проще будет.

Зачем Вам ОДНОВРЕМЕННЫЙ доступ двух функций к одной памяти? Как Вы конролируете доступ между ними?
Можно ли сделать алгоритм с раздельной памятью и обработкой конвейером?

Ведь в отличии от sw в hw реально возможен одновременный доступ и при наличии зависимостей по переменной между двумя функциями синтезатор не знает как разруливать такое.
Поэтому я и говорил что будет ломать устоявшиеся привычки программирования.

Успехов! Rob.



Go to the top of the page
 
+Quote Post
videoscan
сообщение Mar 2 2018, 11:01
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 16-09-14
Из: Москва
Пользователь №: 82 826



Спасибо за ответ.
Полезно поговорить даже с самим собой, а тем более с умным человеком.
Решение нашлось.
Пришлось производить чтение и запись во внешний блок памяти только в одной функции, используя промежуточную глобальную переменную для передачи данных на запись из другой функции.
Начинаю потихоньку понимать требуемый стиль программирования.
Директиву DATAFLOW в главной программе оставил и vivado перестал выдавать предупреждения, т.к. видел, что запись и чтение в блок памяти происходят при выполнении разных условий.
Исходники не привожу, потому, как описал я проблему в очень упрощенном виде, функций там не 2, а 4 , связаны через память они крест-на крест, блоков памяти не 2 или 4, а штук 50.
Такой исходник разобрать сложно.
Спасибо.

Цитата(RobFPGA @ Mar 2 2018, 10:29) *
Зачем Вам ОДНОВРЕМЕННЫЙ доступ двух функций к одной памяти? Как Вы конролируете доступ между ними?


Одна функция обрабатывает данные и передает их другой в качестве входных данных для последующей обработки.
Все функции имеют по 2 блока памяти, с одним работают сами, а в другую в это время пишет сосед, потом они переключаются. Для переключения используется глобальная переменная, общая для всех.
На самом деле будет массив из 100 функций (10*10), работающих параллельно. Такой требуется алгоритм обработки.

Цитата
Можно ли сделать алгоритм с раздельной памятью и обработкой конвейером?

Ведь в отличии от sw в hw реально возможен одновременный доступ и при наличии зависимостей по переменной между двумя функциями синтезатор не знает как разруливать такое.
Поэтому я и говорил что будет ломать устоявшиеся привычки программирования.

Я пришел не из программистов, а из железячников, и писал на VHDL, и привычки, конечно приходится менять.

Сообщение отредактировал videoscan - Mar 2 2018, 11:03
Go to the top of the page
 
+Quote Post
AVR
сообщение Mar 2 2018, 12:25
Сообщение #6


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 273
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Какой смысл делать это на HLS? Чем не подходит традиционный способ разработки?
Насколько сложен алгоритм?


--------------------
Go to the top of the page
 
+Quote Post
videoscan
сообщение Mar 2 2018, 12:34
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 16-09-14
Из: Москва
Пользователь №: 82 826



Цитата(AVR @ Mar 2 2018, 12:25) *
Какой смысл делать это на HLS? Чем не подходит традиционный способ разработки?
Насколько сложен алгоритм?

Решили попробовать на HLS ради ускорения. Алгоритм достаточно сложный, используется практически вся память чипа (ее там 20МБ), нужно чтобы это все тарахтело на хорошей частоте (не менее 100 МГц).
Кроме этого алгоритм "живой" в смысле сырой и будет меняться в процессе разработки.
Ну и используемый чип огромен, можно плюнуть на ресурсы (кроме памяти).

Go to the top of the page
 
+Quote Post
Mad_max
сообщение Mar 6 2018, 06:54
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Собственно из рассылки electronix
Цитата
Vivado HLS – САПР компании Xilinx для создания цифровых устройств на базе ПЛИС с применением языков высокого уровня. Важным преимуществом САПР Vivado HLS является возможность для инженеров, разрабатывающих программы для ПЛИС, работать на более высоком уровне абстракции. Разработчики прикладного ПО благодаря Vivado HLS получают возможность реализации аппаратного ускорения вычислений при помощи ПЛИС с минимальными затратами времени и ресурсов.

Желающих познакомиться с Vivado HLS и начать его освоение приглашаем на вебинар.

На вебинаре вы узнаете:

1. языки программирования, поддерживаемые Vivado HLS
2. библиотеки, доступные для работы в Vivado HLS
3. как написать простой проект на языке высокого уровня для Vivado HLS
4. полный цикл разработки проекта – от скачивания САПР и получения лицензии и до изготовления файла прошивки и загрузки его в ПЛИС

В качестве демонстрационной платформы будет использоваться отладочный набор AES-A7EV-7A50T-G на чипе XC7A50T-1FTG256C, который Вы можете приобрести в компании «Макро Групп».

Ведущий вебинара – инженер по применению Xilinx Илья Александров.

Вебинар состоится 13 марта в 10:00. Повтор вебинара – 14 марта в 14:00. Время московское.

Участие в вебинаре бесплатное, по предварительной регистрации.


>>> ЗАРЕГИСТРИРОВАТЬСЯ >>> http://bit.ly/webinar-03-2018-xilinx
>>> ЗАРЕГИСТРИРОВАТЬСЯ >>> http://bit.ly/webinar-03-2018-xilinx
>>> ЗАРЕГИСТРИРОВАТЬСЯ >>> http://bit.ly/webinar-03-2018-xilinx


Любые вопросы по теме вебинара или любые другие вопросы по продукции Xilinx задавайте Илье Александрову по адресу fpga@macrogroup.ru или по телефону 8 (800) 333-06-05 доб. 786.

По вопросам, связанным с участием в вебинаре, пишите по адресу marketing@macrogroup.ru или звоните 8 (800) 333-06-05 доб. 255. Компания «Макро Групп» является официальным дистрибьютором Xilinx в России.
Go to the top of the page
 
+Quote Post
videoscan
сообщение Mar 6 2018, 08:11
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 16-09-14
Из: Москва
Пользователь №: 82 826



Цитата(Mad_max @ Mar 6 2018, 06:54) *
Собственно из рассылки electronix

Спасибо. Поучаствую.
Go to the top of the page
 
+Quote Post
videoscan
сообщение Mar 7 2018, 06:57
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 16-09-14
Из: Москва
Пользователь №: 82 826



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

Сообщение отредактировал videoscan - Mar 7 2018, 06:58
Go to the top of the page
 
+Quote Post
syoma
сообщение Mar 7 2018, 15:30
Сообщение #11


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

Группа: Свой
Сообщений: 1 779
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Если вы еще свои функции на С не написали, то возможно есть смысл попробовать System Generator вместо HLS? Это тоже более высокий уровень абстракции и позволяет вдобавок промоделировать ваши алгоритмы. HLS предназначен для переделки готовых Си программ под FPGA.
Go to the top of the page
 
+Quote Post
videoscan
сообщение Mar 8 2018, 12:55
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 16-09-14
Из: Москва
Пользователь №: 82 826



Цитата(syoma @ Mar 7 2018, 16:30) *
Если вы еще свои функции на С не написали, то возможно есть смысл попробовать System Generator вместо HLS? Это тоже более высокий уровень абстракции и позволяет вдобавок промоделировать ваши алгоритмы. HLS предназначен для переделки готовых Си программ под FPGA.

С System Generator совсем не знаком. Боюсь разбрасываться, сейчас что-то стал понимать в HLS, а тут опять куча новой информации. Времени для этого совсем нет. Я наверное попробую продолжать копать в сторону С.
Go to the top of the page
 
+Quote Post
syoma
сообщение Mar 8 2018, 19:08
Сообщение #13


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

Группа: Свой
Сообщений: 1 779
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Если работали с симулинком и можете описать свой алгоритм в виде блоков, то System Generator будет прост в освоении.
Go to the top of the page
 
+Quote Post
videoscan
сообщение Mar 10 2018, 13:47
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 16-09-14
Из: Москва
Пользователь №: 82 826



Цитата(syoma @ Mar 8 2018, 20:08) *
Если работали с симулинком и можете описать свой алгоритм в виде блоков, то System Generator будет прост в освоении.

С симулинком не знаком, в МатЛабе не работал.
Go to the top of the page
 
+Quote Post
fguy
сообщение Apr 7 2018, 17:13
Сообщение #15


Участник
*

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



Цитата(videoscan @ Mar 2 2018, 11:55) *
Есть 2 функции на С. Мне надо чтобы они работали одновременно.
Но дело в том, что есть блок памяти (глобальный), используемый обеими функциями.
Я сделал так, чтобы использование общей памяти функциями происходило в разные моменты времени и не пересекается, однако vivado этого не понимает и запускает функции последовательно.

А в чем проблема реализовать каждую функцию отдельным ядром, в параметрах функций прописать по одному порту блокрама и соединить их в блокдизайне?
По своему опыту использования хлс и плис могу сказать что использование адресуемой памяти в обработке это зло и допустимо лишь когда иначе ну совсем никак - типа транспонирования огромных матриц. Постарайтесь адаптировать алгоритм к конвейеру без применения адресуемой памяти, а для выравнивания потоков и/или буферизации данных между ядрами используйте фифо.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th June 2018 - 04:36
Рейтинг@Mail.ru


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