Que tipo de infraestrutura de computação distribuída / paralela você depende muito do problema que está sendo trabalhado? As cargas de trabalho mais fáceis de distribuir são aquelas que são facilmente subdivididas: dividam o conjunto de problemas em 4 partes, gerem os blocos em 4 máquinas, juntem os resultados novamente depois que o processamento estiver concluído. Cargas de trabalho que são escolhas ruins para subdivisão são aquelas que têm strong dependência de dados processados anteriormente ou no momento.
Para dados que não podem subdividir, sua melhor aposta é analisar algumas das imagem de sistema único frameworks lá fora (veja o link para uma lista). Isso faz com que vários sistemas emulem um único sistema maior. Mesmo assim, deve-se tomar cuidado para projetar o processamento de maneira a minimizar a comunicação entre os sistemas. Sistemas como esses são onde produtos de rede como o Infiniband são realmente úteis.
Para dados que podem subdividir, você tem muito mais opções. O maior talvez seja o BOINC , que é projetado em torno de relatórios de workstations de latência muito alta (horas, dias ou até semanas). Eu já ouvi falar de grupos privados do BOINC por aí.
Um que usei na faculdade é PVM . Esta é uma biblioteca C (existe um wrapper perl, que é novo) que permite a comunicação entre sistemas através de uma variedade de transportes.
O que quer que você escolha, você ainda terá que reprojetar como funciona a sua estrutura de computação. Vai dar muito trabalho, mas pelo menos você pode usar mais recursos para resolver seus problemas. É muito improvável que você possa simplesmente descartar seu código existente em uma estrutura de computação distribuída e fazer com que tudo funcione, apenas colocar o framework distribuído em funcionamento será um desafio.