Pesquisa

Todas os tópicos que abrangem as grandes áreas de arquitetura de computadores e tolerância a falhas são bem vindos. Podemos trabalhar em vários níveis de abstração, desde o algoritmo e sistema até o dispositivo e unidades funcionais. Trabalhos em dispositivos reais como em simulados, estudos em arquiteturas atuais como o desenvolvimento de novas arquiteturas.

Caso tenha interesse em propor um novo tópico de pesquisa, super correlato aos tópicos atuais ou não, entre em contato sem medo.


Computação de Alto Desempenho

Computação de alto desempenho é agregar poder computacional, seja por aceleradores como GPUs ou apenas multicore/manycore, de maneira que o sistema final possa resolver problemas computacionais de grande escala (ou extremamente complexos).

Aplicações científicas, por exemplo, precisam resolver problemas cada vez maiores e mais difíceis. Por outro lado, aplicações como carros autônomos precisam processar uma grande quantidade de dados, de sensores e câmeras, em tempo real.

Entre os principais tópicos, podemos listar os seguintes:

  • Arquiteturas avançadas/paralelas
    • Graphical Processing Units (GPU)
    • Field-Programmable Gate Array (FPGA)
  • Linguagens de programação paralela
  • Frameworks de programação paralela
  • Análise/Modelagem de desempenho (tempo de execução, consumo energético, taxa de falhas)
  • Resiliência e correção de erros

Experimentos de Radiação

radiation-test-1A principal fonte de erros em dispositivos eletrônicos, tanto em nível do mar como em alta altitude, é a radiação ionizante. A principal fonte de radiação ionizante são os raios cósmicos interagindo com a atmosfera terrestre. Essa interação gera uma chuva de partículas que chegam até o nível do mar. A principal partícula que pode causar erros em semicondutores no nível do mar é o nêutron. Portanto, experimentos de radiação, que avaliam dispositivos dentro da atmosfera terrestre, bombardeiam os dispositivos com um fluxo acelerado de nêutrons. Dispositivos que serão lançados no espaço são avaliados não apenas com nêutrons, mas também com íons pesados.

radiation-test-2Mesmo uma única falha induzida por radiação pode ser prejudicial tanto para a operação correta como para o desempenho de softwares. As falhas podem corromper os dados se não forem detectadas e corrigidas de forma apropriada, levando o programa não apenas a executar incorretamente como também a produzir respostas erradas e até travar o sistema.


Injeção de Falhas

Campanhas de injeção de falhas podem ser feitas em diferentes níveis de abstração, desde o RTL até o nível de software e aplicação. Como o ambiente é mais facilmente controlado do que em experimentos de radiação, podemos entender melhor como as falhas se propagam no sistema. Assim, o projetista pode desenvolver soluções em nível de hardware e software visando melhorar a confiabilidade do sistema. Porém, a taxa de erros real não pode ser calculada facilmente com injeção de falhas em nível de software, diferentemente de experimentos de radiação que reproduzem o ambiente real (energia dos nêutrons atingindo a placa) de forma acelerada.


Compiladores

Desenvolver soluções de paralelismo e confiabilidade em nível de software, sem desenvolver um hardware novo, pode ser um desafio. Parte desse desafio se encontra em entender o que o compilador está fazendo com a sua solução. Em vez de brigar com o compilador, podemos aprimorar e automatizar algumas soluções diretamente no compilador.

Algumas soluções, como enrobustecimento seletivo (selective hardening), podem ser descartadas pelo compilador que considera redundância como algo indesejável. Compiladores que estão cientes (aware) de alguns desafios de paralelismo e confiabilidade são escassos. Um supercomputador não pode se preocupar apenas com o desempenho, mas mesclar consumo energético e confiabilidade nas decisões de otimização.