Faculté informatique et communications IC, Section d'informatique, Institut des systèmes informatiques et multimédias ISIM (Laboratoire de systèmes périphériques LSP)

Fault-tolerant dynamic parallel schedules

Gerlach, Sebastian ; Hersch, Roger-David (Dir.)

Thèse sciences Ecole polytechnique fédérale de Lausanne EPFL : 2006 ; no 3471.

Ajouter à la liste personnelle
    Summary
    Dynamic Parallel Schedules (DPS) is a high-level framework for developing parallel applications on distributed memory computers such as clusters of PCs. DPS applications are defined by using directed acyclic flow graphs composed of user-defined operations. These operations derive from basic concepts provided by the framework: split, merge, leaf and stream operations. Whereas a simple parallel application can be expressed with a split-leaf-merge sequence of operations, flow graphs of arbitrary complexity can be created. DPS provides run-time support for dynamically mapping flow graph operations onto the nodes of a cluster. The flow graph based application description used in DPS allows the framework to offer many additional features, most of these transparently to the application developer. In order to maximize performance, DPS applications benefit from automatic overlapping of computations and communications and from implicit pipelining. The framework provides simple primitives for flow control and load balancing. Applications can integrate flow graph parts provided by other applications as parallel components. Since the mapping of DPS applications to processing nodes can be dynamically changed at runtime, DPS provides a basis for developing malleable applications. The DPS framework provides a complete fault tolerance mechanism based on the dynamic mapping capabilities, ensuring continued execution of parallel applications even in the presence of multiple node failures. DPS is provided as an open-source, cross-platform C++ library allowing DPS applications and services to run on heterogeneous clusters.
    Résumé
    Dynamic Parallel Schedules (DPS) est un framework pour le développement d'applications parallèles fournissant un haut niveau d'abstraction. DPS est conçu pour des machines à mémoire distribuée, telles que des clusters de PCs. Une application DPS est décrite au moyen d'un graphe de flux acyclique orienté composé d'opérations définies par le développeur. Ces opérations fonctionnent selon des concepts de base fournis par le framework: split, merge, leaf, et stream. Bien qu'une application simple peut être décrite au moyen d'une séquence split-leaf-merge, des graphes de flux d'une complexité arbitraire peuvent être créés. DPS déploie dynamiquement les opérations du graphe de flux sur les noeuds de calcul du cluster durant l'exécution de l'application. La description d'applications basée sur un graphe de flux utilisée dans DPS permet au framework d'offrir de nombreuses fonctionnalités complémentaires, qui ne requièrent pour la plupart aucune intervention du programmeur. Afin de maximiser la performance, les applications DPS bénéficient d'une superposition automatique des calculs et des communications et d'un pipelining implicite des opérations. Le framework fournit des primitives simples pour le contrôle de flux et l'équilibrage des charges. Des applications peuvent intégrer des parties de graphes de flux exposées par d'autres applications comme des composants parallèles. Dans la mesure où le déploiement d'une application DPS vers les noeuds de calcul peut être modifié dynamiquement en cours d'exécution, DPS fournit une base pour le développement d'applications malléables. Le framework DPS fournit également un mécanisme complet de tolérance aux pannes basé sur ces capacités de déploiement dynamiques, assurant ainsi une exécution en continu d'une application parallèle même en présence de pannes multiples. DPS est fourni sous forme d'une librairie C++ multi-plateformes permettant aux applications et aux services DPS de fonctionner sur des clusters hétérogènes. DPS est distribué sous la licence libre GPL.