37 lines
872 B
ObjectPascal
37 lines
872 B
ObjectPascal
|
|
uses Arrays;
|
|||
|
|
|
|||
|
|
procedure ParallelMult(a,b,c: array [,] of real; n: integer);
|
|||
|
|
begin
|
|||
|
|
{$omp parallel for }
|
|||
|
|
for var i:=0 to n-1 do
|
|||
|
|
for var j:=0 to n-1 do
|
|||
|
|
begin
|
|||
|
|
c[i,j]:=0;
|
|||
|
|
for var l:=0 to n-1 do
|
|||
|
|
c[i,j]:=c[i,j]+a[i,l]*b[l,j];
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure Mult(a,b,c: array [,] of real; n: integer);
|
|||
|
|
begin
|
|||
|
|
for var i:=0 to n-1 do
|
|||
|
|
for var j:=0 to n-1 do
|
|||
|
|
begin
|
|||
|
|
c[i,j]:=0;
|
|||
|
|
for var l:=0 to n-1 do
|
|||
|
|
c[i,j]:=c[i,j]+a[i,l]*b[l,j];
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
const n = 400;
|
|||
|
|
|
|||
|
|
begin
|
|||
|
|
var a := Arrays.CreateRandomRealMatrix(n,n);
|
|||
|
|
var b := Arrays.CreateRandomRealMatrix(n,n);
|
|||
|
|
var c := new real[n,n];
|
|||
|
|
ParallelMult(a,b,c,n);
|
|||
|
|
writeln('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ',Milliseconds,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
|||
|
|
var d := Milliseconds;
|
|||
|
|
Mult(a,b,c,n);
|
|||
|
|
writeln('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ',Milliseconds-d,' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
|||
|
|
end.
|