Loading src/cluster/cluster.cpp +59 −59 Original line number Diff line number Diff line Loading @@ -876,7 +876,7 @@ int cluster_jxi488_cycle( #ifdef USE_NVTX nvtxRangePop(); #endif #ifdef DEBUG_AM if (rs.debug_am) { /* now, before cms, output am to p_outam0 */ VirtualAsciiFile *outam0 = new VirtualAsciiFile(); string outam0_name = output_path + "/c_AM0_JXI" + to_string(jxi488) + ".txt"; Loading @@ -889,7 +889,7 @@ int cluster_jxi488_cycle( write_dcomplex_matrix(outam0, cid->am, ndit, ndit); outam0->write_to_disk(outam0_name); delete outam0; #endif // DEBUG_AM } if (rs.use_offload) { // whenever rs.use_offload == true, USE_TARGET_OFFLOAD is defined, but we // have to check for the compilation flag in order to avoid the compiler Loading Loading @@ -968,7 +968,7 @@ int cluster_jxi488_cycle( #endif interval_start = chrono::high_resolution_clock::now(); cms(cid->am[0], cid->c1); #ifdef DEBUG_AM if (rs.debug_am) { VirtualAsciiFile *outam1 = new VirtualAsciiFile(); string outam1_name = output_path + "/c_AM1_JXI" + to_string(jxi488) + ".txt"; string outam1_ppm_name = output_path + "/c_AM1_JXI" + to_string(jxi488) + ".ppm"; Loading @@ -982,7 +982,7 @@ int cluster_jxi488_cycle( outam1->write_to_disk(outam1_name); delete outam1; write_matrix_as_ppm(cid->am[0], ndit, ndit, outam1_ppm_name); #endif // DEBUG_AM } #ifdef USE_NVTX nvtxRangePop(); #endif // USE_NVTX Loading @@ -995,7 +995,7 @@ int cluster_jxi488_cycle( nvtxRangePush("Invert the matrix"); #endif // USE_NVTX invert_matrix(cid->am, ndit, jer, output_path, jxi488, mxndm, cid->proc_device, rs); #ifdef DEBUG_AM if (rs.debug_am) { VirtualAsciiFile *outam2 = new VirtualAsciiFile(); string outam2_name = output_path + "/c_AM2_JXI" + to_string(jxi488) + ".txt"; string outam2_ppm_name = output_path + "/c_AM2_JXI" + to_string(jxi488) + ".ppm"; Loading @@ -1009,7 +1009,7 @@ int cluster_jxi488_cycle( outam2->write_to_disk(outam2_name); delete outam2; write_matrix_as_ppm(cid->am[0], ndit, ndit, outam2_ppm_name); #endif // DEBUG_AM } #ifdef USE_NVTX nvtxRangePop(); #endif // USE_NVTX Loading @@ -1024,7 +1024,7 @@ int cluster_jxi488_cycle( // break; // jxi488 loop: goes to memory clean } ztm(cid->am, cid->c1); #ifdef DEBUG_AM if (rs.debug_am) { VirtualAsciiFile *outam3 = new VirtualAsciiFile(); string outam3_name = output_path + "/c_AM3_JXI" + to_string(jxi488) + ".txt"; string outam3_ppm_name = output_path + "/c_AM3_JXI" + to_string(jxi488) + ".ppm"; Loading @@ -1038,7 +1038,7 @@ int cluster_jxi488_cycle( outam3->write_to_disk(outam3_name); delete outam3; write_matrix_as_ppm(cid->c1->am0m[0], 2 * cid->c1->nlem, 2 * cid->c1->nlem, outam3_ppm_name); #endif // DEBUG_AM } } interval_start = chrono::high_resolution_clock::now(); #ifdef USE_NVTX Loading src/include/Configuration.h +8 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,8 @@ protected: int _ref_iters; //! \brief Flag to use target offload, if available. bool _offload_flag; //! \brief Flag to control AM matrix debug output. bool _debug_am; public: //! \brief Read-only view on number of spherical components. Loading Loading @@ -200,6 +202,8 @@ public: const int& ref_iters = _ref_iters; //! \brief Read-only view on flag to use target offload, if available. const bool& offload_flag = _offload_flag; //! \brief Read-only view on flag to control AM matrix debug output. const bool& debug_am = _debug_am; /** * \brief Build a scattering geometry configuration structure. Loading Loading @@ -341,6 +345,8 @@ protected: short _invert_mode; //! \brief Target matrix inversion accuracy. double _accuracy_goal; //! \brief AM debug flag. bool _debug_am; //! \brief GPU memory in GiB. double _gpu_ram_gb; //! \brief Host system memory in GiB. Loading @@ -366,6 +372,8 @@ public: const short& invert_mode = _invert_mode; //! \brief Read-only view on target matrix inversion accuracy. const double& accuracy_goal = _accuracy_goal; //! \brief Read-only view on AM debug flag. const bool& debug_am = _debug_am; //! \brief Read-only view on GPU memory in GiB. const double& gpu_ram_gb = _gpu_ram_gb; //! \brief Read-only view on host system memory in GiB. Loading src/include/logging.h +1 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ #define INCLUDE_LOGGING_H_ //! \brief Code version. #define NPTM_VERSION "0.10.9" #define NPTM_VERSION "0.10.10" //! \brief Debug level logging (maximum verbosity). #define LOG_DEBG 0 Loading src/inclusion/inclusion.cpp +34 −34 Original line number Diff line number Diff line Loading @@ -852,7 +852,7 @@ int inclusion_jxi488_cycle( #ifdef USE_NVTX nvtxRangePush("Calculate inverted matrix"); #endif #ifdef DEBUG_AM if (rs.debug_am) { /* now, before cms, output am to p_outam0 */ VirtualAsciiFile *outam0 = new VirtualAsciiFile(); string outam0_name = output_path + "/c_AM0_JXI" + to_string(jxi488) + ".txt"; Loading @@ -863,9 +863,9 @@ int inclusion_jxi488_cycle( write_dcomplex_matrix(outam0, cid->am, cid->c1->ndm, cid->c1->ndm); outam0->write_to_disk(outam0_name); delete outam0; #endif } incms(cid->am, enti, cid->c1); #ifdef DEBUG_AM if (rs.debug_am) { VirtualAsciiFile *outam1 = new VirtualAsciiFile(); string outam1_name = output_path + "/c_AM1_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix after CMS before LUCIN\n"); Loading @@ -875,7 +875,7 @@ int inclusion_jxi488_cycle( write_dcomplex_matrix(outam1, cid->am, cid->c1->ndm, cid->c1->ndm, " %5d %5d (%17.8lE,%17.8lE)\n", 1); outam1->write_to_disk(outam1_name); delete outam1; #endif } #ifdef USE_NVTX nvtxRangePop(); #endif Loading Loading @@ -907,7 +907,7 @@ int inclusion_jxi488_cycle( nvtxRangePush("Average calculation"); #endif exma(cid->am, cid->c1); #ifdef DEBUG_AM if (rs.debug_am) { VirtualAsciiFile *outam3 = new VirtualAsciiFile(); string outam3_name = output_path + "/c_AM3_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix after EXMA\n"); Loading @@ -917,7 +917,7 @@ int inclusion_jxi488_cycle( write_dcomplex_matrix(outam3, cid->am, cid->c1->ndm, cid->c1->ndm); outam3->write_to_disk(outam3_name); delete outam3; #endif } if (idfc >= 0) { if (jxi488 == jwtm) { int nlemt = 2 * cid->c1->nlem; Loading src/libnptm/Configuration.cpp +13 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,7 @@ GeometryConfiguration::GeometryConfiguration( _accuracy_goal = 1.0e-07; _ref_iters = 5; _offload_flag = false; _debug_am = false; } GeometryConfiguration::GeometryConfiguration(const GeometryConfiguration& rhs) Loading Loading @@ -156,6 +157,7 @@ GeometryConfiguration::GeometryConfiguration(const GeometryConfiguration& rhs) _accuracy_goal = rhs._accuracy_goal; _ref_iters = rhs._ref_iters; _offload_flag = rhs._offload_flag; _debug_am = rhs._debug_am; } #ifdef MPI_VERSION Loading Loading @@ -200,6 +202,7 @@ GeometryConfiguration::GeometryConfiguration(const mixMPI *mpidata) { MPI_Bcast(&_accuracy_goal, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); MPI_Bcast(&_ref_iters, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Bcast(&_offload_flag, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD); MPI_Bcast(&_debug_am, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD); } void GeometryConfiguration::mpibcast(const mixMPI *mpidata) { Loading Loading @@ -240,6 +243,7 @@ void GeometryConfiguration::mpibcast(const mixMPI *mpidata) { MPI_Bcast(&_accuracy_goal, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); MPI_Bcast(&_ref_iters, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Bcast(&_offload_flag, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD); MPI_Bcast(&_debug_am, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD); } #endif Loading Loading @@ -448,6 +452,13 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(const std::string& fil } } } if (str_target.size() > 9) { if (str_target.substr(0, 9).compare("DEBUG_AM=") == 0) { int debug_flag = (int)stoi(str_target.substr(9, str_target.length())); conf->_debug_am = (debug_flag == 0) ? false : true; is_parsed = true; } } if (!is_parsed) { if (str_target.size() > 0) { if (str_target.substr(0, 1).compare("#") != 0) { Loading @@ -468,6 +479,7 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(const std::string& fil RuntimeSettings::RuntimeSettings() { _invert_mode = RuntimeSettings::INV_MODE_LU; _accuracy_goal = 1.0e-07; _debug_am = false; _gpu_ram_gb = 0.0; _host_ram_gb = 0.0; _max_ref_iters = 5; Loading @@ -482,6 +494,7 @@ RuntimeSettings::RuntimeSettings() { RuntimeSettings::RuntimeSettings(GeometryConfiguration *gconf, Logger *ptr_logger) { _invert_mode = gconf->invert_mode; _accuracy_goal = gconf->accuracy_goal; _debug_am = gconf->debug_am; _gpu_ram_gb = gconf->gpu_ram_gb; _host_ram_gb = gconf->host_ram_gb; _max_ref_iters = gconf->ref_iters; Loading Loading
src/cluster/cluster.cpp +59 −59 Original line number Diff line number Diff line Loading @@ -876,7 +876,7 @@ int cluster_jxi488_cycle( #ifdef USE_NVTX nvtxRangePop(); #endif #ifdef DEBUG_AM if (rs.debug_am) { /* now, before cms, output am to p_outam0 */ VirtualAsciiFile *outam0 = new VirtualAsciiFile(); string outam0_name = output_path + "/c_AM0_JXI" + to_string(jxi488) + ".txt"; Loading @@ -889,7 +889,7 @@ int cluster_jxi488_cycle( write_dcomplex_matrix(outam0, cid->am, ndit, ndit); outam0->write_to_disk(outam0_name); delete outam0; #endif // DEBUG_AM } if (rs.use_offload) { // whenever rs.use_offload == true, USE_TARGET_OFFLOAD is defined, but we // have to check for the compilation flag in order to avoid the compiler Loading Loading @@ -968,7 +968,7 @@ int cluster_jxi488_cycle( #endif interval_start = chrono::high_resolution_clock::now(); cms(cid->am[0], cid->c1); #ifdef DEBUG_AM if (rs.debug_am) { VirtualAsciiFile *outam1 = new VirtualAsciiFile(); string outam1_name = output_path + "/c_AM1_JXI" + to_string(jxi488) + ".txt"; string outam1_ppm_name = output_path + "/c_AM1_JXI" + to_string(jxi488) + ".ppm"; Loading @@ -982,7 +982,7 @@ int cluster_jxi488_cycle( outam1->write_to_disk(outam1_name); delete outam1; write_matrix_as_ppm(cid->am[0], ndit, ndit, outam1_ppm_name); #endif // DEBUG_AM } #ifdef USE_NVTX nvtxRangePop(); #endif // USE_NVTX Loading @@ -995,7 +995,7 @@ int cluster_jxi488_cycle( nvtxRangePush("Invert the matrix"); #endif // USE_NVTX invert_matrix(cid->am, ndit, jer, output_path, jxi488, mxndm, cid->proc_device, rs); #ifdef DEBUG_AM if (rs.debug_am) { VirtualAsciiFile *outam2 = new VirtualAsciiFile(); string outam2_name = output_path + "/c_AM2_JXI" + to_string(jxi488) + ".txt"; string outam2_ppm_name = output_path + "/c_AM2_JXI" + to_string(jxi488) + ".ppm"; Loading @@ -1009,7 +1009,7 @@ int cluster_jxi488_cycle( outam2->write_to_disk(outam2_name); delete outam2; write_matrix_as_ppm(cid->am[0], ndit, ndit, outam2_ppm_name); #endif // DEBUG_AM } #ifdef USE_NVTX nvtxRangePop(); #endif // USE_NVTX Loading @@ -1024,7 +1024,7 @@ int cluster_jxi488_cycle( // break; // jxi488 loop: goes to memory clean } ztm(cid->am, cid->c1); #ifdef DEBUG_AM if (rs.debug_am) { VirtualAsciiFile *outam3 = new VirtualAsciiFile(); string outam3_name = output_path + "/c_AM3_JXI" + to_string(jxi488) + ".txt"; string outam3_ppm_name = output_path + "/c_AM3_JXI" + to_string(jxi488) + ".ppm"; Loading @@ -1038,7 +1038,7 @@ int cluster_jxi488_cycle( outam3->write_to_disk(outam3_name); delete outam3; write_matrix_as_ppm(cid->c1->am0m[0], 2 * cid->c1->nlem, 2 * cid->c1->nlem, outam3_ppm_name); #endif // DEBUG_AM } } interval_start = chrono::high_resolution_clock::now(); #ifdef USE_NVTX Loading
src/include/Configuration.h +8 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,8 @@ protected: int _ref_iters; //! \brief Flag to use target offload, if available. bool _offload_flag; //! \brief Flag to control AM matrix debug output. bool _debug_am; public: //! \brief Read-only view on number of spherical components. Loading Loading @@ -200,6 +202,8 @@ public: const int& ref_iters = _ref_iters; //! \brief Read-only view on flag to use target offload, if available. const bool& offload_flag = _offload_flag; //! \brief Read-only view on flag to control AM matrix debug output. const bool& debug_am = _debug_am; /** * \brief Build a scattering geometry configuration structure. Loading Loading @@ -341,6 +345,8 @@ protected: short _invert_mode; //! \brief Target matrix inversion accuracy. double _accuracy_goal; //! \brief AM debug flag. bool _debug_am; //! \brief GPU memory in GiB. double _gpu_ram_gb; //! \brief Host system memory in GiB. Loading @@ -366,6 +372,8 @@ public: const short& invert_mode = _invert_mode; //! \brief Read-only view on target matrix inversion accuracy. const double& accuracy_goal = _accuracy_goal; //! \brief Read-only view on AM debug flag. const bool& debug_am = _debug_am; //! \brief Read-only view on GPU memory in GiB. const double& gpu_ram_gb = _gpu_ram_gb; //! \brief Read-only view on host system memory in GiB. Loading
src/include/logging.h +1 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ #define INCLUDE_LOGGING_H_ //! \brief Code version. #define NPTM_VERSION "0.10.9" #define NPTM_VERSION "0.10.10" //! \brief Debug level logging (maximum verbosity). #define LOG_DEBG 0 Loading
src/inclusion/inclusion.cpp +34 −34 Original line number Diff line number Diff line Loading @@ -852,7 +852,7 @@ int inclusion_jxi488_cycle( #ifdef USE_NVTX nvtxRangePush("Calculate inverted matrix"); #endif #ifdef DEBUG_AM if (rs.debug_am) { /* now, before cms, output am to p_outam0 */ VirtualAsciiFile *outam0 = new VirtualAsciiFile(); string outam0_name = output_path + "/c_AM0_JXI" + to_string(jxi488) + ".txt"; Loading @@ -863,9 +863,9 @@ int inclusion_jxi488_cycle( write_dcomplex_matrix(outam0, cid->am, cid->c1->ndm, cid->c1->ndm); outam0->write_to_disk(outam0_name); delete outam0; #endif } incms(cid->am, enti, cid->c1); #ifdef DEBUG_AM if (rs.debug_am) { VirtualAsciiFile *outam1 = new VirtualAsciiFile(); string outam1_name = output_path + "/c_AM1_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix after CMS before LUCIN\n"); Loading @@ -875,7 +875,7 @@ int inclusion_jxi488_cycle( write_dcomplex_matrix(outam1, cid->am, cid->c1->ndm, cid->c1->ndm, " %5d %5d (%17.8lE,%17.8lE)\n", 1); outam1->write_to_disk(outam1_name); delete outam1; #endif } #ifdef USE_NVTX nvtxRangePop(); #endif Loading Loading @@ -907,7 +907,7 @@ int inclusion_jxi488_cycle( nvtxRangePush("Average calculation"); #endif exma(cid->am, cid->c1); #ifdef DEBUG_AM if (rs.debug_am) { VirtualAsciiFile *outam3 = new VirtualAsciiFile(); string outam3_name = output_path + "/c_AM3_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix after EXMA\n"); Loading @@ -917,7 +917,7 @@ int inclusion_jxi488_cycle( write_dcomplex_matrix(outam3, cid->am, cid->c1->ndm, cid->c1->ndm); outam3->write_to_disk(outam3_name); delete outam3; #endif } if (idfc >= 0) { if (jxi488 == jwtm) { int nlemt = 2 * cid->c1->nlem; Loading
src/libnptm/Configuration.cpp +13 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,7 @@ GeometryConfiguration::GeometryConfiguration( _accuracy_goal = 1.0e-07; _ref_iters = 5; _offload_flag = false; _debug_am = false; } GeometryConfiguration::GeometryConfiguration(const GeometryConfiguration& rhs) Loading Loading @@ -156,6 +157,7 @@ GeometryConfiguration::GeometryConfiguration(const GeometryConfiguration& rhs) _accuracy_goal = rhs._accuracy_goal; _ref_iters = rhs._ref_iters; _offload_flag = rhs._offload_flag; _debug_am = rhs._debug_am; } #ifdef MPI_VERSION Loading Loading @@ -200,6 +202,7 @@ GeometryConfiguration::GeometryConfiguration(const mixMPI *mpidata) { MPI_Bcast(&_accuracy_goal, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); MPI_Bcast(&_ref_iters, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Bcast(&_offload_flag, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD); MPI_Bcast(&_debug_am, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD); } void GeometryConfiguration::mpibcast(const mixMPI *mpidata) { Loading Loading @@ -240,6 +243,7 @@ void GeometryConfiguration::mpibcast(const mixMPI *mpidata) { MPI_Bcast(&_accuracy_goal, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); MPI_Bcast(&_ref_iters, 1, MPI_INT, 0, MPI_COMM_WORLD); MPI_Bcast(&_offload_flag, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD); MPI_Bcast(&_debug_am, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD); } #endif Loading Loading @@ -448,6 +452,13 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(const std::string& fil } } } if (str_target.size() > 9) { if (str_target.substr(0, 9).compare("DEBUG_AM=") == 0) { int debug_flag = (int)stoi(str_target.substr(9, str_target.length())); conf->_debug_am = (debug_flag == 0) ? false : true; is_parsed = true; } } if (!is_parsed) { if (str_target.size() > 0) { if (str_target.substr(0, 1).compare("#") != 0) { Loading @@ -468,6 +479,7 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(const std::string& fil RuntimeSettings::RuntimeSettings() { _invert_mode = RuntimeSettings::INV_MODE_LU; _accuracy_goal = 1.0e-07; _debug_am = false; _gpu_ram_gb = 0.0; _host_ram_gb = 0.0; _max_ref_iters = 5; Loading @@ -482,6 +494,7 @@ RuntimeSettings::RuntimeSettings() { RuntimeSettings::RuntimeSettings(GeometryConfiguration *gconf, Logger *ptr_logger) { _invert_mode = gconf->invert_mode; _accuracy_goal = gconf->accuracy_goal; _debug_am = gconf->debug_am; _gpu_ram_gb = gconf->gpu_ram_gb; _host_ram_gb = gconf->host_ram_gb; _max_ref_iters = gconf->ref_iters; Loading