47 lines
1.1 KiB
ObjectPascal
47 lines
1.1 KiB
ObjectPascal
// äåìîíñòðàöèÿ ðàáîòû ïàðàëëåëüíîãî for
|
|
//çàïîëíåíèå ìàññèâà
|
|
procedure FillRandArr(A: array of real);
|
|
begin
|
|
Randomize;
|
|
for var i := 0 to A.Length - 1 do
|
|
a[i] := Random(1000);
|
|
end;
|
|
// âûâîä ìàññèâà
|
|
procedure printArr(A: array of real);
|
|
begin
|
|
for var i := 0 to A.Length - 1 do
|
|
writeln(a[i]);
|
|
end;
|
|
// Ïîñëåäîâàòåëüíîå âû÷èñëåíèå êâàäðàòîâ ñèíóñîâ
|
|
procedure SqrSinArr(A: array of real; var C: array of real);
|
|
begin
|
|
|
|
for var i := 0 to A.Length - 1 do
|
|
C[i] := sqr(sin(A[i]));
|
|
end;
|
|
// Ïàðàëëåëüíîå âû÷èñëåíèå êâàäðàòîâ ñèíóñîâ
|
|
procedure SqrSinArrParallel(A: array of real; var C: array of real);
|
|
begin
|
|
|
|
{$omp parallel for}
|
|
for var i := 0 to A.Length - 1 do
|
|
C[i] := sqr(sin(A[i]));
|
|
end;
|
|
|
|
begin
|
|
var A: array of real;
|
|
var C: array of real;
|
|
SetLength(A, 10000000);
|
|
SetLength(C, A.Length);
|
|
FillRandArr(A);
|
|
|
|
var m0 := Milliseconds;
|
|
SqrSinArrParallel(A, C);
|
|
|
|
writeln('Ïàðàëëåëüíîå âûïîëíåíèå: ', Milliseconds - m0, 'ms');
|
|
|
|
m0 := Milliseconds;
|
|
SqrSinArr(A, C);
|
|
writeln('Ïîñëåäîâàòåëüíîå âûïîëíåíèå: ', Milliseconds - m0, 'ms');
|
|
|
|
end. |