Jump to content

    
Sign in to follow this  
OparinVD

Не встаёт линк на Alveo U50

Recommended Posts

Добрый день!

Уже довольно давно не можем поднять линк ethernet на Альвео U50. Соединить пытаемся Альвео и штатную сетевуху 10G.

Сначала была проблема с тем, что шелл резервирует под себя ресурсы физического уровня и их нельзя использовать в пользовательском RTL. С этим, вроде, разобрались с помощью примера, выложенного в секретной части сайта Xilinx. Теперь проект собирается, но линк не встаёт. При этом при запуске example project всё едет, лампочки весело мигают, значит в железной части всё хорошо.

За это время перепробовали много вариантов, катались туда обратно по версиям Vitis и операционок. Пробовали MAC с training блоком и без него, всё безрезультатно, линк не встаёт, акула данные не ловит...

Складывается впечатление, что дураки не мы, а инженеры Xilinx. Но это было бы странно, за столько времени, наверно, должны бы были допилить...

Кто-нибудь освоил это "оружие победы" от Xilinx? Есть успешные результаты в применении?

Share this post


Link to post
Share on other sites

По дефолту Alveo идет с предустановленным дизайном, который подразумевает работу только с стеком XRT и Ethernet там действительно нет.  Идеология kernel flow гоняет данные строго память хоста -> карта -> память хоста, сеть туда ни как не пристыковать. 

По другому маршрут IP flow вы сознательно отказываетесь от всех благ XRT и вся FPGA ваша. Если вы где-то из закромов Xilinx вытащили ref des с 100G CMAC и там все мигает, ну на базе него и развивайте свой проект в чем проблема то? 

Кабель и трансиверы вы правильно подобрали? Или 100G в 10G засунули? Там нужен brackout кабель.

Share this post


Link to post
Share on other sites

Мы используем кабель QSFP -> 4xSFP+ каждый отдельный хвост это 10G

В качестве тестов запускали прилагаемый бинарник, его не получится взять за основу. Но он дает понять, что вся связка U50 - кабель - 10G сетевуха работает.

Схема работы через глобальную память и связку из OpenCL, XRT и т.д. понятна... но нам она нужна только как готовый "тунель" от прикладного ПО на хосте к ПЛИС. Стандартная схема предполагает, что подсистема Ethernet включена в шелл. Тогда ресурсы, относящиейся к Ethernet становятся не доступны в пользовательском RTL. Но Xilinx как раз предоставляет пример, когда и работа с XRT остается, и QSFP остается доступным. И вот этот пример у нас не работает. Прошу прощения, что сразу неточно описал

Share this post


Link to post
Share on other sites
Quote

В качестве тестов запускали прилагаемый бинарник, его не получится взять за основу. Но он дает понять, что вся связка U50 - кабель - 10G сетевуха работает.

Я так понимаю, что вы запустили xbtest gt mac test case и убедились, что сеть работает. Бинарник естественно взять за основу не получиться, но CU для этого теста построен на стандартном Ethernet Subsystem IP а его уже можно взять за основу. 

Quote

Стандартная схема предполагает, что подсистема Ethernet включена в шелл. Тогда ресурсы, относящиейся к Ethernet становятся не доступны в пользовательском RTL.

Что такое стандартная схема? Что вы называете шелл, xbtest? Прочитайте тут overview стандартная подсистема это PCIe Endpoint, DMA, AXI инфраструктура и планировщик. Дальше вы делаете свои kernels используя ресурсы FPGA.

Quote

Но Xilinx как раз предоставляет пример, когда и работа с XRT остается, и QSFP остается доступным.

Если это родной пример (суть которого не ясна) от Xilinx и не работает, то надо к Xilinx и обратиться. На forum писали, там достаточно шустро отвечают. Раньше можно было отдельный issue открыть, там прям отдельного инженера к задаче прикрепляют. 

 

Как я понимаю вы хотите принимать/отправлять данные из сети попутно их как-то обрабатывать своим kernel (RTL) и при этом пользоваться все блага XRT?

Возможно Alveo не самый хороший выбор для такой задачи, это все же data center acceleration card (память -> карта -> память), а вам нужен SmartNIC.

То есть, out of the box это не взлетит. IMHO, есть два пути. 

1. Отказаться от kernel flow и вернуться к IP flow. Собираем железячный дизайн, собираем software стек драйвера kernel, userspace все как в старые добрые. И тогда все в ваших руках и под вашим полным контролем, без всяких там шеллов. 

2. Копать xbtest gt mac test case исходники, если вообще их можно достать. Смотреть как kernel c GT работает, смотреть как ему подсунуть поток от другого kernel, а не с DMA, ну и что будет с планированием потоков данных на хосте. 

Share this post


Link to post
Share on other sites

Под стандартной схемой я как раз имею в виду набор из PCIe Endpoint, DMA и MAC статически прошитый в ПЛИС, программную прослойку из XRT и OpenCL и схему работы, когда прикладное ПО скидывает крупные блоки данных в пространство Alveo и запускает кернел на исполнение. И да, нам надо обработать данные из Ethernet, не преодолевая PCIe-барьер. По этой причине SmartNIC, (если я правильно понимаю, о чем речь) не подоходят. По крайней мере тот же SolarFlare ускоряет процесс именно за счет снижения цены преодолевания этого "барьера". А Альвео приглянулась ценой и готовым хостовым ПО.

Напрямую в Xilinx не писали, мы пока через Макрогрупп пытаемся разобраться. Параллельно хочу поискать людей, у кого получились успешные пуски по нашему варианту.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this