¡Me encanta esta pregunta! Probablemente porque pasé un año de mi vida tratando de encontrar una respuesta para ello como parte de mi tesis de maestría.
Sí, el hardware para supercomputadoras para ejecutar aplicaciones HPC se ha mejorado significativamente en los últimos años. Y también los centros de datos en la nube pueden y se están beneficiando de un hardware tan poderoso. Sin embargo, Cloud no es la plataforma más eficiente para ejecutar aplicaciones HPC, principalmente porque:
Gastos generales de virtualización: la virtualización desempeña un papel clave en la nube ayudando a la nube a tener una elasticidad rápida, agrupación de recursos, flexibilidad y eficiencia para las aplicaciones empresariales. Sin embargo, la virtualización y, en particular, el hipervisor agrega una sobrecarga no deseada al agregar una capa de software y evitar que las aplicaciones tengan acceso directo a los recursos de hardware. Esta sobrecarga de virtualización no es la misma para todos los tipos de hardware. Por ejemplo, debido al soporte de hardware, la sobrecarga de virtualización para procesadores es significativamente menor que la sobrecarga de virtualización de red. Para algunos tipos de hardware, como las GPU, a menudo es más eficiente pasar por las GPU que tener GPU virtuales. En otras palabras, cuando usa una GPU en la nube, es probable que se le dé un hardware de GPU con acceso directo. El resultado no es barato.
- Computación en la nube: ¿está 100% abierto o hay margen para agregar ganchos y capturas patentados que permitan a alguien dominar este mercado como lo hizo Cisco con enrutadores y puentes?
- ¿Por qué podría uno decidir contra la computación en la nube?
- Cómo hacer pruebas de rendimiento de una aplicación alojada en la nube
- ¿Cuál es el concepto de almacenamiento en la nube?
- ¿Qué cambios necesitamos hacer en el código para ingresar al servidor en la nube?
Multicliente: esto es lo que hace que Clouds sea rentable para los proveedores de Cloud. Significa que se puede compartir un mismo hardware entre varios clientes (inquilinos). El grado de tenencia múltiple se refiere al número de inquilinos que comparten un mismo recurso en la nube. Al aumentar el grado de multitenencia, los proveedores de la nube pueden sobreaprovisionar los recursos a los usuarios. El exceso de aprovisionamiento permite a los proveedores de la nube maximizar los beneficios, aunque con el riesgo de reducir la QoS. Pero esa es otra historia. Lo importante para nosotros es que a medida que aumenta el grado de tenencia múltiple, las aplicaciones deben competir por los recursos. Esto no es un gran problema en las aplicaciones comerciales. Pero las aplicaciones de HPC suelen ser intensivas en CPU y memoria. No quieren pelear por recursos con otro inquilino. Además, el grado de tenencia múltiple fluctúa con el tiempo. Esto causa otro problema porque no podrá predecir cuánto tiempo llevará ejecutar una aplicación HPC específica en la nube. Hice un pequeño experimento para ilustrar esta incertidumbre en el rendimiento de la aplicación HPC en la nube. Ejecuté un punto de referencia de multiplicación matricial muy simple en paralelo en Amazon AWS usando MPI en diferentes números de núcleos virtuales y en diferentes momentos del día durante varios días:
¿ver? Es imposible saber cuánto tiempo llevará la multiplicación de su matriz en la Nube. Ni siquiera es seguro decir que aumentar el número de núcleos definitivamente disminuirá el tiempo de ejecución. Aunque puedes decir que probablemente sí, pero depende … hmm … ¿qué hora es?
3. Ancho de banda de red y latencia: las interconexiones de red y los recursos de E / S en la nube se comparten entre varios inquilinos. Por lo tanto, el ancho de banda en la mayoría de los casos es mucho menor de lo esperado. Nuevamente ilustré que usando otro pequeño experimento ejecutando puntos de referencia MPI punto a punto en una interconexión 10Gig Amazon EC2. A continuación se muestra el resultado e indica que el entorno de múltiples inquilinos de la nube reduce el ancho de banda. Además, la latencia de la red en la nube no es estable. Por lo tanto, veremos una degradación del rendimiento para las aplicaciones de HPC en la nube, en particular las que requieren muchos datos.
En pocas palabras, debido a los desafíos antes mencionados, ejecutar las aplicaciones HPC en la nube es mucho más difícil que ejecutarlas en un centro de datos de supercomputación dedicado. Hay investigaciones en curso para abordar cada uno de estos desafíos, por ejemplo, haciendo que las aplicaciones HPC sean conscientes de la nube o reduciendo la sobrecarga de virtualización, o mi tesis que usaba Redes definidas por software para disminuir la latencia de la red. Pero todos estos esfuerzos mejoran el rendimiento de solo un subconjunto de aplicaciones HPC con ciertas características en la nube.