Loading src/include/Configuration.h +4 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,8 @@ protected: double _accuracy_goal; //! \brief Maximum number of refinement iterations. int _ref_iters; //! \brief Flag to use target offload, if available. bool _offload_flag; public: //! \brief Read-only view on number of spherical components. Loading Loading @@ -196,6 +198,8 @@ public: const double& accuracy_goal = _accuracy_goal; //! \brief Read-only view on maximum number of refinement iterations. 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 Build a scattering geometry configuration structure. Loading src/libnptm/Configuration.cpp +19 −2 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ GeometryConfiguration::GeometryConfiguration( _invert_mode = 0; _accuracy_goal = 1.0e-07; _ref_iters = 5; _offload_flag = true; } GeometryConfiguration::GeometryConfiguration(const GeometryConfiguration& rhs) Loading Loading @@ -154,6 +155,7 @@ GeometryConfiguration::GeometryConfiguration(const GeometryConfiguration& rhs) _invert_mode = rhs._invert_mode; _accuracy_goal = rhs._accuracy_goal; _ref_iters = rhs._ref_iters; _offload_flag = rhs._offload_flag; } #ifdef MPI_VERSION Loading Loading @@ -197,6 +199,7 @@ GeometryConfiguration::GeometryConfiguration(const mixMPI *mpidata) { MPI_Bcast(&_invert_mode, 1, MPI_SHORT, 0, MPI_COMM_WORLD); 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); } void GeometryConfiguration::mpibcast(const mixMPI *mpidata) { Loading Loading @@ -236,6 +239,7 @@ void GeometryConfiguration::mpibcast(const mixMPI *mpidata) { MPI_Bcast(&_invert_mode, 1, MPI_SHORT, 0, MPI_COMM_WORLD); 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); } #endif Loading Loading @@ -402,6 +406,13 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(const std::string& fil conf->_host_ram_gb = ram_gb; is_parsed = true; } if (str_target.substr(0, 12).compare("USE_OFFLOAD=") == 0) { re = regex("[0-9]+"); regex_search(str_target, m, re); short dyn_order_flag = (short)stoi(m.str()); conf->_offload_flag = (dyn_order_flag > 0) ? true : false; is_parsed = true; } } if (str_target_size > 11) { if (str_target.substr(0, 11).compare("GPU_RAM_GB=") == 0) { Loading @@ -422,7 +433,7 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(const std::string& fil if (str_inv_mode.compare("LU") == 0) inv_mode = RuntimeSettings::INV_MODE_LU; else if (str_inv_mode.compare("GESV") == 0) inv_mode = RuntimeSettings::INV_MODE_GESV; else if (str_inv_mode.compare("RBT") == 0) inv_mode = RuntimeSettings::INV_MODE_RBT; else if (str_inv_mode.compare("SVD") == 0) inv_mode = RuntimeSettings::INV_MODE_SVD; // else if (str_inv_mode.compare("SVD") == 0) inv_mode = RuntimeSettings::INV_MODE_SVD; else { throw(UnrecognizedConfigurationException("ERROR: unrecognized option \"" + str_target + "\"!\n")); } Loading Loading @@ -462,6 +473,9 @@ RuntimeSettings::RuntimeSettings() { _max_ref_iters = 5; _use_refinement = false; _use_offload = true; #ifndef USE_TARGET_OFFLOAD _use_offload = false; #endif // USE_TARGET_OFFLOAD logger = NULL; } Loading @@ -472,7 +486,10 @@ RuntimeSettings::RuntimeSettings(GeometryConfiguration *gconf, Logger *ptr_logge _host_ram_gb = gconf->host_ram_gb; _max_ref_iters = gconf->ref_iters; _use_refinement = gconf->refine_flag; _use_offload = true; // TODO: make this option configurable. _use_offload = gconf->offload_flag; #ifndef USE_TARGET_OFFLOAD _use_offload = false; #endif // USE_TARGET_OFFLOAD logger = ptr_logger; } // >>> END OF RuntimeSettings CLASS IMPLEMENTATION <<< Loading Loading
src/include/Configuration.h +4 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,8 @@ protected: double _accuracy_goal; //! \brief Maximum number of refinement iterations. int _ref_iters; //! \brief Flag to use target offload, if available. bool _offload_flag; public: //! \brief Read-only view on number of spherical components. Loading Loading @@ -196,6 +198,8 @@ public: const double& accuracy_goal = _accuracy_goal; //! \brief Read-only view on maximum number of refinement iterations. 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 Build a scattering geometry configuration structure. Loading
src/libnptm/Configuration.cpp +19 −2 Original line number Diff line number Diff line Loading @@ -111,6 +111,7 @@ GeometryConfiguration::GeometryConfiguration( _invert_mode = 0; _accuracy_goal = 1.0e-07; _ref_iters = 5; _offload_flag = true; } GeometryConfiguration::GeometryConfiguration(const GeometryConfiguration& rhs) Loading Loading @@ -154,6 +155,7 @@ GeometryConfiguration::GeometryConfiguration(const GeometryConfiguration& rhs) _invert_mode = rhs._invert_mode; _accuracy_goal = rhs._accuracy_goal; _ref_iters = rhs._ref_iters; _offload_flag = rhs._offload_flag; } #ifdef MPI_VERSION Loading Loading @@ -197,6 +199,7 @@ GeometryConfiguration::GeometryConfiguration(const mixMPI *mpidata) { MPI_Bcast(&_invert_mode, 1, MPI_SHORT, 0, MPI_COMM_WORLD); 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); } void GeometryConfiguration::mpibcast(const mixMPI *mpidata) { Loading Loading @@ -236,6 +239,7 @@ void GeometryConfiguration::mpibcast(const mixMPI *mpidata) { MPI_Bcast(&_invert_mode, 1, MPI_SHORT, 0, MPI_COMM_WORLD); 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); } #endif Loading Loading @@ -402,6 +406,13 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(const std::string& fil conf->_host_ram_gb = ram_gb; is_parsed = true; } if (str_target.substr(0, 12).compare("USE_OFFLOAD=") == 0) { re = regex("[0-9]+"); regex_search(str_target, m, re); short dyn_order_flag = (short)stoi(m.str()); conf->_offload_flag = (dyn_order_flag > 0) ? true : false; is_parsed = true; } } if (str_target_size > 11) { if (str_target.substr(0, 11).compare("GPU_RAM_GB=") == 0) { Loading @@ -422,7 +433,7 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(const std::string& fil if (str_inv_mode.compare("LU") == 0) inv_mode = RuntimeSettings::INV_MODE_LU; else if (str_inv_mode.compare("GESV") == 0) inv_mode = RuntimeSettings::INV_MODE_GESV; else if (str_inv_mode.compare("RBT") == 0) inv_mode = RuntimeSettings::INV_MODE_RBT; else if (str_inv_mode.compare("SVD") == 0) inv_mode = RuntimeSettings::INV_MODE_SVD; // else if (str_inv_mode.compare("SVD") == 0) inv_mode = RuntimeSettings::INV_MODE_SVD; else { throw(UnrecognizedConfigurationException("ERROR: unrecognized option \"" + str_target + "\"!\n")); } Loading Loading @@ -462,6 +473,9 @@ RuntimeSettings::RuntimeSettings() { _max_ref_iters = 5; _use_refinement = false; _use_offload = true; #ifndef USE_TARGET_OFFLOAD _use_offload = false; #endif // USE_TARGET_OFFLOAD logger = NULL; } Loading @@ -472,7 +486,10 @@ RuntimeSettings::RuntimeSettings(GeometryConfiguration *gconf, Logger *ptr_logge _host_ram_gb = gconf->host_ram_gb; _max_ref_iters = gconf->ref_iters; _use_refinement = gconf->refine_flag; _use_offload = true; // TODO: make this option configurable. _use_offload = gconf->offload_flag; #ifndef USE_TARGET_OFFLOAD _use_offload = false; #endif // USE_TARGET_OFFLOAD logger = ptr_logger; } // >>> END OF RuntimeSettings CLASS IMPLEMENTATION <<< Loading