- Descripción general
- Introducción
Disposiciones
AMD Vitis™ Graph Library proporciona:
- una rápida implementación acelerada por FPGA de análisis de gráficos en una variedad de casos de uso;
- interfaces de software de alto nivel escritas en C/C++ para facilitar su uso sin ninguna configuración de hardware adicional; e
- Interfaces de hardware de bajo nivel escritas en HLS para mayor flexibilidad y control

Funciones
Actualmente Vitis Graph Library incluye las siguientes funciones para las implementaciones del algoritmo gráfico:
- Funciones para el análisis de similitud
- Similitud coseno, similitud de Jaccard y K-vecino más cercano.
- Funciones para el análisis de centralidad
- PageRank.
- Funciones para la búsqueda de rutas
- Ruta más corta de fuente única, ruta más corta de fuentes múltiples, árbol de expansión mínimo y diámetro estimado.
- Funciones para el análisis de conectividad
- Componentes débilmente conectados y componentes conectados de forma fuerte.
- Funciones para la detección comunitaria
- Modularidad de Louvain (a partir de la versión 22.1, la API de Louvain es compatible con gráficos a gran escala), propagación de etiquetas y recuento de triángulos.
- Funciones de búsqueda
- Búsqueda en amplitud y búsqueda de doble salto.
- Funciones de formato gráfico
- Renumeración, cálculo de grado y conversión de formato entre CSR y CSC.
Tipos de implementación de funciones
Vitis Graph Library proporciona tres tipos de implementaciones de funciones, a saber, funciones primitivas L1, funciones de kernel L2 y funciones de API de software L3. Las funciones primitivas L1 pueden ser aprovechadas por los desarrolladores de hardware de FPGA. Las funciones de kernel L2 se construyen mediante la integración de funciones primitivas L1 y motores de datos, que pueden ser llamados por códigos de host con Vitis Runtime Library. Las funciones de API de software L3 proporcionan interfaces de función C++ para permitir a los desarrolladores de software puro descargar operaciones gráficas a plataformas AMD sin configuraciones adicionales relacionadas con el hardware. Algunas funciones de los tres tipos se enumeran en la tabla siguiente. Ten en cuenta que Vitis Graph Library actualmente no brinda ninguna función que se ejecute en Versal AI Engine.
Funciones de Vitis Graph Library | Funciones primitivas L1 |
---|---|
denseSimilarity: función de similitud para el gráfico de densidad | |
generalSimilarity: función de similitud compatible con el gráfico de densidad y disperso | |
sortTopK: función de clasificación para el top K de los datos de entrada | |
sparseSimilarity: función de similitud para el gráfico disperso | |
Funciones de kernel L2 | |
bfsImpl: algoritmo de búsqueda primero en amplitud | |
calcuDegree: algoritmo de cálculo de grado | |
connectedComponentImpl: algoritmo de cálculo de componentes conectados | |
convertCsrCsc: convertir formato de gráfico entre CSR y CSC | |
labelPropagation: algoritmo de propagación de etiquetas | |
pageRankTop: algoritmo pagerank | |
Nota: la lista completa de las funciones de kernel L2 y su presentación se pueden encontrar aquí. | |
Funciones de API de software L3 | |
Clase opBFS: algoritmo de búsqueda primero en amplitud | |
Clase opSCC class: cálculo de componentes fuertemente conectados | |
Clase opTriangleCount class: recuento de la cantidad de triángulos | |
Nota: La lista completa de las funciones de API de software L3 y su presentación se pueden encontrar aquí. |
Para conocer en detalle las diferencias entre las funciones primitivas L1 y las funciones de kernel L2 consulte la tabla de abajo.
Funciones primitivas L1 |
|
Funciones de kernel L2 |
|
Funciones de API de software L3 |
|
Organización
Los tres tipos de implementaciones se organizan en sus correspondientes directorios L1, L2 y L3 en GitHub. El siguiente diagrama muestra la organización principal de Vitis Graph Library, cada una relacionada con una etapa diferente del desarrollo de aplicaciones.
Para los subdirectorios L1:
- include/hw: archivos de encabezado para las funciones primitivas
- tests/hw/kernel: módulos superiores incluidos los motores de datos y las funciones primitivas
- tests/hw/host: banco de prueba y compatibilidad de la infraestructura para acceder a las funciones primitivas
- tests/hw/Makefile: se utiliza para crear y ejecutar funciones primitivas
Para los subdirectorios L2:
- include/hw: archivos de encabezado para las funciones de kernel
- tests/hw/kernel: contenedor de funciones para cada función de kernel
- tests/hw/host: módulos de host para llamar a las funciones compiladas de kernel
- tests/hw/Makefile: se utiliza para crear y ejecutar funciones de kernel
Para los subdirectorios L3:
- include/sw: archivos de encabezado para las funciones de API de software
- tests/Makefile: se utiliza para crear y ejecutar funciones de API de software

Ejecución en la GUI de Vitis
Las bibliotecas disponibles en el repositorio de Vitis GitHub se pueden compilar utilizando los archivos Make proporcionados para las funciones L2 y L3 como se presentó anteriormente o el IDE (Integrated Design Environment, entorno de diseño integrado) de Vitis. Para usar la biblioteca en el IDE, primero debe descargarse como una plantilla de biblioteca y, luego, se debe crear un nuevo proyecto de Vitis usando la plantilla. Se puede encontrar más información sobre la creación de aplicaciones L2 o L3 usando la plantilla de biblioteca en la GUI (graphical user interface, interfaz gráfica de usuario) de Vitis aquí.