- Visão geral
- Introdução
Disposições
A Biblioteca de grafos do AMD Vitis™ fornece:
- Uma rápida implementação acelerada de FPGA de análise de grafos em uma variedade de casos de uso
- Interfaces de software de alto nível escritas em C/C++ para facilitar o uso sem nenhuma configuração de hardware adicional
- Interfaces de hardware de baixo nível escritas em HLS para maior flexibilidade e controle

Funções
Atualmente, a Biblioteca de grafos do Vitis inclui as seguintes funções para as implementações do algoritmo de grafo:
- Funções para Análise de similaridade
- Cosine Similarity, Jaccard Similarity, K-nearest Neighbor
- Funções para Análise de centralidade
- PageRank
- Funções para Pathfinding
- Single Source Shortest Path, Multi-Source Shortest Path, Minimum Spanning Tree e Diâmetro estimado
- Funções para Análise de conectividade
- Componentes fracamente conectados e componentes fortemente conectados.
- Funções para Detecção de comunidade
- Louvain Modularity (De 22.1, a API Louvain pode suportar grafos de grande escala), Propagação de etiquetas e Contagem de triângulos.
- Funções para Pesquisa
- Breadth First Search e 2-Hop Search.
- Funções para Formato de grafo
- Renumeração, Cálculo de grau e Conversão de formato entre CSR e CSC.
Tipos de implementação de função
A Biblioteca de grafos do Vitis fornece três tipos de implementações de função, a saber, funções primitivas L1, funções do kernel L2 e funções da API de software L3. As funções primitivas L1 podem ser aproveitadas pelos desenvolvedores de hardware da FPGA. As funções do kernel L2 são criadas pela integração das funções primitivas L1 e movimentadores de dados, que podem ser chamados por códigos de host com a Biblioteca de tempo de execução do Vitis. As funções da API de software L3 fornecem interfaces de função C++ para permitir que desenvolvedores de software puro descarreguem operações de grafos para plataformas AMD sem configurações adicionais relacionadas ao hardware. Algumas funções dos três tipos estão listadas na tabela abaixo. Observe que a biblioteca de grafos do Vitis atualmente não fornece nenhuma função em execução no Versal AI Engine.
Funções da Biblioteca de grafos do Vitis | Funções primitivas L1 |
---|---|
denseSimilarity: função de similaridade para grafo denso | |
generalSimilarity: função de similaridade que suporta grafo denso e esparso | |
sortTopK: função de classificação para o K superior dos dados de entrada | |
sparseSimilarity: função de similaridade para grafo esparso | |
Funções do kernel L2 | |
bfsImpl: algoritmo de breadth-first searc | |
calcuDegree: algoritmo de cálculo de grau | |
connectedComponentImpl: algoritmo de cálculo de componente conectado | |
convertCsrCsc: converte o formato de grafo entre Csr e Csc | |
labelPropagation: o algoritmo de propagação de rótulos | |
pageRankTop: algoritmo pagerank | |
Nota: A lista completa de funções do kernel L2 e a introdução podem ser encontradas aqui | |
Funções da API de software L3 | |
opBFS class: algoritmo de pesquisa de bread-fist | |
opSCC class: cálculo de componente fortemente conectado | |
opTriangleCount class: contagem do número de triângulos | |
Nota: A lista completa de funções da API de software L3 e a introdução podem ser encontradas aqui. |
Para a diferenciação detalhada das funções das primitivas L1 e funções do kernel L2, consulte a tabela abaixo.
Funções primitivas L1 |
|
Funções do kernel L2 |
|
Funções da API de software L3 |
|
Organização
Os três tipos de implementações são organizados em seus diretórios L1, L2 e L3 correspondentes no Github. O diagrama abaixo mostra a principal organização da Biblioteca de grafos do Vitis, cada uma relacionada a um estágio diferente do desenvolvimento de aplicações.
Para subdiretórios L1:
- include/hw: os arquivos de cabeçalho para funções primitivas
- tests/hw/kernel: os principais módulos, incluindo movimentadores de dados e funções primitivas
- tests/hw/host: o suporte ao testbench e infraestrutura para chamar funções primitivas
- tests/hw/Makefile: usado para criar e executar funções primitivas
Para subdiretórios L2:
- include/hw: os arquivos de cabeçalho para funções do kernel
- tests/hw/kernel: um wrapper de função para cada função do kernel
- tests/hw/host: os módulos de host para chamar funções compiladas do kernel
- tests/hw/Makefile: usado para criar e executar funções do kernel
Para subdiretórios L3:
- include/sw: os arquivos de cabeçalho para funções da API de software
- tests/Makefile: usado para criar e executar funções da API de software

Execução na GUI do Vitis
As bibliotecas disponíveis no repositório GitHub do Vitis podem ser compiladas usando os Makefiles fornecidos para funções L2 e L3, conforme apresentado acima, ou o Vitis IDE. Para usar a biblioteca no IDE, ela deve ser baixada como um modelo de biblioteca no início e, em seguida, um novo projeto do Vitis deve ser criado usando o modelo. Mais informações sobre como criar aplicativos L2 ou L3 usando o modelo de biblioteca na GUI do Vitis podem ser encontradas aqui.