3 research outputs found

    Minimizing I/Os in Out-of-Core Task Tree Scheduling

    Get PDF
    Scientific applications are usually described as directed acyclic graphs, where nodes represent tasks and edges represent dependencies between tasks. For some applications, such as the multifrontal method of sparse matrix factorization, this graph is a tree: each task produces a single output data, used by a single task (its parent in the tree). We focus on the case when the data manipulated by tasks have a large size, which is especially the case in the multifrontal method. To process a task, both its inputs and its output must fit in the main memory. Moreover, output results of tasks have to be stored between their production and their use by the parent task. It may therefore happen, during an execution, that not all data fit together in memory. In particular, this is the case if the total available memory is smaller than the minimum memory required to process the whole tree. In such a case, some data have to be temporarily written to disk and read afterwards. These Input/Output (I/O) operations are very expensive; hence, the need to minimize them. We revisit this open problem in this paper. Specifically, our goal is to minimize the total volume of I/O while processing a given task tree. We first formalize and generalize known results, then prove that existing solutions can be arbitrarily worse than optimal. Finally, we propose a novel heuristic algorithm, based on the optimal tree traversal for memory minimization. We demonstrate good performance of this new heuristic through simulations on both synthetic trees and realistic trees built from actual sparse matrices.Les applications de calcul scientifique sont souvent décrites comme des graphes de tâchesdirigés et acycliques, où les noeuds représentent les tâches et les arêtes représentent les dépendancesentre tâches. Pour certaines applications, comme les méthodes multifrontales de factorisation de matricescreuses, le graphe correspondant est un arbre: chaque tâche produit un unique fichier de donnéesen sortie qui est utilisé par une unique tâche (son père dans l’arbre).On s’intéresse ici dans le cas où les fichiers de données manipulés par les tâches sont de grandetaille, ce qui est en particulier le cas dans les méthodes multifrontales. Pour traiter une tâche, sesfichiers d’entrée et de sortie doivent se trouver dans la mémoire principale. De plus, les fichiers desortie doivent être stockés entre leur création et leur utilisation par la tâche père. Il peut donc arriverque, durant une exécution, la mémoire disponible soit inférieure à la mémoire minimum requise pourtraiter l’arbre complet.Dans ce cas, certaines données doivent être temporairement transférées sur undisque pour être lues ultérieurement. Ces opérations d’Entrées/Sorties (E/S ou I/O en anglais) sonttrès coûteuses, d’où le besoin de les minimiser.Nous revisitons dans cet article ce problème ouvert. Plus précisément, notre objectif est de minimiserle volume total d’Entrées/Sorties effectuées en traitant un arbre de tâche donné. Nous commençonspar formaliser et généraliser des résultats connus, puis nous prouvons que les solutions existantespeuvent être arbitrairement loin de l’optimal. Finalement, nous proposons une nouvelle heuristique,basée sur le parcours d’arbre minimisant l’utilisation mémoire. Nous établissons les bonnesperformances de cette heuristique à travers des simulations sur des arbres synthétiques ainsi que desarbres réalistes construits à partir de matrices creuses réelles

    Minimizing I/Os in Out-of-Core Task Tree Scheduling

    No full text
    Scientific applications are usually described as directed acyclic graphs, where nodes represent tasks and edges represent dependencies between tasks. For some applications, such as the multifrontal method of sparse matrix factorization, this graph is a tree: each task produces a single output data, used by a single task (its parent in the tree). We focus on the case when the data manipulated by tasks have a large size, which is especially the case in the multifrontal method. To process a task, both its inputs and its output must fit in the main memory. Moreover, output results of tasks have to be stored between their production and their use by the parent task. It may therefore happen, during an execution, that not all data fit together in memory. In particular, this is the case if the total available memory is smaller than the minimum memory required to process the whole tree. In such a case, some data have to be temporarily written to disk and read afterwards. These Input/Output (I/O) operations are very expensive; hence, the need to minimize them. We revisit this open problem in this paper. Specifically, our goal is to minimize the total volume of I/O while processing a given task tree. We first formalize and generalize known results, then prove that existing solutions can be arbitrarily worse than optimal. Finally, we propose a novel heuristic algorithm, based on the optimal tree traversal for memory minimization. We demonstrate good performance of this new heuristic through simulations on both synthetic trees and realistic trees built from actual sparse matrices.Les applications de calcul scientifique sont souvent décrites comme des graphes de tâchesdirigés et acycliques, où les noeuds représentent les tâches et les arêtes représentent les dépendancesentre tâches. Pour certaines applications, comme les méthodes multifrontales de factorisation de matricescreuses, le graphe correspondant est un arbre: chaque tâche produit un unique fichier de donnéesen sortie qui est utilisé par une unique tâche (son père dans l’arbre).On s’intéresse ici dans le cas où les fichiers de données manipulés par les tâches sont de grandetaille, ce qui est en particulier le cas dans les méthodes multifrontales. Pour traiter une tâche, sesfichiers d’entrée et de sortie doivent se trouver dans la mémoire principale. De plus, les fichiers desortie doivent être stockés entre leur création et leur utilisation par la tâche père. Il peut donc arriverque, durant une exécution, la mémoire disponible soit inférieure à la mémoire minimum requise pourtraiter l’arbre complet.Dans ce cas, certaines données doivent être temporairement transférées sur undisque pour être lues ultérieurement. Ces opérations d’Entrées/Sorties (E/S ou I/O en anglais) sonttrès coûteuses, d’où le besoin de les minimiser.Nous revisitons dans cet article ce problème ouvert. Plus précisément, notre objectif est de minimiserle volume total d’Entrées/Sorties effectuées en traitant un arbre de tâche donné. Nous commençonspar formaliser et généraliser des résultats connus, puis nous prouvons que les solutions existantespeuvent être arbitrairement loin de l’optimal. Finalement, nous proposons une nouvelle heuristique,basée sur le parcours d’arbre minimisant l’utilisation mémoire. Nous établissons les bonnesperformances de cette heuristique à travers des simulations sur des arbres synthétiques ainsi que desarbres réalistes construits à partir de matrices creuses réelles

    Minimizing I/Os in Out-of-Core Task Tree Scheduling

    No full text
    International audience Scientific applications are usually described using directed acyclic graphs, where nodes represent tasks and edges represent dependencies between tasks. For some applications, this graph is a tree: each task produces a single result used solely by its parent. The temporary results of each task have to be stored between their production and their use. We focus on the case when the data manipulated are very large. Then, during an execution, all data may not fit together in memory. In such a case, some data have to be temporarily written to disk and evicted from memory. These data are later read from disk when they are needed for computation. These Input/Output operations are very expensive; hence, our goal is to minimize their total volume. The order in which the tasks are processed considerably influences the amount of such Input/Output operations. Finding the schedule which minimizes this amount is an open problem that we revisit in this paper. We first formalize and generalize known results, and prove that existing solutions can be arbitrarily worse than the optimal. We then present an Integer Linear Program to solve it optimally. Finally, we propose a novel heuristic algorithm. We demonstrate its good performance through simulations on both synthetic and realistic trees built from actual scientific applications. </jats:p
    corecore