# Multihilo simultáneo y heterogéneo

El multiproceso simultáneo y heterogéneo (SHMT) es un marco de software que aprovecha sistemas informáticos heterogéneos que contienen una combinación de unidades centrales de procesamiento (CPU), unidades de procesamiento de gráficos (GPU) y hardware de aprendizaje automático para fines especiales, por ejemplo, unidades de procesamiento tensorial ( TPU).
Cada componente procesa la información de manera diferente. A menudo, los datos tienen que moverse entre procesadores, lo que puede crear cuellos de botella, con un procesador muriendo de hambre mientras espera que otro termine.
Funcionamiento:
El SHMT funciona dividiendo las tareas en subtareas más pequeñas y asignándolas a los procesadores más adecuados para su ejecución. Por ejemplo, las tareas computacionalmente intensivas se pueden asignar a la GPU, mientras que las tareas de entrada/salida se pueden asignar a la CPU. Esto permite que cada procesador se use de manera más eficiente y que el sistema en general funcione más rápido.

## Arquitectura

El sistema define procesadores virtuales y operaciones virtuales (VOP). Los VOP se descomponen en una o más operaciones de alto nivel (HLOP). Luego distribuye las operaciones entre los procesadores. Luego, el sistema de ejecución asigna dinámicamente los procesadores virtuales a los procesadores físicos, evaluando la disponibilidad de recursos para mantener todos los procesadores ocupados. El programador emplea una política de robo de trabajo (QAWS) liviana y consciente de la calidad.
Los tiempos de ejecución convencionales asignan un procesador (conjunto) a cada subtarea, dejando otros tipos de procesadores inactivos. En otras palabras, las CPU se ejecutan (posiblemente en paralelo) y luego, cuando se completa esa subtarea, la siguiente subtarea se entrega a las GPU. Cuando terminan, la siguiente subtarea se entrega a los TPU.
Agregar canalización de software permite que la segunda subtarea se ejecute utilizando resultados parciales de la primera subtarea, lo que mejora la utilización de recursos.
SHMT va un paso más allá, identificando subtareas que pueden ejecutarse independientemente de otras en el tipo de procesador apropiado, lo que permite un paralelismo aún mejor. Algunas subtareas se pueden realizar en varios tipos de procesador. SHMT puede dividir una única subtarea entre dichos tipos de procesadores. Por tanto, el avance fundamental es mantener más procesadores funcionando simultáneamente, reduciendo el tiempo y los costos de energía.
Estado actual:
El SHMT es una tecnología relativamente nueva que aún se encuentra en desarrollo. Sin embargo, ya se han realizado investigaciones que demuestran su potencial para mejorar significativamente el rendimiento de los sistemas informáticos heterogéneos.
Beneficios: El SHMT ofrece varias ventajas sobre los enfoques tradicionales de multihilo:
* Mayor rendimiento: El SHMT puede mejorar significativamente el rendimiento de las aplicaciones que requieren una combinación de diferentes tipos de procesamiento.
* Mejor eficiencia energética: El SHMT puede reducir el consumo de energía al asignar las tareas a los procesadores más eficientes para su ejecución.
* Mayor escalabilidad: El SHMT se puede escalar fácilmente a sistemas con un gran número de procesadores diferentes.

## Puntos de referencia

Los investigadores probaron el concepto utilizando una configuración típica de teléfono inteligente modificada para que pareciera el servidor de un centro de datos.
El hardware era el módulo Jetson Nano de Nvidia que contenía un procesador (CPU) ARM Cortex-A57 de cuatro núcleos y 128 núcleos de GPU con arquitectura Maxwell . Se conectó un Google Edge TPU a través de su ranura M.2 Key E. Los procesadores se comunicaban a través de una interfaz PCI Express (PCIe) integrada. Los datos compartidos se alojaron en un LPDDR4 de 4 GB y 64 bits. El Edge TPU agrega una memoria de dispositivo de 8 MB. Ubuntu Linux 18.04 fue el sistema operativo.
En comparación con un sistema convencional, el rendimiento aumentó 1,95 veces, mientras que el consumo de energía se redujo en un 51%, en una variedad de puntos de referencia, incluidos Black–Scholes, DCT8X8, DWT, FFT, Histogram, Hotspot, Laplacian, MF, Sobel, SRAD, y GMEAN.