-
O que você quer é o oposto da virtualização, um cluster.
Vou tentar explicar a diferença da maneira mais simples possível.
A virtualização está tendo várias máquinas virtuais em execução em uma (ou mais) máquinas físicas. Isso permite que você faça uso mais eficiente de seu hardware existente, executando várias máquinas virtuais completamente separadas no computador físico.
Um cluster permite que você use uma ou mais máquinas físicas (chamadas "nós") para executar seu aplicativo. Isso permite que você use todo o poder da CPU no cluster em tarefas de computação, coordenadas por um agendador de lotes.
Essas duas coisas podem ser combinadas - por exemplo, Eu costumava trabalhar em um projeto chamado Nectar Research Cloud , que usava a virtualização baseada em Openstack para permitir que cientistas e outros pesquisadores da Austrália crie qualquer coisa de VMs únicas a enormes clusters de máquinas virtuais sob demanda.
-
Além do software de enfileiramento em lote como slurm
, ou torque
, pbs
mencionado por @Alexander Batischev, você provavelmente também precisará de MPI ou similares instaladas.
Se o tipo de computação que você precisa executar pode, por exemplo, ser dividido em partes menores que podem ser processadas independentemente, com os resultados combinados posteriormente, você precisará de bibliotecas MPI. Seu código também precisará ser escrito para usá-los para que diferentes instâncias do seu processo em execução em nós diferentes no cluster possam se comunicar entre si.
Muitas das aplicações comuns e populares em várias disciplinas científicas e outras acadêmicas têm suporte a MPI (ou similar, possivelmente proprietárias, alternativas) incorporadas porque elas são planejadas para serem executadas em clusters.
-
Alexander menciona que os clusters funcionam melhor com software não interativo ... isso é verdade, mas para muitos aplicativos há front-ends gráficos para criar, exibir e editar os dados, criando e enviando os arquivos de trabalho em lote para o cluster (usando slurm ou torque, etc.) e visualizando os resultados.
O ponto principal é que, para seus principais trabalhos de computação, você não apenas os executa e interage diretamente com eles. Você (ou seu software front-end) cria um script em lote e envia isso para a fila para execução. Ele será enfileirado e não será executado até que o cluster tenha recursos livres suficientes para executar seu trabalho (que pode ser quase que imediatamente ou, em um cluster muito ocupado, não por dias ou até semanas). Quando o trabalho termina de ser executado, ele geralmente salva um arquivo de log E um ou mais arquivos de resultados que podem ser carregados no programa front-end do desktop para exibição.
O script em lote pode especificar todos os tipos de coisas para permitir que o agendador de lotes saiba o que fazer com ele. quanto espaço em disco ou RAM ele precisa, quantos núcleos de cpus ou cpu e / ou que tipo (por exemplo, requer 1 ou mais nós de GPU) ?, se ele pode ser executado com MPI em vários nós ou só pode ser executado em um nó.
Aqui está uma interessante postagem no blog sobre como configurar um HPC cluster do zero - o foco está na Química Computacional, mas não há razão para que o mesmo tipo de configuração não possa ser usado para outras disciplinas, o cluster descrito é construído no Debian, e o Debian tem um uma enorme biblioteca de software científico.