- 개요
- 시작하기
제공되는 항목
AMD Vitis™ 그래프 라이브러리는 다음을 제공합니다.
- 다양한 사용 사례에서 그래프 분석의 빠른 FPGA 가속 구현
- 추가 하드웨어 구성 없이도 쉽게 사용할 수 있도록 C, C++로 작성된 고수준 소프트웨어 인터페이스
- 더 뛰어난 유연성과 제어를 위해 HLS로 작성된 로우레벨 하드웨어 인터페이스

기능
현재 Vitis 그래프 라이브러리에는 그래프 알고리즘 구현을 위한 다음과 같은 함수가 포함되어 있습니다.
- 유사성 분석을 위한 함수
- 코사인 유사도, 자카드 유사도, K-최근접 이웃
- 중심성 분석을 위한 함수
- PageRank
- 경로 탐색을 위한 함수
- 단일 소스 최단 경로, 다중 소스 최단 경로, 최소 스패닝 트리 및 예상 직경
- 연결 분석을 위한 함수
- 약하게 연결된 성분과 강하게 연결된 성분
- 커뮤니티 탐지를 위한 함수
- Louvain Modularity(22.1부터 Louvain API로 대규모 그래프 지원 가능), 라벨 전파 및 삼각형 수
- 검색을 위한 함수
- 너비 우선 탐색 및 2홉 검색
- 그래프 형식을 위한 함수
- 번호 다시 매기기, 각도 계산, CSR과 CSC 간 형식 변환
함수 구현 유형
Vitis 그래프 라이브러리는 L1 프리미티브 함수, L2 커널 함수 및 L3 소프트웨어 API 함수라는 세 가지 유형의 함수 구현을 제공합니다. L1 프리미티브 함수는 FPGA 하드웨어 개발자가 활용할 수 있습니다. L2 커널 함수는 L1 프리미티브 함수와 데이터 무버를 통합하여 구축되며, Vitis 런타임 라이브러리를 통해 호스트 코드로 호출할 수 있습니다. L3 소프트웨어 API 함수는 순수 소프트웨어 개발자가 추가 하드웨어 관련 구성 없이 그래프 작업을 AMD 플랫폼으로 오프로드할 수 있도록 C++ 함수 인터페이스를 제공합니다. 세 가지 유형의 일부 함수가 아래 표에 나와 있습니다. 현재 Vitis 그래프 라이브러리는 Versal AI Engine에서 실행되는 함수를 제공하지 않습니다.
Vitis 그래프 라이브러리 함수 | L1 프리미티브 함수 |
---|---|
denseSimilarity: 밀집 그래프의 유사도 함수 | |
generalSimilarity: 밀집 및 희소 행렬을 모두 지원하는 유사도 함수 | |
sortTopK: 입력 데이터의 상위 K에 대한 정렬 함수 | |
sparseSimilarity: 희소 그래프의 유사도 함수 | |
L2 커널 함수 | |
bfsImpl: 너비 우선 탐색 알고리즘 | |
calcuDegree: 각도 계산 알고리즘 | |
connectedComponentImpl: 연결 성분 계산 알고리즘 | |
convertCsrCsc: Csr과 Csc 간 그래프 형식 변환 | |
labelPropagation: 라벨 전파 알고리즘 | |
pageRankTop: pagerank 알고리즘 | |
참고: 전체 L2 커널 함수 목록 및 소개는 여기에서 확인할 수 있습니다. | |
L3 소프트웨어 API 함수 | |
opBFS 클래스: 너비 우선 탐색 알고리즘 | |
opSCC 클래스: 강하게 연결된 성분 계산 | |
opTriangleCount 클래스: 삼각형 수 계산 | |
참고: 전체 L3 소프트웨어 API 함수 목록 및 소개는 여기에서 확인할 수 있습니다. |
L1 프리미티브 함수와 L2 커널 함수의 자세한 차이점은 아래 표를 참조하세요.
L1 프리미티브 함수 |
|
L2 커널 함수 |
|
L3 소프트웨어 API 함수 |
|
조직
세 가지 유형의 구현은 GitHub의 해당 L1, L2 및 L3 디렉토리에 구성되어 있습니다. 아래 다이어그램에는 Vitis 그래프 라이브러리의 주요 구성이 나와 있으며, 각 구성은 애플리케이션 개발의 각기 다른 단계와 관련이 있습니다.
L1 하위 디렉토리:
- include/hw: 프리미티브 함수용 헤더 파일
- tests/hw/kernel: 데이터 무버 및 프리미티브 함수를 포함한 상위 모듈
- tests/hw/host: 프리미티브 함수 호출을 위한 테스트 벤치 및 인프라 지원
- tests/hw/Makefile: 프리미티브 함수를 빌드하고 실행하는 데 사용
L2 하위 디렉토리:
- include/hw: 커널 함수용 헤더 파일
- tests/hw/kernel: 각 커널 함수에 대한 함수 래퍼
- tests/hw/host: 컴파일된 커널 함수를 호출하기 위한 호스트 모듈
- tests/hw/Makefile: 커널 함수를 빌드하고 실행하는 데 사용
L3 하위 디렉토리:
- include/sw: 소프트웨어 API 함수용 헤더 파일
- tests/Makefile: 소프트웨어 API 함수를 빌드하고 실행하는 데 사용

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