Objetivos

Pretende-se criar uma solução que seja compatível com cálculos típicos de clusters baseados em CPUs, porém a um custo reduzido. Além disso, pretende-se explorar certos tipos de cálculos e simulações, especialmente focados em aplicações que exijam respostas em tempo real, onde a solução utilizando GPUs seja mais eficiente do que a baseada em CPUs.

Além da construção física de um cluster, o projeto visa o desenvolvimento de bibliotecas e ferramentais, com licença livre, para o desenvolvimento de aplicações sobre estas plataformas. Apesar da tendência que as GPUs apresentam em se tornarem processadores de uso genérico, ainda possuem um paradigma de programação diferente em relação ao desenvolvimento de CPUs.

As bibliotecas e ferramentais a serem desenvolvidos pretendem encapsular o processo de desenvolvimento para o programador de aplicações, de forma que as aplicações possam ser feitas apenas utilizando paradigmas e ambientes de desenvolvimento tradicionais. O sistema irá realizar internamente um mapeamento e redirecionamento de trechos de código para o cluster de GPUs, possibilitando que o programador apenas raciocine em relação a algoritmos paralelos tradicionais, os mesmos que seriam utilizados no caso de estar utilizando um cluster tradicional, baseado em CPUs.

Quando se trata de cluster de CPUs, devido ao cunho genérico que estas apresentam na sua arquitetura interna, qualquer processamento pode ser realizado por qualquer nó. Quando se trata de arquiteturas de hardware gráfico, isto já não é trivial, uma vez que existem nós otimizados para cálculos específicos.

Assim, este projeto também tem os seguintes objetivos: