- 개요
- 시작하기
개요
AMD Vitis™ Solver 라이브러리는 RADAR, LiDAR, 컴퓨터 비전, 전산 금융 및 기타 애플리케이션을 위한 가속 알고리즘을 설계하는 데 사용할 수 있는 성능 최적화된 행렬 분해, 선형/고유값 솔버 및 기타 함수 컬렉션을 제공합니다.
Vitis Solver 라이브러리 커널은 임베디드/호스트 CPU 코드에서 호출할 수 있는 독립형 가속기로 사용하거나 다른 Vitis 라이브러리 커널 및 프리미티브와 결합하여 포괄적인 처리 파이프라인을 가속화할 수 있습니다.
현재 사용 가능한 주요 가속 함수에는 SVD(특잇값 분해), QR 및 LU(lower-upper) 분해, 역행렬, 삼각 솔버, 고유값 분해 등이 있습니다.
기능
현재 Vitis Solver 라이브러리에는 밀집 행렬에 대한 다음 연산이 포함되어 있습니다.
행렬 분해
- 대칭 양의 정부호 행렬에 대한 숄레스키 분해
- 피벗이 없는 LU 분해와 부분 피벗이 있는 LU 분해
- 일반 행렬에 대한 QR 분해
- 대칭 및 비대칭 행렬에 대한 SVD(특잇값 분해)(야코비 방법)
선형 솔버
- 삼중 대각 선형 솔버(병렬 순환 감소 방법)
- 삼중 대각 행렬에 대한 선형 솔버
- 대칭 및 비대칭 행렬에 대한 선형 솔버
- 대칭 및 비대칭 행렬의 역행렬
고유값 솔버
- 대칭 행렬에 대한 야코비 고유값 솔버
PL(프로그래밍 가능 로직) 및 AIE(AI 엔진) 어레이 함수 목록
Vitis Solver 라이브러리는 Vitis 커널 개발자가 애플리케이션 개발을 가속화하는 데 도움이 됩니다. 이 라이브러리는 L1과 L2라는 두 가지 계층의 API를 제공합니다. L1 및 L2 함수는 아래 표에 나와 있습니다.
Vitis Solver 라이브러리 2022.2 릴리스에는 QR 분해 및 숄레스키 분해라는 두 가지 새로운 AI 엔진 함수가 추가되었습니다.
Solver 라이브러리 함수 | |
---|---|
L1 | QR(구적 회전) 분해 |
QR_Inverse | |
SVD(특잇값 분해) | |
Cholesky_Inverse | |
숄레스키 분해 | |
AIE에 대한 QR 분해 | |
AIE에 대한 숄레스키 분해 | |
L2 | 행렬 분해 |
고유값 솔버 | |
선형 솔버 |
L1 및 L2 API의 기능에 대한 설명은 다음과 같습니다.
L1 API | 행렬 분해를 위한 함수입니다. 메모리 인터페이스(BRAM 또는 URAM을 가리킴)가 있는 HLS 구성 요소로 설계되었습니다. 이러한 API는 float, double 또는 complex를 비롯한 다양한 데이터 형식을 지원합니다. L1 API는 모든 입력 데이터가 메모리에 준비되어 있어야 하므로 입력 행렬의 총 크기에 대한 상한이 있습니다. |
---|---|
L2 API | FPGA 디바이스에서 실행되는 커널입니다. 이러한 API는 배정밀도, 부동 소수점 형식을 지원합니다. DDR/HBM을 읽어 입력을 받고 DDR/HBM을 써서 결과를 출력합니다. 호스트 측에서 호출할 수 있습니다. |
조직
Vitis Solver 라이브러리는 L1 및 L2 폴더로 구성되며, 각 폴더는 애플리케이션 개발의 서로 다른 단계와 관련이 있습니다.
L1: L1의 Makefile과 소스는 빠른 검사를 위한 HLS 기반 흐름을 용이하게 합니다.
L2: L2의 Makefile과 소스는 디바이스를 대상으로 하는 OpenCL™/Vitis 런타임 라이브러리 프레임워크에서 작성된 호스트 코드로 다양한 커널 소스(HDL, HLS 또는 XO 파일)에서 XCLBIN 파일 빌드를 용이하게 합니다.
