Trabalhando no que geralmente pode ser chamado de projetos de "dados médios", consegui paralelizar meu código (principalmente para modelagem e previsão em Python) em um único sistema, em qualquer lugar de 4 a 32 núcleos. Agora, estou analisando o dimensionamento de clusters no EC2 (provavelmente com StarCluster / IPython, mas aberto a outras sugestões também), e fiquei perplexo com a maneira de reconciliar o trabalho de distribuição entre núcleos em uma instância versus instâncias em um cluster.
É prático paralelizar as instâncias e os núcleos de cada instância? Em caso afirmativo, alguém pode dar um rápido resumo dos prós + contras da execução de muitas instâncias com poucos núcleos cada versus algumas instâncias com muitos núcleos? Existe uma regra prática para escolher a proporção correta de instâncias para núcleos por instância?
Largura de banda e RAM são preocupações não triviais em meus projetos, mas é fácil identificar quando esses são os gargalos e o reajuste. Imagino que seja muito mais difícil comparar a combinação certa de núcleos com instâncias sem testes repetidos, e meus projetos variam muito para que um único teste se aplique a todas as circunstâncias. Agradecemos antecipadamente e, se não consegui pesquisar corretamente no Google, sinta-se à vontade para me indicar a resposta certa em outro lugar!