2011-06-19 4 views
0

Je rencontre des difficultés à comprendre l'étape complète et l'étape incomplète dans la programmation gourmande dans la programmation multi-threaded dans cilk.Programmation Greedy dans la programmation multi-threading dans cilk

Voici la présentation PowerPoint pour référence.

Cilk ++ Multi-threaded Programming

Le problème que j'ai bien compris dans de la diapositive n ° 32 - 37.

Quelqu'un peut-il expliquer s'il vous plaît surtout comment est la

Complete step>=P threads ready to run 
incomplete steps < p threads ready 

Merci pour votre temps et aider à

+0

@Alexey Kukanov Désolé, j'ai malheureusement lié la mauvaise diapositive, il devrait être ok maintenant, j'ai mis à jour le lien ... merci –

Répondre

1

Tout d'abord, notez que les "threads" mentionnés dans les diapositives ne sont pas comme les threads OS comme on peut le penser. Leur définition d'un fil est donnée à la diapositive 10: "a maximal sequence of instructions not containing parallel control (spawn, sync, return)". Pour éviter toute confusion, laissez-moi appeler une tâche à la place.

Sur les diapositives 32 à 35, un cercle représente une tâche ("fil") et les bords représentent des dépendances entre les tâches. Et les phrases que vous posez sont en fait des définitions: quand P ou plusieurs tâches sont prêtes à être exécutées (et donc tous les processeurs P peuvent être occupés), la situation est appelée une étape complète, tandis que si moins de P sont prêts, la situation est appelée une étape incomplète. Pour simplifier l'analyse, il est (implicitement) supposé que toutes les tâches contiennent un travail égal (de taille 1). Ensuite, le théorème sur la diapositive 35 fournit une limite supérieure de temps nécessaire pour qu'un planificateur glouton exécute un programme. Comme toute l'exécution est une suite d'étapes complètes et incomplètes, le temps d'exécution est la somme de toutes les étapes. Puisque chaque étape complète effectue exactement P travaux, le nombre d'étapes complètes ne peut pas être supérieur à T1 (travail total) divisé par P. Ensuite, chaque étape incomplète doit exécuter une tâche appartenant au chemin critique (car à chaque étape au moins une étape critique la tâche de chemin doit être prête et les étapes incomplètes exécutent toutes les tâches prêtes); le nombre total d'étapes incomplètes ne dépasse donc pas l'intervalle T_inf (longueur du chemin critique). Ainsi, la somme de T1/P et T_inf donne une limite supérieure au temps d'exécution.

Le reste des diapositives de la section "Programmation" est plutôt simple.

+0

C'est super !!! tout est si bien expliqué. Merci beaucoup pour votre explication détaillée, cela a du sens pour moi maintenant. –