public void MinusPlusPlus_2000x2000() { var tileSize = 40; // prepare data var data1 = MatrixHelpers.Tile(Matrix<double>.DeSerializeFromFile(@"C:\Users\eh\Documents\KU\Inversion-of-Block-Tridiagonal-Matrices\Dataset\m2000x2000-a.mat"), tileSize); var data2 = MatrixHelpers.Tile(Matrix<double>.DeSerializeFromFile(@"C:\Users\eh\Documents\KU\Inversion-of-Block-Tridiagonal-Matrices\Dataset\m2000x2000-b.mat"), tileSize); var data3 = MatrixHelpers.Tile(Matrix<double>.DeSerializeFromFile(@"C:\Users\eh\Documents\KU\Inversion-of-Block-Tridiagonal-Matrices\Dataset\m2000x2000-c.mat"), tileSize); Matrix<Matrix<double>> expected = MatrixHelpers.Tile(Matrix<double>.DeSerializeFromFile(@"C:\Users\eh\Documents\KU\Inversion-of-Block-Tridiagonal-Matrices\Dataset\m2000x2000-a_b_c-MinusPlusPlus-result.mat"), tileSize); var opData1 = new OperationResult<double>(data1); var opData2 = new OperationResult<double>(data2); var opData3 = new OperationResult<double>(data3); OperationResult<double> actual; var mProducer = new MinusPlusPlus<double>(opData1, opData2, opData3, out actual); var pm = new Manager(mProducer); pm.Start(); pm.Join(); MatrixHelpers.IsDone(actual); MatrixHelpers.Diff(expected, actual.Data); MatrixHelpers.Compare(expected, actual.Data); }
public static IEnumerable<Measurement> MinusPlusPlus() { foreach (int threadCount in ThreadCountGenerator()) foreach (int tileSize in TileSizeGenerator) yield return new ThreeBlockMatrixMeasurement { TileSize = tileSize, ThreadCount = threadCount, Execute = (a, b, c, tc) => { var opRes1 = new OperationResult<double>(a); var opRes2 = new OperationResult<double>(b); var opRes3 = new OperationResult<double>(c); OperationResult<double> actual; var producer = new MinusPlusPlus<double>(opRes1, opRes2, opRes3, out actual); Runner(producer, tc); } }; }