Altifigence Academy

1 / 20 · Conceito

Mapeie produtos escalares para elementos de processamento

Separe os índices de linha, coluna e redução e calcule uma pequena matriz de referência.

Defina o cálculo antes de planejar sua execução

Considere A com dimensão M×K e B com dimensão K×P. Seu produto C tem dimensão M×P. O índice i seleciona uma linha da saída, j seleciona uma coluna da saída e k é o índice de redução dentro da soma. Os índices começam em zero em todo este curso.

Ci,j=∑k=0K−1Ai,kBk,jC_{i,j}=\sum_{k=0}^{K-1} A_{i,k}B_{k,j}

Nosso projeto com saídas estacionárias atribui C(i,j) a PE(i,j). Esse elemento de processamento mantém sua soma parcial enquanto A se move para a direita e B para baixo. O movimento permite reutilização; a equação especifica quais operandos podem ser multiplicados. Definiremos a temporização de clock separadamente para que um erro de escalonamento não altere silenciosamente a matemática pretendida.

Calcule uma referência completa

Use A=[[1,2],[3,4]] e B=[[5,6],[7,8]]. PE(0,1) combina a linha [1,2] com a coluna [6,8]. Ele acumula 1×6=6 e 2×8=16 para obter 22. Usar a segunda linha de B, [7,8], produz 23, uma indicação útil de erro entre linha e coluna.

PETermo k=0Termo k=1Resultado
(0,0)51419
(0,1)61622
(1,0)152843
(1,1)183250

A matriz esperada é [[19,22],[43,50]]. Cada PE executa dois MACs válidos, portanto a matriz executa oito MACs. Uma convenção que conta uma multiplicação e uma soma separadamente informa dezesseis operações aritméticas. Sempre indique a unidade ao comparar taxas de processamento.

Conecte coordenadas ao armazenamento

No armazenamento por linhas, A(i,k) tem deslocamento de elemento iK+k e B(k,j) tem deslocamento kP+j. Para a coluna j=1 neste exemplo, B usa os deslocamentos 1 e 3. Uma interface de memória que entrega linhas contíguas precisa, portanto, de buffers ou reorganização para fornecer colunas à parte superior da matriz.

Construa a referência aritmética usando inteiros de largura ampla e aplique a conversão de saída escolhida depois. Essas pequenas entradas positivas não testam overflow. Testes posteriores devem acrescentar valores negativos, o operando mais negativo e uma redução mais longa. Uma B identidade deve reproduzir A, enquanto uma linha de A inteiramente nula deve produzir uma linha de C inteiramente nula. Registre a lista de termos k de cada PE além de sua soma final: assim, um termo ausente ou repetido fica visível mesmo quando dois erros se cancelam numericamente.

Experimente

Para A=[[2,-1],[0,3]] e B=[[4,5],[-2,1]], encontre C, a quantidade de MACs e o deslocamento de elemento de B(1,0) no armazenamento por linhas.

Ler a explicação

C=[[10,9],[-6,3]]: as quatro somas são 8+2, 10−1, 0−6 e 0+3. Há 2×2×2=8 MACs. B(1,0) tem deslocamento de elemento 1×2+0=2.

Sua escolha vale neste navegador. Altere-a a qualquer momento no rodapé.