Parallel scheduling of DAGs under memory constraints
Ordonnancement parallèle de DAGs sous contraintes mémoire
Résumé
Scientific workflows are frequently modeled as Directed Acyclic Graphs (DAG) of
tasks, which represent computational modules and their dependencies, in the form of data
produced by a task and used by another one. This formulation allows the use of runtime sys-
tems which dynamically allocate tasks onto the resources of increasingly complex and hetero-
geneous computing platforms. However, for some workflows, such a dynamic schedule may
run out of memory by exposing too much parallelism. This paper focuses on the problem of
transforming such a DAG to prevent memory shortage, and concentrates on shared memory
platforms. We first propose a simple model of DAG which is expressive enough to emulate com-
plex memory behaviors. We then exhibit a polynomial-time algorithm that computes the max-
imum peak memory of a DAG, that is, the maximum memory needed by any parallel schedule.
We consider the problem of reducing this maximum peak memory to make it smaller than a
given bound by adding new fictitious edges, while trying to minimize the critical path of the
graph. After proving this problem NP-complete, we provide an ILP solution as well as several
heuristic strategies that are thoroughly compared by simulation on synthetic DAGs modeling
actual computational workflows. We show that on most instances, we are able to decrease the
maximum peak memory at the cost of a small increase in the critical path, thus with little im-
pact on quality of the final parallel schedule.
Les applications de calcul scientifique sont souvent modélisées par
des graphes de tâches orientés acycliques (DAG), qui représentent les tâches
de calcul et leurs dépendances, sous la forme de données produites par une
tâche et utilisées par une autre. Cette formulation permet l’utilisation d’API
qui allouent dynamiquement les tâches sur les ressources de plateformes de
calcul hétérogènes de plus en plus complexes. Cependant, pour certaines ap-
plications, un tel ordonnancement dynamique peut manquer de mémoire en
exploitant trop de parallélisme. Cet article porte sur le problème consistant à
transformer un tel DAG pour empêcher toute pénurie de mémoire, en se con-
centrant sur les plateformes à mémoire partagée. On propose tout d’abord un
modèle simple de graphe qui est assez expressif pour émuler des comporte-
ments mémoires complexes. On expose ensuite un algorithme polynomial qui
calcule le pic mémoire maximum d’un DAG, qui représente la mémoire maxi-
male requise par tout ordonnancement parallèle. On considère ensuite le prob-
lème consistant à réduire ce pic mémoire maximal pour qu’il devienne plus pe-
tit qu’une borne donnée en rajoutant des arêtes fictives, tout en essayant de
minimiser le chemin critique du graphe. Après avoir prouvé ce problème NP-
complet, on fournit un programme linéaire en nombres entiers le résolvant,
ainsi que plusieurs stratégies heuristiques qui sont minitieusement comparées-
sur des graphes synthétiques modélisant des applications de calcul réelles. On
montre que sur la plupart des instances, on arrive à diminuer le pic mémoire
maximal, au prix d’une légère augmentation du chemin critique, et donc avec
peu d’impact sur la qualité de l’ordonnancement parallèle final.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...