Trabajando en lo que a menudo se podría llamar proyectos de "datos medios", he podido paralelizar mi código (principalmente para modelar y predecir en Python) en un solo sistema en cualquier lugar de 4 a 32 núcleos. Ahora estoy buscando escalar a los clústeres en EC2 (probablemente con StarCluster / IPython, pero también abierto a otras sugerencias), y me ha intrigado cómo reconciliar el trabajo de distribución entre núcleos en una instancia frente a instancias en un clúster.
¿Es incluso práctico paralelizar entre instancias y entre núcleos en cada instancia? Si es así, ¿alguien puede dar un resumen rápido de las ventajas y desventajas de ejecutar muchas instancias con pocos núcleos cada una versus algunas instancias con muchos núcleos? ¿Existe una regla general para elegir la proporción correcta de instancias a núcleos por instancia?
El ancho de banda y la RAM son preocupaciones no triviales en mis proyectos, pero es fácil detectar cuándo son los cuellos de botella y el reajuste. Es mucho más difícil, me imagino, comparar la combinación correcta de núcleos con instancias sin pruebas repetidas, y mis proyectos varían demasiado para que una sola prueba se aplique a todas las circunstancias. Gracias de antemano, y si no pude buscar en Google correctamente, ¡no dudes en señalarme la respuesta correcta en otro lugar!