Browse Source

LA Perf: replace parallel copy loops with native copy

pull/112/head
Christoph Ruegg 13 years ago
parent
commit
2f0aabbe28
  1. 8
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs
  2. 10
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs
  3. 10
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Double.cs
  4. 10
      src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Single.cs

8
src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex.cs

@ -2062,13 +2062,7 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra
for (var j = 0; j < columnsB; j++)
{
var jm = j*rowsA;
CommonParallel.For(0, rowsA, (u, v) =>
{
for (int k = u; k < v; k++)
{
column[k] = sol[jm + k];
}
});
Array.Copy(sol, jm, column, 0, rowsA);
CommonParallel.For(0, columnsA, (u, v) =>
{
for (int i = u; i < v; i++)

10
src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Complex32.cs

@ -2058,14 +2058,8 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra
var column = new Complex32[rowsA];
for (var j = 0; j < columnsB; j++)
{
var jm = j*rowsA;
CommonParallel.For(0, rowsA, (u, v) =>
{
for (int k = u; k < v; k++)
{
column[k] = sol[jm + k];
}
});
var jm = j * rowsA;
Array.Copy(sol, jm, column, 0, rowsA);
CommonParallel.For(0, columnsA, (u, v) =>
{
for (int i = u; i < v; i++)

10
src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Double.cs

@ -1946,14 +1946,8 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra
var column = new double[rowsA];
for (var j = 0; j < columnsB; j++)
{
var jm = j*rowsA;
CommonParallel.For(0, rowsA, (u, v) =>
{
for (int k = u; k < v; k++)
{
column[k] = sol[jm + k];
}
});
var jm = j * rowsA;
Array.Copy(sol, jm, column, 0, rowsA);
CommonParallel.For(0, columnsA, (u, v) =>
{
for (int i = u; i < v; i++)

10
src/Numerics/Algorithms/LinearAlgebra/ManagedLinearAlgebraProvider.Single.cs

@ -1948,14 +1948,8 @@ namespace MathNet.Numerics.Algorithms.LinearAlgebra
var column = new float[rowsA];
for (var j = 0; j < columnsB; j++)
{
var jm = j*rowsA;
CommonParallel.For(0, rowsA, (u, v) =>
{
for (int k = u; k < v; k++)
{
column[k] = sol[jm + k];
}
});
var jm = j * rowsA;
Array.Copy(sol, jm, column, 0, rowsA);
CommonParallel.For(0, columnsA, (u, v) =>
{
for (int i = u; i < v; i++)

Loading…
Cancel
Save