Implantação de Operadores de Visão no PYNQ
O objetivo é fazer com que arrays de software, interfaces de hardware e resultados de validação correspondam entre si. Primeiro, determine se o usuário está implantando um novo operador, localizando uma falha existente ou otimizando desempenho, mantendo as autorizações e o estado do projeto já existentes; não transforme toda tarefa em um retreinamento ou refatoração completa.
Entrada Mínima
É necessário o algoritmo/pré-processamento, pelo menos um conjunto de entrada/saída dourada, a topologia bit/HWH ou HLS, a placa real e o ambiente PYNQ. Se algo estiver faltando, realize primeiro verificações offline com os materiais disponíveis, indicando quais conclusões ainda dependem do material ausente.
Leia as instruções de portabilidade e preencha o contrato de tensor. O exemplo é um tensor de escala de cinza genérico, não uma configuração de hardware que possa ser carregada diretamente em qualquer placa. Novos modelos devem redefinir shape, dtype, layout, cor, escala/preenchimento, escala de quantização, arredondamento, saturação, decodificação de saída e número de bytes transmitidos. Formatos de nível de bit como INT4 empacotado exigem regras de empacotamento separadas; o verificador de contrato existente só aceita arrays numéricos não empacotados.
Selecionar Caminho de Validação
- Primeira integração: Verificação de contrato → referência de entrada inteira fixa → saída PL crua para um único quadro → quadros contínuos → precisão da aplicação → temporização segmentada.
- Resultados inconsistentes: Salve progressivamente os nós de pré-processamento, quantização e o tensor PL cru, localizando o primeiro ponto de divergência; não modifique limiares de pós-processamento para mascarar erros anteriores.
- Vazão ou latência anormais: Fixe as condições de entrada e registre o número do quadro e o timestamp dentro do mesmo domínio de clock; use o script de temporização para diferenciar fila, PL/DMA e pós-processamento.
- Troca de placa: Reidentifique DMA, largura de endereço, coerência de cache, clock/reset e interrupções; mantenha a referência dourada e o método de comparação.
O prompt completo e replicável está no fluxo de trabalho; leia apenas o item correspondente à tarefa atual.
Hardware e Buffers
Primeiro, diferencie entre AXI DMA padrão e HLS IODMA personalizado. Para o modo simples padrão, consulte o modelo de adaptação; interfaces personalizadas devem ser implementadas de acordo com registros e contratos de comprimento fixo/TLAST. Não confunda nomes de API Python com protocolos de hardware.
Buffers contínuos exigem propriedade explícita: após escrita pela CPU, sincronize para o dispositivo; após conclusão do hardware e sem mais acesso, sincronize de volta para a CPU. Em caso de exceção, mantenha os buffers em trânsito e não libere incondicionalmente no finally. Detalhes em ciclo de vida DMA.
HWH é uma descrição de interface, não prova que o bit do disco foi carregado. Ao vincular hardware já carregado, verifique a identidade de carregamento, endereço e saída de referência. Quando LCD e inferência compartilham PL, não é possível obter hardware combinado carregando dois Overlays completos sequencialmente.
Validação e Otimização
Em princípio, a saída PL crua de inteiros deve ser exatamente igual elemento por elemento; para aritmética de ponto flutuante, use uma tolerância absoluta predefinida, registrando o dtype e valores não finitos. Use o script de comparação e não substitua a correção da interface por tolerâncias ampliadas. Avalie a precisão do modelo quantizado e a consistência da implementação separadamente.
Verifique simultaneamente LUT, Slice, FF, BRAM, DSP, temporização e backpressure de fluxo. FIFO deve ser verificado contra pesos fixos, entrada, frequência e paralelismo; resultados após alteração do modelo devem ser listados separadamente. A vazão é calculada dividindo o número de quadros efetivamente concluídos pela janela de medição real; a latência é calculada pelo tempo entre dois pontos do mesmo quadro, não somando medianas de cada estágio.
Entregue contrato, saída crua, identidade de fonte/bit/HWH, resultados de verificação e faixa de medição. Erros comuns e condições de falha do método estão na lista de depuração. O efeito do projeto e os limites de portabilidade estão nas instruções de validação.