Introdução aos compiladores
A computação científica requer processamento de alto desempenho. A natureza dos problemas tratados requer operações com números em formato de ponto flutuante e muitas operações matriciais. Já se sabe há algum tempo que o mais alto desempenho em computação é obtido com processamento paralelo e distribuído. Nestas formas de processamento são usados vários processadores ao invés de um só. A idéia é dividir as tarefas computacionais entre os vários processadores, de modo que, trabalhando concorrentemente, o resultado seja obtido mais rápido.
Normalmente o alto desempenho requerido na computação científica era obtido por hardware caro, dedicado a resolver este tipo de problema – como os chamados supercomputadores. Mas o avanço tecnológico possibilitou outro tipo de solução. Já a partir de meados da década de 90, o poder computacional de processadores produzidos em larga escala para uso doméstico possibilitou o progressivo abandono do paradigma dos supercomputadores em favor de uma nova solução de desempenho.
Em 1994, Thomas Sterling e Donald J. Becker, pesquisadores da NASA, montaram uma arquitetura de processamento de alto desempenho que era um agrupamento de máquinas comuns obtidas no mercado. Agrupamento, neste caso, é a tradução de cluster, em inglês. Os 16 computadores que compunham o cluster (os “nós” do cluster) foram interligados através de uma rede ethernet. E ao fazer o cluster executar processamento distribuído, Sterling e Becker obtiveram um desempenho de magnitude comparável a sistemas de alto desempenho da época [Sterling, Becker et al. 1995].
Nascia então o que foi chamado por eles de “cluster beowulf”. (Beowulf é um herói mitológico, protagonista de um antigo poema épico da língua inlgesa).
Um cluster beowulf é constituído não apenas de computadores ou tecnologias de rede encontradas no mercado ao consumidor doméstico. O software também é importante na estratégia de minimizar custos. O primeiro cluster beowulf utilizava o