Bonjour
J'ai une portion de code à paralléliser. Voici un exemple très simple (la boucle pour de la procédure "DoIt") :
Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 const VECTOR_COMPONENTS_COUNT = 150; DATA_ENTRIES_COUNT = 10000; type TVector = array [0 .. VECTOR_COMPONENTS_COUNT - 1] of Real; TData = array [0 .. DATA_ENTRIES_COUNT - 1] of TVector; TDistances = array [0 .. DATA_ENTRIES_COUNT - 1] of Real; function Distance(var Vector1, Vector2: TVector): Real; var I: Integer; begin Result := 0; for I := 0 to VECTOR_COMPONENTS_COUNT - 1 do Result := Result + Sqr(Vector1[I] - Vector2[I]); Result := SqRt(Result) end; procedure DoIt(var Distances: TDistances; var Data: TData; var Vector: TVector); var I: Integer; begin for I := 0 to DATA_ENTRIES_COUNT - 1 do Distances[I] := Distance(Data[I], Vector) end;
Je veux faire ça avec "ProcThreadPool.DoParallel" mais je ne sais pas comment faire. Par exemple, comment faire pour passer les données via les pointeurs ?
Toute aide sera la bienvenue.
Partager