Azure Batch

Completado

La informática de alto rendimiento (HPC) es la práctica de usar una potencia informática significativa que proporciona un alto rendimiento en comparación con lo que se puede obtener al usar un portátil o una estación de trabajo. Resuelve problemas importantes que se deben ejecutar simultáneamente en varios núcleos.

Para ello, se divide un problema en unidades computables más pequeñas, que se distribuyen en un sistema distribuido. Se comunica continuamente entre ellas para llegar a la solución final de forma más rápida que ejecutar el mismo cálculo en menos núcleos.

Existen varias opciones de procesamiento por lotes y HPC disponibles en Azure, Si acude a un experto en Azure, le aconsejará que se centre en tres opciones: Azure Batch, Azure CycleCloud y Microsoft HPC Pack. Las siguientes unidades de este módulo se centran en estas opciones. Es importante tener en cuenta que estas opciones no son mutuamente excluyentes, Se basan unas en otras y se podrían equiparar con las distintas herramientas que hay en una caja de herramientas.

Aquí, obtendrá información sobre lo que es la informática de alto rendimiento en general y sobre HPC de Azure.

¿Qué es HPC en Azure?

Existen muchos sectores distintos que necesitan recursos de proceso eficaces para realizar tareas especializadas. por ejemplo:

  • En ciencia genética, la secuenciación genética.
  • En las prospecciones de gas y petróleo, las simulaciones de yacimientos.
  • En finanzas, el modelado de mercados.
  • En ingeniería, el modelado de sistemas físicos.
  • En meteorología, el modelado meteorológico.

Estas tareas necesitan procesadores capaces de procesar instrucciones con rapidez. Las aplicaciones de HPC en Azure se pueden escalar a miles de núcleos de proceso, ampliar el proceso local o ejecutarse como una solución de nube totalmente nativa. Esta solución HPC que incluye el nodo principal, los nodos de ejecución y los nodos de almacenamiento, se ejecuta en Azure sin infraestructura de hardware que mantener. Esta solución se basa en los servicios administrados de Azure: Virtual Machine Scale Sets, Virtual Network y Cuentas de almacenamiento.

Estos servicios se ejecutan en un entorno de alta disponibilidad, revisado y compatible, lo que le permite centrarse en la solución, en lugar de en el entorno en que se ejecutan. Otra ventaja de un sistema HPC de Azure es que se pueden agregar recursos de forma dinámica a medida que sean necesarios, así como quitarlos cuando la demanda sea menor.

Diagram of the High Performance Computing.

¿Qué es la informática en paralelo en los sistemas distribuidos?

La informática en paralelo es el uso simultáneo de varios recursos de proceso para resolver un problema computacional:

  • Un problema se divide en elementos discretos que se pueden resolver de manera simultánea.
  • Y cada uno de estos elemento se desglosa en una serie de instrucciones.
  • Las instrucciones de cada elemento se ejecutan de manera simultánea en diferentes procesadores.
  • Se utiliza un mecanismo general de control y coordinación.

Diagram of the Parallel Computing on Distributed Systems.

Diferentes fases del paralelismo

Hay diferentes maneras de clasificar equipos paralelos y la taxonomía de Flynn es una de las formas más comunes de hacerlo. Distingue arquitecturas de equipos de varios procesadores según cómo se pueden clasificar en función de las dos dimensiones independientes de flujo de instrucciones y flujo de datos. Cada una de estas dimensiones solo puede tener uno de dos estados posibles: Única o Múltiple.

En este diagrama se muestra un servicio hospedado o una aplicación cliente que interactúa con Batch para cargar entradas, crear trabajos, supervisar tareas y descargar salidas.

Diagram of the stages of parallelism.

Se pueden examinar las cuatro clasificaciones diferentes con más detalle.

SISD SIMD MISD MIMD
- Equipo serie (no paralelo).
- Instrucción única: La CPU actúa en un solo flujo de instrucciones durante un ciclo de reloj
- Datos únicos: solo se usa un flujo de datos como entrada durante un ciclo de reloj.
- Tipo de equipo más antiguo.
Ejemplos:
1. Sistemas centrales de primera generación
2. Miniordenadores, Estaciones de trabajo
3. Equipos de núcleo de procesador único










- Equipo paralelo
- Instrucción única: todas las unidades de procesamiento ejecutan la misma instrucción en cualquier ciclo de reloj determinado.
- Datos múltiples: cada unidad de procesamiento puede funcionar en un elemento de datos diferente.
- Más adecuado para problemas especializados caracterizados por un alto grado de regularidad, como el procesamiento de gráficos o imágenes.
- La mayoría de los equipos modernos, con unidades de procesamiento gráfico (GPU) usan instrucciones SIMD y unidades de ejecución.
Ejemplos:
1. Matrices de procesador: Thinking Machines CM-2, MasPar MP-1 & MP-2, ILLIAC IV
2. Canalizaciones vectoriales: IBM 9000, Cray X-MP, Y-MP & C90, Fujitsu VP, NEC SX-2, Hitachi S820, ETA10

- Equipo paralelo
- Instrucciones múltiples: cada unidad de procesamiento funciona en los datos de forma independiente mediante secuencias de instrucciones independientes.
- Datos únicos: un único flujo de datos se introduce en varias unidades de procesamiento.
- Han existido pocos ejemplos reales (o ninguno) de esta clase de equipo paralelo.
Ejemplos:
1. Varios filtros de frecuencia que funcionan en una sola secuencia de señal
2. Varios algoritmos de criptografía que intentan descifrar un único mensaje codificado







- Equipo paralelo
- Instrucciones múltiples: cada procesador puede ejecutar un flujo de instrucciones diferente.
- Datos múltiples: cada procesador puede trabajar con un flujo de datos diferente.
- Actualmente, el tipo de equipo paralelo más común (la mayoría de los superequipos modernos entran en esta categoría).
Ejemplos:
1. Superequipos más actuales
2. Clústeres de equipos paralelos en red y "cuadrículas"
3. Equipos SMP multiprocesador
4. Equipos de varios núcleos







Diagram of the multiple instruction multiple data.

Diferentes tipos de trabajos de HPC: paralelo masivo frente a estrechamente acoplado

Los trabajos paralelos tienen problemas computacionales divididos en tareas pequeñas, sencillas e independientes que se pueden ejecutar al mismo tiempo, a menudo con poca o ninguna comunicación entre ellas.

  • Los casos de uso comunes para trabajos paralelos incluyen los de simulaciones de riesgo, modelado molecular, búsqueda contextual y simulaciones logísticas.

    Los trabajos estrechamente acoplados tienen una gran carga de trabajo compartida que se divide en tareas más pequeñas que se comunican de manera continua. Los distintos nodos del clúster se comunican entre sí a medida que realizan su procesamiento.

  • Entre los casos de uso comunes para los trabajos estrechamente acoplados se incluyen los siguientes:

    • dinámica de fluidos computacional
    • modelado de previsiones meteorológicas
    • simulaciones de materiales
    • emulaciones de colisión de automóviles
    • simulaciones geoespaciales
    • administración del tráfico

Qué es la interfaz de paso de mensajes (MPI)

  • MPI es un sistema que pretende proporcionar un estándar portátil y eficaz para el paso de mensajes. Es de alto rendimiento, portátil y escalable, y se ha desarrollado para trabajar en redes de diferentes equipos paralelos.

  • MPI ha contribuido en los sectores de las redes y la informática paralela a escala industrial y global a mejorar el trabajo de aplicaciones informáticas paralelas a gran escala.

Diagram of the message passing interface.

Ventajas de Microsoft MPI:

  • Facilidad de portabilidad del código existente que use MPICH.
  • Seguridad basada en Active Directory Domain Services.
  • Alto rendimiento en el sistema operativo Windows.
  • Compatibilidad binaria entre diferentes tipos de opciones de interconectividad.

Comprobación de conocimientos

1.

¿Cuál es la ventaja de usar Azure Batch, en lugar de aprovisionar el número necesario de máquinas virtuales para la tarea existente?

2.

Tras analizar un problema, se ha dado cuenta de que existen 1000 subtareas individuales. Para solucionar este problema, su administrador acepta dedicar presupuesto a 20 nodos de máquina virtual para que se ejecuten en Azure Batch. Si lo comparamos con la ejecución en un solo nodo de máquina virtual del mismo tamaño, ¿con qué mayor rapidez aproximadamente espera solucionar el problema?