Vitis (발음 : 바이티스)
Objectives
대략 다음 내용을 배울 수 있습니다.
- Vitis plaform acceleration model 을 설명.
- Vitis tool flow 에 대해 이해하기
- 어떻게 HW 가속을 하는지
- HW 가속의 룰을 상기.
본문
Vitis Acceleration Platform Overview
Vitis Platform 을 먼저 설명하는데,
CPU / FPGA 의 사이는 PCIe 로 물리적으로 연결이 되어 있습니다.
위 아래 : User 영역의 Code 와 가속을 위한 Platform 영역으로 나눌 수 있습니다.
왼쪽 오른쪽
좌측 :
CPU 의 Host Program 은 C/C++ 로 기술된 API 를 사용합니다. OpenCL 처럼. (하지만 꼭 OpenCL 을 쓰는 것은 아님.)
host program 이 동작하기 위한 Host Processor 는 x86 의 Server 가 될 수 있고, Arm 기반의 embedded platform 이 될 수 있습니다.
XRT/OpenCL API 를 통해 Call 하게 되면, XRT 에서 HW 가속과 Host program 사이의 처리를 담당합니다.
Drivers 를 통해 PCIe 를 사용할 수 있습니다. AXI interface 를 통해 HW 코어를 제어합니다.
우측 : PL (Programable Logic) 영역으로 부르며, Hardware-accelerated kernels 이 동작하는 영역입니다.
결국 CPU 와 FPGA 간의 Data 를 주고 받는 부분을 이해하는 것이 중요한데,
Global Memory 를 이용합니다.
여기서 Global Memory 와 Host Memory 는 Access 여부와 물리적인 위치에서 차이가 있습니다.
굉장히 중요한 그림이 나오는데, 사실 이게 HW 가속기 원리이죠..
1. Host Memory 에서 Global Memory 로 Data 를 전달합니다.
2. Accelerated Function 에서 Global Memory 를 Access 하여 연산을 합니다.
3. 연산 결과를 다시 Global Memory 에 Write 하죠.
4. 그럼 Host memory 로 그 결과를 가져가면 끝입니다.
결국. HW 설계 엔지니어는 AXI Interface 를 정확하게 이해하고 있으면 됩니다. 나머지 부분은 다 주어지기 때문에..
HW Acceleration
CPU 로 하면 Function 을 Serial 하게 처리합니다.
하지만 HW 가속기가 붙게 되면 다음과 같이 HW 의 장점인 Parralel processing 을 이용해서 가속이 가능합니다.
SW / Hw Build Process
.exe / .xclbin 을 만들어 내면 됩니다.
Host Program 빌드 과정
FPGA Binary 빌드 과정
SW 와 유사하게 하려고, v++ 이란 것을 만들었나보다.
Vitis : Unified Software Platform for All Developers
Vitis IDE 는 Eclipse 기반.
Host Code Execution on Heterogeneous System
1. Powering-up
2. Runtime Initialization
OpenCL APIs :
- Discover Platform / Device
- Create Context
- Command Queue
3. Device Configuration
xclbin 을 Host 에서 PCIe 를 통해 FPGA 의 CL 영역에 올립니다.
4. Buffer Allocation
예를 들어 다음과 같이 Host Memory 에서 Buf0,1,2 를 사용한다고 하면, FPGA 의 Memory 에 Mirror 형식으로 사용이 가능하다.
5. Writing Data to Global Memory
다음 API 를 통해 Host 메모리의 data 를 FPGA 의 Memory 로 copy 함.
6. Running the Accelerators
run 하고 완료되면, Host에 Done 을 전달
7. Reading Data from Global Memory
최종적으로 buf2 의 결과를 읽어가면 된다.
Hardwre Acceleration
결국 FPGA 가 빠르다고 해도, PCIe 를 통한 W/R Performance 를 고려해야한다.
'맛비의 독학 (막적기) > Vitis Study' 카테고리의 다른 글
(정규교육) Accelerating Applications with the Vitis Unified Software Environment (0) | 2021.01.25 |
---|