제퍼넷 로고

AI 엔진 시리즈 10 – AI 엔진을 실행하는 전체 시스템 (2 부)

시간


개요

. AI 엔진 시리즈의 이전 기사 AI Engine 애플리케이션이 포함된 Vitis 전체 시스템 예제를 살펴보았습니다.

이 새로운 항목에서 우리는 시스템을 구축하고 생성된 출력 중 일부를 살펴보고 QEMU를 사용하여 하드웨어 에뮬레이션에서 시스템을 실행할 것입니다.

AI 엔진 애플리케이션 빌드

먼저 생성된 Vitis 작업 공간을 엽니다. 이전 기사.

시스템이 하드웨어 에뮬레이션용으로 구성되었는지 확인하려면 다음을 엽니다. full_system_app_system.sprj 구성 파일을 열고 활성 빌드 구성이 Emulation-HW로 설정되어 있는지 확인하십시오.

florentw_0-1625569695320.jpeg

AI Engine 애플리케이션을 빌드하려면 full_system_app_aie 응용 프로그램 프로젝트를 클릭하고 프로젝트 구축.

florentw_1-1625569695327.jpeg

콘솔 창을 보면 다음 명령이 실행되었음을 알 수 있습니다.

aiecompiler -v -Xchess=main:darts.xargs=-nb -include="<Installation path>/Vitis/2021.1/aietools/include" include=<Installation path>/Vitis_HLS/2021.1/include" -include="../" -include="../src" -target=hw --pc-srcmapping -platform=<Platform Repo Path>/xilinx_vck190_base_202110_1/xilinx_vck190_base_202110_1.xpfm -workdir=. /Work <workspace>/full_system_app_aie/src/graph.cpp

하드웨어 에뮬레이션을 위한 AI 엔진 애플리케이션을 구축하기 위한 기본 명령어입니다. 우리는 이미 옵션에 대해 살펴보았습니다. AI 엔진 시리즈 5 기사.

빌드가 완료되면 Vitis 분석기 요약 파일을 두 번 클릭하여 엽니다(full_systemem_app_aie/Emulation-AIE/Work/graph.aiecompile_summary).

그래프 탭에서 그래프 보기를 볼 수 있습니다.

florentw_2-1625569695340.jpeg

파란색 번개 기호가 있는 흰색 사각형으로 표시되는 2개의 커널(보간기 및 분류)이 2개의 다른 타일로 배열에 구현되어 있음을 알 수 있습니다. 그래프에서 PL로, PL에서 그래프로의 연결도 볼 수 있습니다.

PL 커널 빌드

다음 단계는 PL(Programmable Logic)에서 구현되고 AI 엔진 그래프에 연결될 C/C++ 커널을 빌드하는 것입니다.

참고 1: 이 시스템에서 모든 C/C++ 커널은 AI Engine 배열에 연결됩니다. 그러나 이것은 규칙이 아닙니다. 커널은 단순히 PL에서 가속화(즉, 구현)되는 기능이므로 커널은 AI 엔진과 연결되지 않을 수 있습니다.

참고 2: 이 예에서 AI 엔진은 커널을 사용하여 PL에 연결됩니다. 그러나 이것은 요구 사항이 아닙니다. 플랫폼에 있는 AXI4-Stream 인터페이스를 AI 엔진에 직접 연결할 수 있습니다(참조 이 예) 또는 GMIO 인터페이스를 사용하여 AI 엔진을 NoC에 연결합니다.

PL 커널을 빌드하려면 full_system_app_kernels 응용 프로그램을 클릭 프로젝트 구축.

florentw_3-1625569695376.jpeg

콘솔을 보면 다음 명령이 실행되었음을 알 수 있습니다.

v++ --package --config package.cfg ../../full_system_app_aie/Emulation-AIE/libadf.a ../../full_system_app_system_hw_link/Emulation-HW/binary_container_1.xclbin -o binary_container_1.xclbin

v++ 도구를 사용하여 커널을 컴파일하고 이 컴파일의 출력이 .xo 파일임을 알 수 있습니다. C/C++ 커널을 컴파일하는 v++ 명령에 대한 자세한 내용은 다음을 참조하십시오. Vitis 문서.

커널 컴파일은 커널당 하나의 .xo 파일을 생성합니다.

florentw_4-1625569695386.jpeg

하드웨어 링크 빌드

다음 단계는 PL 커널과 AI 엔진을 하드웨어 플랫폼에 통합하는 것입니다. 이 단계를 시스템 HW 링크라고 합니다.

마우스 오른쪽 버튼을 클릭하여 HW 링크 빌드를 실행합니다. full_system_app_system_hw_link 클릭 프로젝트 구축.

florentw_5-1625569695392.jpeg

주의 사항: 이 단계는 내부적으로 Vivado를 호출하는 것이므로 합성 및 구현을 실행하고 Versal 장치용 비트스트림을 생성하려면 유효한 라이센스가 필요합니다.

콘솔을 보면 다음 명령이 실행되었음을 알 수 있습니다.

v++ --target hw_emu --link --config binary_container_1-link.cfg -o"binary_container_1.xclbin" ../.. /full_system_app_kernels/Emulation-HW/build/mm2s.xo ../../full_system_app_kernels/Emulation-HW/build/polar_clip. xo ../../full_system_app_kernels/Emulation-HW/build/s2mm.xo ../../full_system_app_aie/Emulation-AIE/libadf.a

v++ 도구가 –link 옵션과 함께 사용되고 컴파일된 커널(mm2s.xo, polar_clip.xo 및 s2mm.xo)과 컴파일된 aie 애플리케이션(libadf.a)이 입력으로 사용되는 것을 볼 수 있습니다. 이 단계는 Vivado를 사용하여 XCLBIN 파일을 생성합니다.

애플리케이션이 성공적으로 빌드되면 Vivado에서 XCLBIN을 생성하는 데 사용된 디자인을 볼 수 있습니다.

Vivado 프로젝트 이름 prj.xpr 다음 디렉토리에 있어야 합니다.

/full_system_app_system_hw_link/Emulation-HW/binary_container_1.build/link/vivado/vpl/prj/

Vivado 2021.1에서 Block Design xilinx_vck190_base를 열면 prj.xpr 프로젝트에서 MM2S, S2MM 및 polar_clip 커널이 IP 블록으로 추가되고 AI 엔진의 AXI4-Stream 인터페이스에 연결된 것을 볼 수 있습니다.

florentw_6-1625569695407.jpeg

PS 애플리케이션 빌드

다음 단계는 Linux 시스템용 애플리케이션을 빌드하는 것입니다. Vitis를 성공적으로 빌드하려면 sysroot, 루트 FS 및 커널 이미지에 대한 경로를 설정해야 하는 몇 가지 옵션이 필요합니다.

이를 위해 모든 Versal 보드와 함께 사용할 수 있는 사전 빌드된 Linux 커널 및 루트 파일 시스템을 사용할 수 있습니다. 이것은 다음 페이지(Versal Common tarball)에서 다운로드할 수 있습니다.

https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-platforms.html

Versal Common을 다운로드했으면 Linux 터미널을 사용하여 압축을 푼 폴더에서 다음 스크립트를 실행하여 sysroot를 빌드해야 합니다.

xilinx-versal-common-v2020.2/sdk.sh -y -dir -NS

sysroot가 빌드되면 Vitis IDE에서 full_system_app_system.sprj 구성 파일을 열고 sysroot, Root FS 및 커널 이미지에 대한 경로를 설정합니다.

florentw_7-1625569695416.jpeg

이제 마우스 오른쪽 버튼을 클릭하여 PS 애플리케이션을 빌드할 수 있습니다. 애플리케이션 full_system_app [xrt] 및 클릭 프로젝트 구축

florentw_8-1625569695423.jpeg

이것은 다음과 같은 바이너리를 생성합니다. full_system_app f 아래ull_system_app/에뮬레이션-HW.

시스템 패키징

마지막 단계는 시스템을 패키징하는 것입니다. 이 단계는 부팅 이미지를 생성합니다.florentw_9-1625569695433.jpeg

선택 전체_시스템_앱_시스템 클릭 프로젝트 구축.

주의 사항: 전체 시스템을 구축하면 이전처럼 개별적으로 수행되지 않은 경우 aie 애플리케이션, ps 애플리케이션 및 커널도 구축하고 시스템을 연결합니다.

11.jpg

콘솔에서 다음 명령이 실행되었음을 확인할 수 있습니다.

v++ --package --config package.cfg ../../full_system_app_aie/Emulation-AIE/libadf.a ../../full_system_app_system_hw_link/Emulation-HW/binary_container_1.xclbin -o binary_container_1.xclbin

v++ 도구가 –package 옵션과 함께 호출되고 하드웨어 링크 중에 생성된 XCLBIN 파일과 컴파일된 aie 응용 프로그램(libadf.a)을 사용하여 호출되는 것을 볼 수 있습니다.

package.cfg 파일에는 컴파일된 ps 애플리케이션(full_system_app)을 포함하여 v++ 명령에 대한 추가 옵션이 포함되어 있습니다.

하드웨어 에뮬레이션에서 시스템 실행

마지막 단계는 하드웨어 에뮬레이션에서 시스템을 테스트하는 것입니다.

시스템에 대한 HW 에뮬레이션을 시작하려면 전체_시스템_앱_시스템 클릭 달리기 같이… > HW 에뮬레이터 실행

florentw_10-1625569695442.jpeg

GUI 모드를 사용할 것인지 묻는 창이 팝업됩니다. GUI 모드는 AI 엔진에서 들어오고 나가는 신호를 보는 데 유용하지만 이 기사에서는 이에 대해 다루지 않을 것입니다(나중에 이에 대해 다시 설명하겠습니다).

유지 "파형을 표시하기 위해 GUI 모드에서 에뮬레이터 시작"옵션을 선택 취소하고 에뮬레이터 시작 및 실행을 클릭하십시오.

florentw_11-1625569695446.jpeg

그러면 시스템 부팅을 볼 수 있는 에뮬레이션 콘솔 창이 열립니다.

florentw_12-1625569695449.jpeg

시작되면 제시된 Linux 프롬프트를 사용하여 설계를 실행하십시오.

에뮬레이트된 Linux 프롬프트가 표시되면 다음 명령을 실행하여 환경을 설정합니다.

cd /mnt/sd-mmcblk0p1
export XILINX_XRT=/usr
dmesg -n 4 && echo "Hide DRM messages..."

마지막으로 다음 명령을 실행하여 애플리케이션을 실행합니다.

./full_system_app ./binary_container_1.xclbin

콘솔 창에 애플리케이션이 성공적으로 실행되었음을 나타내는 다음 출력이 표시되어야 합니다.

Loading: './binary_container_1.xclbin'
TEST PASSED

15.JPG

PlatoAi. Web3 재창조. 데이터 인텔리전스 증폭.
액세스하려면 여기를 클릭하십시오.

출처 : https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/AI-Engine-Series-10-Full-system-running-the-AI-Engine-part-2/ba- p / 1261009

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?