- 개요
- 시작하기
제공되는 항목
AMD Vitis™ BLAS 라이브러리는 다음을 제공합니다.
- BLAS(Standard Basic Linear Algebra Subroutines)의 빠른 FPGA 가속 구현
- 추가 하드웨어 구성 없이도 쉽게 사용할 수 있도록 C, C++ 및 Python으로 작성된 고수준 소프트웨어 인터페이스
- 더 뛰어난 유연성과 제어를 위해 HLS로 작성된 로우레벨 하드웨어 인터페이스

기능
Vitis BLAS 라이브러리에는 다음과 같은 행렬 및 벡터 연산 함수가 포함되어 있습니다.
행렬 연산을 위한 함수:
- 일반 행렬곱
벡터 연산을 위한 함수:
- 벡터 요소 위치 검색
- 벡터 요소 크기 누적
- 두 벡터의 점곱 계산
- 벡터-스칼라 곱 계산
- 벡터의 유클리드 노름 계산
- 벡터 교환, 크기 조정, 복사
행렬-벡터 연산을 위한 함수:
- 일반 행렬-벡터곱
- 일반 띠행렬-벡터곱
- 대칭 행렬과 벡터 곱셈
- 삼중 대각 행렬과 벡터 곱셈
함수 구현 유형
Vitis BLAS 라이브러리는 L1 프리미티브 함수, L2 커널 함수 및 L3 소프트웨어 API 함수라는 세 가지 유형의 함수 구현을 제공합니다. L1 프리미티브 함수는 FPGA 하드웨어 개발자가 활용할 수 있습니다. L2 커널 함수는 L1 프리미티브 함수와 데이터 무버를 통합하여 구축되며, Vitis 런타임 라이브러리를 통해 호스트 코드로 호출할 수 있습니다. L3 소프트웨어 API 함수는 순수 소프트웨어 개발자가 추가 하드웨어 관련 구성 없이 BLAS 작업을 AMD 플랫폼으로 오프로드할 수 있도록 C, C++ 및 Python 함수 인터페이스를 제공합니다. 세 가지 유형의 일부 함수가 아래 표에 나와 있습니다. 현재 Vitis BLAS 라이브러리는 Versal AI Engine에서 실행되는 함수를 제공하지 않습니다.
Vitis BLAS 라이브러리 함수 | L1 프리미티브 함수 |
---|---|
amax, amin: 벡터 요소 위치 검색 | |
asum: 벡터 요소 크기 누적 | |
dot: 두 벡터의 점곱 계산 | |
axpy: 벡터 스칼라 곱을 계산하고 벡터에 더함 | |
nrm2: 벡터의 유클리드 노름 계산 | |
swap, scal, copy: 벡터 교환, 크기 조정 또는 복사 | |
symv: 대칭 행렬과 벡터 곱셈 | |
trmv: 삼중 대각 행렬과 벡터 곱셈 | |
L2 커널 함수 | |
Gemm class: 일반 행렬곱 | |
Gemv class: 일반 행렬-벡터곱 | |
L3 소프트웨어 API 함수 | |
xfblasCreate: 라이브러리를 초기화하고 핸들을 생성 | |
xfblasFree: FPGA 디바이스의 메모리 공간 확보 | |
xfblasGetMatrix: FPGA 디바이스 메모리의 행렬을 호스트에 복사 | |
xfblasExecute: 커널을 시작하고 완료될 때까지 대기 | |
참고: 전체 L3 소프트웨어 API 함수 목록 및 소개는 여기에서 확인할 수 있습니다. |
L1 프리미티브 함수와 L2 커널 함수의 자세한 차이점은 아래 표를 참조하세요.
L1 프리미티브 함수 |
|
L2 커널 함수 |
|
L3 소프트웨어 API 함수 |
|
조직
Vitis BLAS 라이브러리는 L1 프리미티브 함수, L2 커널 함수 및 L3 소프트웨어 API 함수라는 세 가지 유형의 함수 구현을 제공합니다. L1 프리미티브 함수는 FPGA 하드웨어 개발자가 활용할 수 있습니다. L2 커널 함수는 L1 프리미티브 함수와 데이터 무버를 통합하여 구축되며, Vitis 런타임 라이브러리를 통해 호스트 코드로 호출할 수 있습니다. L3 소프트웨어 API 함수는 순수 소프트웨어 개발자가 추가 하드웨어 관련 구성 없이 BLAS 작업을 AMD 플랫폼으로 오프로드할 수 있도록 C, C++ 및 Python 함수 인터페이스를 제공합니다. 세 가지 유형의 일부 함수가 아래 표에 나와 있습니다. 현재 Vitis BLAS 라이브러리는 Versal AI Engine에서 실행되는 함수를 제공하지 않습니다.
L1 하위 디렉토리:
- include/hw: 프리미티브 함수용 헤더 파일
- tests/hw: 데이터 무버 및 프리미티브 함수를 포함한 상위 모듈
- tests/sw: 프리미티브 함수 호출을 위한 테스트 벤치 및 인프라 지원
L2 하위 디렉토리:
- include/hw: 커널 함수용 헤더 파일
- include/sw: 커널 함수 호출을 위한 호스트 모듈
- tests/hw: 구현된 각 커널 함수 빌드에 사용되는 Makefile을 포함
L3 하위 디렉토리:
- include/sw: 소프트웨어 API 함수용 헤더 파일
- tests/sw: 구현된 각 소프트웨어 API 함수 테스트에 사용되는 Makefile을 포함

Vitis IDE에서 실행
Vitis GitHub 리포지토리에서 사용 가능한 라이브러리는 위에서 소개한 L2 및 L3 함수용 Makefile이나 Vitis IDE를 사용하여 컴파일할 수 있습니다. IDE에서 라이브러리를 사용하려면 먼저 라이브러리 템플릿으로 다운로드한 다음 템플릿을 사용하여 새 Vitis 프로젝트를 생성해야 합니다. Vitis GUI에서 라이브러리 템플릿을 사용하여 L2 또는 L3 애플리케이션을 생성하는 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다.