DLB Library (Dynamic Load Balancing)

Biblioteca dedicada a acelerar aplicaciones híbridas paralelas

Institución:

Institution

Grupo de investigación:

.

Investigador/es:

Marta Garcia Gasulla, Víctor López Herrero

DLB Library (Dynamic Load Balancing)

Web:

https://pm.bsc.es/dlb

Descripción:

La biblioteca DLB mejorará el balanceo de carga del nivel externo de paralelismo (p. ej. MPI) redistribuyendo los recursos computacionales en el nivel interno de paralelismo (p. ej. OpenMP). Este reajuste de recursos se realizará de forma dinámica en tiempo de ejecución.

Este dinamismo permite a DLB reaccionar a diferentes fuentes de desequilibrio: algoritmo, datos, arquitectura hardware, variabilidad y disponibilidad de recursos, entre otras.

¿Cómo funciona DLB?
DLB utilizará la maleabilidad del nivel interno de paralelismo para cambiar el número de hilos de los diferentes procesos que se ejecutan en el mismo nodo. Existen diferentes algoritmos de balanceo de carga implementados dentro de DLB. Todos se basan en esta idea principal, pero apuntan a diferentes tipos de aplicaciones o situaciones.

¿Quién puede usar DLB?
Cualquier aplicación escrita en C, C++ o Fortran en cualquiera de los modelos de programación paralela soportados. Los modelos de programación paralela soportados actualmente son los siguientes:

MPI+OpenMP
MPI+OmpSs
OmpSs (Múltiples aplicaciones)
Estamos abiertos a agregar soporte para más modelos de programación tanto en el nivel interno como externo de paralelismo.

Requisitos técnicos:
Memoria compartida entre procesos: DLB necesita un nodo de memoria compartida y más de un proceso ejecutándose en el mismo nodo.
Mecanismo de precarga: El sistema debe proporcionar un mecanismo de precarga para interceptar llamadas MPI. (No es necesario si se usa el entorno de ejecución Nanos++ y no necesitamos interceptar llamadas MPI)
Regiones paralelas en OpenMP: Si se usa el modelo OpenMP, DLB necesita que se abran y cierren distintas regiones paralelas para cambiar la cantidad de subprocesos (es decir, el estándar OpenMP solo permite cambiar la cantidad de subprocesos fuera de una región paralela).
Modo de espera no ocupada para llamadas MPI: Para usar la CPU que está esperando en la comunicación, DLB necesita que las llamadas MPI estén ocupadas en espera. Las diferentes implementaciones de MPI suelen ofrecer una forma de obtener este comportamiento pero no está habilitado por defecto. DLB ofrece un modo en el que no se utilizará la CPU donde se está ejecutando la llamada MPI, pero se penaliza el rendimiento obtenido.

Problema:

N/A

Solución:

N/A

Áreas de aplicación:

N/A

Novedad:

N/A

Protección:

LGPL License (Version 3.0)

Mercado objetivo:

N/A

Keywords:

Modelos de programación

TRL: N/A

CRL: N/A

BRL: N/A

IPRL: N/A

TmRL: N/A

FRL: N/A

Más información

Si quieres saber más sobre este proyecto no dudes en contactarnos

Contáctanos