7 / 20 · Conceito
Indicadores de validade, etiquetas e descarte
Distinga zero numérico, bolhas e tokens de outro trabalho.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
Um token transporta mais do que um número
Nosso token de referência contém value, valid, job e k. Um token inválido é uma bolha. Um token válido com value igual a zero é um operando real de matriz. Job identifica a transação; k identifica o termo da redução. As conexões fixam a linha de A e a coluna de B para cada PE, enquanto o módulo envolvente lembra as coordenadas do bloco.
Quando ambas as entradas forem válidas, verifique se as etiquetas job e k são iguais antes de multiplicar. A(0,1)=2 combinado com B(0,0)=5 produz dez, mas não é um termo legítimo. O par correspondente a k=1 é dois e sete, produzindo quatorze. Trate uma diferença de etiquetas como um erro visível de verificação, em vez de descartá-la silenciosamente como uma bolha comum.
Conte termos, não clocks
Clear inicia acc=0 e count=0. Para cada par correspondente, exija k=count e depois incremente count. Consumir k=K−1 conclui o resultado local imediatamente após essa borda. Bolhas e pausas não incrementam count. Este controlador simples exige valores k ordenados. Suportar ordem arbitrária exige um mapa de bits dos termos recebidos e detecção de duplicatas.
Para K=2, consumir um e cinco produz acc=5, count=1. Uma bolha deixa ambos inalterados. Consumir dois e sete com k=1 produz acc=19, count=2 e done. Repetir k=1 é um erro mesmo se um consumidor posterior já tiver aceitado o resultado.
Esvaziar e limpar têm objetivos diferentes
A matriz não está vazia quando a última entrada de fronteira entra. Tokens permanecem nos registradores internos de encaminhamento. Continue avançando com entradas de fronteira inválidas até o último PE consumir seu termo final. Durante esse esvaziamento, mantenha os acumuladores concluídos até que seus resultados sejam coletados. Iniciar um novo trabalho, por outro lado, exige limpar juntos os estados de acumulador, count, valid e etiqueta.
O módulo envolvente deste curso executa um trabalho por vez. Ele conclui, coleta os resultados, limpa e depois começa novamente. Sobrepor trabalhos exige estado ou acumuladores adicionais e um protocolo de saída; etiquetas sozinhas não fornecem essa capacidade. Os testes devem incluir etiquetas divergentes, termos ausentes e repetidos, estado válido residual após clear e operandos zero válidos que ainda incrementem a contagem de termos.
Experimente
Um PE com K=3 consome o par k=0 (2,4), uma bolha, o par k=1 (0,9) e o par k=2 (−1,3). Encontre acc e count. E se a última etiqueta job for divergente?
Ler a explicação
Com etiquetas correspondentes, acc=5 e count=3, portanto o resultado está completo. A bolha não conta; o zero válido conta. Uma divergência de job deve gerar um erro de verificação e não pode ser informada como conclusão bem-sucedida.