- Descripción general
- Introducción
Disposiciones
AMD Vitis™ BLAS Library proporciona:
- Una rápida implementación acelerada por FPGA de BLAS (Basic Linear Algebra Subroutines, subrutinas básicas de álgebra lineal).
- Interfaces de software de alto nivel escritas en C, C++ y Python para la facilidad de uso sin ninguna configuración de hardware adicional.
- Interfaces de hardware de bajo nivel escritas en HLS para mayor flexibilidad y control

Funciones
Vitis BLAS Library incluye las siguientes funciones de operación de matriz y vector:
Funciones para operaciones matriciales:
- Multiplicación matricial general
Funciones para operaciones vectoriales:
- Búsqueda de posición de elementos vectoriales
- Acumula la magnitud de los elementos vectoriales
- Calcula el producto punto de dos vectores
- Calcula un producto vectorial-escalar
- Calcula la norma euclidiana de un vector
- Intercambia, escala y copia vectores
Funciones para operaciones de matriz-vector:
- Multiplicación de matriz-vector general
- Multiplicación de matriz banda-vector general
- Multiplicación simétrica de matriz y vector
- Multiplicación triangular de matriz y vector
Tipos de implementación de funciones
Vitis BLAS Library proporciona tres tipos de implementaciones de funciones, a saber, las funciones primitivas L1, las funciones de kernel L2 y las 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, C++ y Python para permitir a los desarrolladores de software puro descargar operaciones de BLAS 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 BLAS Library actualmente no brinda ninguna función que se ejecute en Versal AI Engine.
Funciones de Vitis BLAS Library | Funciones primitivas L1 |
---|---|
amax, amin: busca la posición de los elementos vectoriales | |
asum: acumula la magnitud de los elementos vectoriales | |
dot: calcula el producto punto de dos vectores | |
axpy: calcula un producto vectorial-escalar y lo agrega al vector | |
nrm2: calcula la norma euclidiana de un vector | |
swap, scal, copy: intercambia, escala y copia vectores | |
symv: multiplicación simétrica de matriz y vector | |
trmv: multiplicación triangular de matriz y vector | |
Funciones de kernel L2 | |
Clase Gemm: multiplicación matricial general | |
Clase Gemv: multiplicación de matriz-vector general | |
Funciones de API de software L3 | |
xfblasCreate: inicializa la biblioteca y crea un handle | |
xfblasFree: libera memoria en el dispositivo FPGA | |
xfblasGetMatrix: copia una matriz en la memoria del dispositivo FPGA del host | |
xfblasExecute: inicia el kernel y espera hasta que termine | |
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
Vitis BLAS Library proporciona tres tipos de implementaciones de funciones, a saber, las funciones primitivas L1, las funciones de kernel L2 y las 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, C++ y Python para permitir a los desarrolladores de software puro descargar operaciones de BLAS 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 BLAS Library actualmente no brinda ninguna función que se ejecute en Versal AI Engine.
Para los subdirectorios L1:
- include/hw: archivos de encabezado para las funciones primitivas
- tests/hw: módulos superiores incluidos los motores de datos y las funciones primitivas
- tests/sw: banco de prueba y compatibilidad de la infraestructura para acceder a las funciones primitivas
Para los subdirectorios L2:
- include/hw: archivos de encabezado para las funciones de kernel
- include/sw: módulos host para llamar a las funciones del kernel
- tests/hw: contiene los archivos Make usados para construir cada función del kernel implementada
Para los subdirectorios L3:
- include/sw: archivos de encabezado para las funciones de API de software
- tests/sw: contiene los archivos Make usados para probar cada función de API implementada

Ejecución en Vitis IDE
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í.