Propostas sem aluno atribuído - Setembro de 2014

DEI - FCTUC
Gerado a 2024-04-20 12:04:13 (Europe/Lisbon).
Voltar

Titulo Estágio

Computação de Alto Desempenho para os Clusters do Futuro

Áreas de especialidade

Engenharia de Software

Local do Estágio

DEI

Enquadramento

O número de núcleos em clusters de alto desempenho continuará a crescer muito rapidamente nos próximos tempos. Isto vai exigir novos modelos de programação, porque a complexidade dos programas e das arquiteturas vai crescer muito e mais núcleos implicam mais falhas. No entanto, nem o Message Passing Interface pode ser dimensionado para as novas arquiteturas, nem qualquer solução atualmente existente tolera falhas de uma forma adequada.

Para lidarmos com arquiteturas desta dimensão, propomos um paradigma de programação para Computação de Alto Desempenho (CAD) com base em estruturas de dados distribuídas, como dicionários, árvores, skip-lists, etc. Estas estruturas de dados são tão importantes em programas sequenciais modernas, que a sua adoção se expandiu para sistemas multi-núcleos de pequena escala. Java e Python, por exemplo, incluem estruturas de dados simultaneamente eficientes e elegantes, como dicionários não bloqueantes ou listas e filas bloqueantes.

Objetivo

O objetivo deste Estágio é o de criar estruturas de dados distribuídas para Computação de Alto Desempenho. Estas estruturas deverão alcançar duas vantagens sobre a gestão manual da comunicação: 1) uma interface de programação (API) mais simples, elegante e independente da localização e 2) tolerância a falhas. Estas estruturas devem ser flexíveis, para permitirem ao programador configurar comportamentos como localização, consistência, ou o nível de replicação.

Além disso, estas estruturas poderão ser cuidadosamente otimizadas, de acordo com critérios como localização e replicação, para acessos rápidos e tolerantes a falhas. Na realidade, a tolerância a falhas é uma das características mais favoráveis das estruturas de dados distribuíds, como sabemos a partir de trabalhos anteriores em sistemas peer-to-peer, onde tabelas de dispersão (hash) distribuídas resistem a altos níveis de churn, causados ​​por utilizadores que entram e saem da rede com muita frequência.

O desafio, neste trabalho, será conjugar esta capacidade com a complexidade e adaptabilidade da estrutura de dados. Será ainda necessário tomar particular atenção aos requisitos de desempenho, que são muito mais rigorosos, especialmente no que diz respeito à latência.

As estruturas de dados distribuídas podem também suportar facilmente muitos padrões de decomposição de aplicações, como task-farming, divide-and-conquer, computação síncrona entre outros, que o estagiário deverá desenvolver no âmbito do seu trabalho.

Plano de Trabalhos - Semestre 1

- Estudo do estado da arte
- Análise dos problemas que mais poderiam beneficiar de uma destas estruturas de dados (exemplos prováveis: multiplicação de matrizes e ordenação)
- Implementação de uma estrutura de dados piloto para um destes problemas
- Escrita do Relatório Intermédio com uma listagem das estruturas de dados a considerar

Plano de Trabalhos - Semestre 2

- Implementação das estruturas de dados consideradas no Relatório Intermédio
- Aplicação das estruturas aos problemas considerados no início do trabalho (multiplicação de matrizes, p.ex.) e utilização em novos problemas (p.ex., task-farming)
- Escrita de um artigo científico.

Condições

Estágio não remunerado.

Orientador

Filipe Araújo, Patrício Domingues (CISUC, IPLeiria)
filipius@uc.pt 📩