- Visão geral
- Introdução
Disposições
A Biblioteca AMD Vitis™ BLAS fornece:
- Uma rápida implementação acelerada por FPGA das Standard Basic Linear Algebra Subroutines (BLAS)
- Interfaces de software de alto nível escritas em C, C++ e Python 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
A Biblioteca Vitis BLAS inclui as seguintes funções de operação de matriz e vetor:
Funções para operações de matriz:
- Multiplicação geral da matriz
Funções para operações de vetor:
- Pesquisar posição do elemento vetorial
- Acumular a magnitude de elementos vetoriais
- Calcular o produto escalar de dois vetores
- Calcular um produto escalar de vetores
- Calcular a norma Euclidiana de um vetor
- Trocar, dimensionar, copiar vetores
Funções para operações de matriz-vetor:
- Multiplicação geral de matriz-vetor
- Multiplicação escalonada geral de matriz-vetor
- Multiplicação simétrica de vetor e matriz
- Multiplicação triangular de vetor e matriz
Tipos de implementação de função
A Biblioteca Vitis BLAS fornece três tipos de implementações de funções, 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, C++ e Python para permitir que desenvolvedores de software puro descarreguem operações BLAS 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 Vitis BLAS atualmente não fornece nenhuma função em execução no Versal AI Engine.
Funções da Biblioteca Vitis BLAS | Funções primitivas L1 |
---|---|
amax, amin: pesquisa a posição do elemento vetorial | |
asum: acumula a magnitude de elementos vetoriais | |
dot: calcula o produto escalar de dois vetores | |
axpy: calcula um produto escalar de vetor e adiciona ao vetor | |
nrm2: calcula a norma Euclidiana de um vetor | |
swap, scal, copy: vetores de trocar, dimensionar ou copiar | |
symv: multiplicação simétrica de vetor e matriz | |
trmv: multiplicação triangular de vetor e matriz | |
Funções do kernel L2 | |
Gemm class: multiplicação geral da matriz | |
Gemv class: multiplicação geral de vetor-matriz | |
Funções da API de software L3 | |
xfblasCreate: inicializa a biblioteca e cria um handle | |
xfblasFree: libera memória no dispositivo FPGA | |
xfblasGetMatrix: copia uma matriz na memória do dispositivo FPGA para o host | |
xfblasExecute: inicia o kernel e aguarda até que ele termine | |
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
A Biblioteca Vitis BLAS fornece três tipos de implementações de funções, 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, C++ e Python para permitir que desenvolvedores de software puro descarreguem operações BLAS 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 Vitis BLAS atualmente não fornece nenhuma função em execução no Versal AI Engine.
Para subdiretórios L1:
- include/hw: os arquivos de cabeçalho para funções primitivas
- tests/hw: os principais módulos, incluindo movimentadores de dados e funções primitivas
- tests/sw: o suporte ao testbench e infraestrutura para chamar funções primitivas
Para subdiretórios L2:
- include/hw: os arquivos de cabeçalho para funções do kernel
- include/sw: os módulos de host para chamar as funções do kernel
- tests/hw: contém os Makefiles usados para criar cada função do kernel implementada
Para subdiretórios L3:
- include/sw: os arquivos de cabeçalho para funções da API de software
- tests/sw: contém os Makefiles usados para testar cada função da API de software implementada

Execução no Vitis IDE
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.