Kanga: uma interface genérica baseada em esqueletos para programação paralela em Anahy3

Detalhes bibliográficos
Ano de defesa: 2014
Autor(a) principal: Kist, Deives Mesquita
Orientador(a): Cavalheiro, Gerson Geraldo Homrich
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Pelotas
Programa de Pós-Graduação: Programa de Pós-Graduação em Computação
Departamento: Centro de Desenvolvimento Tecnológico
País: Brasil
Palavras-chave em Português:
Área do conhecimento CNPq:
Link de acesso: http://guaiaca.ufpel.edu.br/handle/prefix/8510
Resumo: Os programadores tem grandes dificuldades com a programação paralela, principalmente, porque devem dividir a aplicação em partes que possam ser executadas simultaneamente e mapeá-las sobre os núcleos disponíveis no processador de forma que a aplicação tenha bom desempenho. Para realizar essas tarefas são utilizadas ferramentas de programação paralela, neste trabalho é utilizada a ferramenta de programação multithread Anahy3 que tem uma interface baseada no padrão POSIX Threads. O Anahy3 oferece recursos para descrição e controle da concorrência e também mecanismos de escalonamento. Estes mecanismos são executados de forma automática pelo ambiente de execução deixando o programador livre da responsabilidade de mapear as atividades entre os núcleos do processador. O objetivo deste trabalho e estender a interface de programação de Anahy3 por meio de recursos de programação paralela de mais alto nível. Para implementar estes novos recursos encontramos na literatura o conceito de algoritmos de esqueletos paralelos. Os esqueletos são modelos de programação paralela de alto nível que encapsulam padrões de algoritmos recorrentes de programação paralela. Neste trabalho foi desenvolvida uma interface constituída por esqueletos implementados na linguagem C++ por meio de classes templates. Na implementação realizada é possível que o programador defina os tipos de dados a serem manipulados pelos esqueletos, assim eliminando o uso de ponteiros do tipo void* característicos de Pthreads. Os esqueletos que compõem a interface são: Map, Reduce, Zip, Scan, Fork, MapReduce, Farm e Divisão e Conquista.