Visão geral

A biblioteca AMD Vitis™ Solver oferece um conjunto de decomposição de matriz otimizada para desempenho, solvers de valor linear/próprio e outras funções que podem ser usadas para projetar algoritmos acelerados para RADAR, LiDAR, visão computacional, finanças computacionais e outros aplicativos.

Os kernels da biblioteca Vitis Solver podem ser usados como aceleradores independentes que você pode solicitar em seu código de CPU incorporado/host ou combinar com outros kernels e primitivas da biblioteca do Vitis para acelerar seu pipeline de processamento de ponta a ponta.

Algumas das principais funções aceleradas atualmente disponíveis incluem Decomposição em valor singular (SVD), Decomposição QR e LU (inferior-superior), Matriz inversa, Solvers triangulares, Decomposição de valor próprio e outras.

Funções

Atualmente, a biblioteca Vitis Solver inclui as seguintes operações para matrizes densas:

Decomposição de matriz

  • Decomposição de Cholesky para matrizes simétricas positivas definidas
  • Decomposição LU sem pivotamento e com pivotamento parcial
  • Decomposição QR para matrizes gerais
  • SVD (decomposição de valor único) para matrizes simétricas e não simétricas (método Jacobi)

Solver linear

  • Solver linear tridiagonal (método de redução cíclica paralela)
  • Solver linear para matrizes triangulares
  • Solver linear para matrizes simétricas e não simétricas
  • Matriz inversa para matrizes simétricas e não simétricas

Solver de autovalor

  • Solver de autovalor de Jacobi para matrizes simétricas

Lista de funções de matrizes de lógica programável (PL) e do mecanismo de IA (AIE)

A biblioteca Vitis Solver tem como alvo os desenvolvedores de kernel do Vitis para ajudar a acelerar o desenvolvimento de seus aplicativos. A biblioteca fornece duas camadas de APIs, L1 e L2. As funções L1 e L2 estão listadas na tabela abaixo.

A versão 2022.2 da biblioteca Vitis Solver adicionou duas novas funções do AI Engine: Decomposição QR e decomposição de Cholesky.

Funções da biblioteca do Solver
L1 Decomposição QR (Rotação de quadratura)
QR_Inversa
SVD (Decomposição de valor singular)
Cholesky_Inversa
Decomposição de Cholesky
Decomposição QR para AIE
Decomposição de Cholesky para AIE
 
L2 Decomposição de matriz
Solver de autovalor
Solver Linear
Recursos das APIs L1 e L2 são descritos abaixo
APIs L1 Funções para decomposição da matriz. Projetado como componentes de HLS com interfaces de memória (apontando para BRAM ou URAM). Essas APIs são compatíveis com uma variedade de tipos de dados, incluindo float, duplo ou complexo. Como APIs L1 precisam de todos os dados de entrada prontos na memória, elas têm um limite superior ao tamanho total da matriz de entrada.
APIs L2 Kernels em execução nos dispositivos FPGA. Essas APIs são compatíveis com tipos de ponto de flutuação de dupla precisão. Eles fazem leitura de DDR/HBM para obter entrada e gravação de DDR/HBM para resultados de saída. Eles podem ser chamados pelo lado do host.

Organização

A biblioteca Vitis Solver é organizada em pastas L1 e L2, cada uma relacionada a um estágio diferente de desenvolvimento de aplicativos.

L1: Makefiles e fontes em L1 facilitam um fluxo baseado em HLS para verificações rápidas.

L2: Makefiles e fontes em L2 facilitam a criação do arquivo XCLBIN de várias fontes (arquivos HDL, HLS ou XO) de kernels com o código do host gravado em uma estrutura de Biblioteca de tempo de execução do Vitis/OpenCL™ direcionada a um dispositivo. 

AMD Vitis Solver Library Directories Diagram