Esempio n. 1
0
        private void ExportProfiling(CartesianModel model, double frequency)
        {
            ForwardLoggerHelper.WriteStatus(_logger, "Exporting profiling results");
            var dir     = _project.ResultsPath;
            var freqStr = $"_freq{frequency:####0.0000}";

            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }

            //ProfilerResultsTextExporter.SaveRawProfilingResults(Path.Combine(dir, $"rawprofile{freqStr}.xml"), model, _profiler);

            var records = _profiler.GetAllRecords();

            var analizer = new ProfilerStatisticsAnalyzer(records);

            var analisisResult = analizer.PerformAnalysis();


            int numberOfMpi     = _mpi?.Size ?? 1;
            int numberOfThreads = MultiThreadUtils.MaxDegreeOfParallelism;

            var file = Path.Combine(dir, $"profiling_mpi{numberOfMpi:0000}_threads{numberOfThreads}{freqStr}.txt");

            ProfilerResultsTextExporter.SaveProfilingResultsTo(file, model, analisisResult, numberOfMpi, numberOfThreads);

            var file2 = Path.Combine(dir, "..", "common.dat");

            ProfilerResultsTextExporter.SaveProfilingResultsToCommon(file2, model, analisisResult, numberOfMpi, numberOfThreads, _project.ForwardSettings.NumberOfHankels);
        }
Esempio n. 2
0
        public void Run(CartesianModel model)
        {
            FftBuffersPool.PrepareBuffersForModel(model, _memoryProvider, _mpi, _profiler);

            LogSettingsInfo();

            _solver.SetProfiler(_profiler);
            _solver
            .WithMpi(_mpi)
            .With(_project.ObservationLevels);

            int freqCounter = 0;

            foreach (var frequency in _project.Frequencies)
            {
                ForwardLoggerHelper.WriteStatus(_logger, $"\t\t\tFrequecy {frequency}, {++freqCounter} of {_project.Frequencies.Count}");
                var omegaModel = OmegaModelBuilder.BuildOmegaModel(model, frequency);
                _profiler.ClearAllRecords();

                using (var rc = _solver.Solve(omegaModel))
                {
                    if (!_solver.IsParallel || _mpi.IsMaster)
                    {
                        ExportProfiling(model, frequency);
                        Export(rc, frequency);
                    }

                    ForwardLoggerHelper.WriteStatus(_logger, "Finish");
                    ParallelMemoryUtils.ExportMemoryUsage(_project.ResultsPath, _mpi, _memoryProvider, frequency);
                }
            }
        }
Esempio n. 3
0
        private void LogSettingsInfo()
        {
            ForwardLoggerHelper.WriteStatus(_logger, $"Number of threads: {MultiThreadUtils.MaxDegreeOfParallelism}");

            var fs = _project.ForwardSettings;

            if (fs.NumberOfHankels > 0)
            {
                ForwardLoggerHelper.WriteStatus(_logger, $"Number of hankels: {fs.NumberOfHankels}");
            }
            else
            {
                ForwardLoggerHelper.WriteStatus(_logger, $"Using GIEM2G as forward solver engine");
            }
            ForwardLoggerHelper.WriteStatus(_logger, $"Target residual  : {fs.Residual}");
            ForwardLoggerHelper.WriteStatus(_logger, $"InnerBufferLength: {fs.InnerBufferLength}");
            ForwardLoggerHelper.WriteStatus(_logger, $"OuterBufferLength: {fs.OuterBufferLength}");
            ForwardLoggerHelper.WriteStatus(_logger, $"MaxRepeatsNumber: {fs.MaxRepeatsNumber}");
        }
Esempio n. 4
0
        private void Export(ResultsContainer rc, double frequency)
        {
            ForwardLoggerHelper.WriteStatus(_logger, "Exporting results...");

            var resultPath        = _project.ResultsPath;
            var responsesFileName = PlainTextExporter.GetResponsesFileName(frequency);
            var fieldsFileName    = PlainTextExporter.GetFieldsFileName(frequency);

            if (!Directory.Exists(resultPath))
            {
                Directory.CreateDirectory(resultPath);
            }

            var exporter = new PlainTextExporter(rc, frequency);

            ForwardLoggerHelper.WriteStatus(_logger, "\t Export Raw fields");
            exporter.ExportRawFields(Path.Combine(resultPath, fieldsFileName), 0);

            ForwardLoggerHelper.WriteStatus(_logger, "\t Export MT responses");
            exporter.ExportMtResponses(Path.Combine(resultPath, responsesFileName));
        }