Otimizando Laços em Computação por Fluxo de Dados
Autores
5956 |
2741,131,1993
|
|
5957 |
2741,131,1993
|
|
5958 |
2741,131,1993
|
Informações:
Publicações do PESC
Título
Otimizando Laços em Computação por Fluxo de Dados
Linha de pesquisa
Inteligência Artificial
Tipo de publicação
Dissertação de Mestrado
Número de registro
Data da defesa
7/3/2016
Resumo
O modelo de dataflow dinâmico permite que as iterações distintas de um loop executem simultaneamente, impulsionando a exploração de paralelismo no modelo. Para evitar que operandos produzidos em iterações futuras sejam utilizados em iterações passadas, cada operando possui um rótulo com um número de instância, que é incrementado a cada iteração do loop. A execução de uma instrução é disparada somente quando todos seus operandos de entrada com os mesmos rótulos se tornam disponíveis. Entretanto, este mecanismo de rótulo tradicional impõe a geração de instruções de controle desnecessárias para manipular os rótulos e garantir o casamento correto de operandos que não são processados dentro de um loop. Para tratar desse problema, este trabalho apresenta um conjunto de técnicas de otimização de loop no dataflow. O Stack-Tagged Dataflow é um mecanismo que utiliza pilha de inteiro no rótulo de cada operando para reduzir o controle de overhead em dataflow. Contudo, este mecanismo de pilha pode obter overheads significativos em loops aninhados. O Tag Resetting pode ser usado para zerar o rótulo de um operando quando ele alcançar um ponto seguro de execução, permitindo a redução de um nível da profundidade de pilha. Finalmente, o Loop Skipping contribui ainda mais com a redução do overhead da comparação de pilha em loops, quando o número de iterações de um loop pode ser previsto pelo compilador. Os resultados dos experimentos mostram que todas as técnicas contribuem com a redução do overhead em loops no dataflow. Os experimentos mostram que a execução de tarefas com granularidade mais fina se torna viável com a aplicação dessas técnicas. Além do mais, uma abordagem de compilação híbrida pode ser usada para melhorar o desempenho de cada técnica.
Abstract
The dynamic dataflow model allows dierent iterations of a loop run simultaneously, boosting parallelism exploitation in the model. To avoid produced operands in future iterations to be used in previous iterations, each operand has a tag with an instance number, which is incremented as it goes through the loop. Instruction execution is triggered only when all input operands with the same tag become available. However, this traditional tagging mechanism requires the generation of unnecessary control instructions to manipulate tags and guarantee that operands that are not used inside the loop match properly. To address this problem, this work presents a set of dataflow loop optimization techniques. The Stack-Tagged Dataflow is a mechanism that uses stacks of tags in each operand to reduce control overheads in dataflow. Nevertheless, this stack mechanism can achieve signicant overheads in nested loops. The Tag Resetting can be used to reset the tag of an operand when it reaches a safe point of execution, allowing to reduce 1-level at the stack depth. Finally, Loop Skipping further contributes to reduce stack comparison overhead in loops, when the number of iterations can be predicted by the compiler. Experimental results show that all techniques contribute to reduce the overhead in dataflow loops. Experiments show that running tasks with ner granularity becomes feasible with the application of these techniques. Furthermore, a hybrid compiling approach can be used to improve the performance of each technique.
Arquivo