private static void RunFullVersion(ForwardProject project) { using (var mpi_world = Mpi.Init()) { var mpi = mpi_world.Dup(); using (var memoryProvider = new FftWMemoryProvider()) { using (var runner = new ExtremeMtSolverRunner(project, memoryProvider, mpi)) { var model = ModelGenUtils.LoadCartesianModel(project.ModelFile, mpi); runner.Run(model); } } mpi.Dispose(); } }
public ExtremeMtSolverRunner(ForwardProject project, INativeMemoryProvider memoryProvider, Mpi mpi = null) { if (project == null) { throw new ArgumentNullException(nameof(project)); } if (memoryProvider == null) { throw new ArgumentNullException(nameof(memoryProvider)); } _project = project; _memoryProvider = memoryProvider; _mpi = mpi; _logger = (_mpi == null || !_mpi.IsParallel) ? (ILogger) new ConsoleLogger() : new ParallelConsoleLogger(_mpi); _solver = new Mt3DForwardSolver(_logger, memoryProvider, _project.ForwardSettings); _solver.SetProfiler(_profiler); }