Essa discussão é bem maneira.
No meio cientifico é comum o uso de clusters para paralelizar simulações numéricas de CFD (Computational Fluid Dynamics) e previsão do tempo, por exemplo.
Há inúmeras técnicas de paralelização e de tipos de cluster, cada qual com suas particularidades. Em geral, o consenso é que há uma curva em que aumentar o número de processadores reduz o tempo de execução até um certo ponto. A partir desse ponto, o efeito é o contrário, de modo que há cenários que é pior do que não paralelizar.
Os gargalos provocados pela paralelização pode ser diversos, como memória ram disponível, tempo de leitura/escrita em disco, tempo de comunicação entre os processos (tem clusters que os processos são separados em hardwares diferentes, como é o caso do cluster beowulf, por exemplo, com isso, a comunicação se dá via rede).
Enfim, são tantas variáveis que o ideal é medir. E medir dá trabalho, requer método e análise crítica. Nessas aplicações científicas, isso é mais fácil porque o software já possui suporte para isso. Quando é necessário adequar a aplicação para suporte multthread o buraco fica ainda maior: será que o custo de desenvolvimento compensa o potencial benefício?