Bonjour à tous,
J'ai un algo qui explore et modifie un tableau NxN (N de l'ordre de 1000 à 10000) de proche en proche à partir d'une case de départ quelconque. pseudocode ci-dessous :
Pour accélérer le traitement, Je veux exécuter 4 explorations du même tableau en parrallèle. Comme mentionné dans le pseudo-code, chaque exploration doit pouvoir lire et écrire dans le tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 L = 1 ; % une ligne de départ quelconque C = 1 ; % une colonne de départ quelconque while 1 if (la case courante n'a plus de voisin à traiter) break end cherche tous les voisins non traités de (L,C) modifie éventuellement ces voisins choisit un des voisins (L1, C1) pour continuer l'algo L = L1 ; C = C1 ; end
Le code auquel je pense ressemblerait à ça :
Matlab refuse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 parfor depart = 1:4 [L, C] = case_de_depart (depart) ; while 1 l'algo ci-dessus end end
je comprend un peu pourquoi (conflits entre lecture et écriture, etc.) en C, il faudrait utiliser des objets de synchronisation pour bloquer les parties du tableau en cours de lecture, par exemple.
j'ai déja prouvé que mon algo est adapté à ce type de parralélisation. La question n'est donc pas algorithmique, mais purement Matlabesque.
d'ou ma question : je peux faire une parrallélisation de ce genre avec Matlab (accessoirement, comment) ou bien j'oublie ?
Partager