Explorando Linhas de Execução Paralelas com Programação Orientada por Fluxo de Dados
Autores
5134 |
1994,131,1993
|
|
5135 |
1994,131,1993
|
|
5136 |
1994,131,1993
|
Informações:
Publicações do PESC
Execução guiada por fluxo de dados permite extração de paralelismo de forma natural. Entretanto, descrever dependências de controle entre tarefas dataflow com granularidade fina pode ser complexo e apresentar custos indesejáveis. Neste trabalho é apresentado o TALM (TALM is an Architecture and Language for Multi-threading) um modelo dataflow de programação paralela com granularidade definida pelo usuário. No TALM, os programadores identificam blocos de código, chamados de super-instruções, para executarem em paralelo, e depois os conectam em um grafo de fluxo de dados. O TALM foi implementado como um sistema de execução híbrido (Von Neumann/dataflow): a Trebuchet. Observou-se que a utilidade do TALM depende largamente da forma que os programadores especificam e conectam super instruções. Foi elaborada uma linguagem de alto nível para o TALM e, para dar suporte a esta linguagem, foi desenvolvido o Couillard, um compilador completo que cria, baseado em um program C anotado, um grafo de fluxo de dados e o código C correspondente a cada super-instrução. Este trabalho mostra que o conjunto de ferramentas desenvolvido permite obter os benefícios da execução guiada por fluxo de dados e explorar técnicas de programação paralela sofisticadas, com pequeno esforço. Para avaliar o sistema desenvolvido, foi executado um conjunto de aplicações reais em duas máquinas com múltiplos núcleos de processamento. Uma comparação com métodos populares de programação paralela mostra acelerações competitivas, enquanto é provida uma alternativa mais fácil de programação paralela.
Dataflow is a natural approach to parallelism. However, describing dependencies and control between fine-grained dataflow tasks can be complex and present unwanted overheads. In this work we present TALM (TALM is an Architecture and Language for Multi-threading): a dataflow model for parallel programming with user-defined granularity. In TALM, programmers identify code blocks, called super-instructions, to be run in parallel and connect them in a dataflow graph. TALM has been implemented as a hybrid Von Neumann/dataflow execution system: the Trebuchet. We have observed that TALM's usefulness largely depends on how programmers specify and connect super-instructions. Thus, we have created a high-level language for TALM and to support this language, we have developed Couillard, a full compiler that creates, based on an annotated C-program, a dataflow graph and C-code corresponding to each super-instruction. We show that our toolchain allows one to benefit from dataflow execution and explore sophisticated parallel programming techniques, with small effort. To evaluate our system we have executed a set of real applications on two different multi-core machines. Comparison with popular parallel programming methods shows competitive speedups, while providing an easier parallel programing approach.