From 03ff287e9ea77d6c23c187ea92b528f3756f3f94 Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Mon, 15 Apr 2024 05:05:28 -0700 Subject: [PATCH 01/15] Initial implementation of system_parameters class --- .../dal/algo/covariance/compute_types.hpp | 3 +- cpp/oneapi/dal/detail/system_parameters.cpp | 26 +++++++ cpp/oneapi/dal/detail/system_parameters.hpp | 53 ++++++++++++++ .../dal/detail/system_parameters_impl.cpp | 73 +++++++++++++++++++ .../dal/detail/system_parameters_impl.hpp | 64 ++++++++++++++++ .../dal/detail/system_parameters_impl_dpc.cpp | 36 +++++++++ 6 files changed, 254 insertions(+), 1 deletion(-) create mode 100644 cpp/oneapi/dal/detail/system_parameters.cpp create mode 100644 cpp/oneapi/dal/detail/system_parameters.hpp create mode 100644 cpp/oneapi/dal/detail/system_parameters_impl.cpp create mode 100644 cpp/oneapi/dal/detail/system_parameters_impl.hpp create mode 100644 cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp diff --git a/cpp/oneapi/dal/algo/covariance/compute_types.hpp b/cpp/oneapi/dal/algo/covariance/compute_types.hpp index 5800272ffaf..deaf59cdd65 100644 --- a/cpp/oneapi/dal/algo/covariance/compute_types.hpp +++ b/cpp/oneapi/dal/algo/covariance/compute_types.hpp @@ -17,6 +17,7 @@ #pragma once #include "oneapi/dal/algo/covariance/common.hpp" +#include "oneapi/dal/detail/system_parameters.hpp" namespace oneapi::dal::covariance { @@ -35,7 +36,7 @@ template class partial_compute_result_impl; template -class compute_parameters : public base { +class compute_parameters : public dal::detail::system_parameters { public: explicit compute_parameters(); compute_parameters(compute_parameters&&) = default; diff --git a/cpp/oneapi/dal/detail/system_parameters.cpp b/cpp/oneapi/dal/detail/system_parameters.cpp new file mode 100644 index 00000000000..fedb4b6545c --- /dev/null +++ b/cpp/oneapi/dal/detail/system_parameters.cpp @@ -0,0 +1,26 @@ +/******************************************************************************* +* Copyright contributors to the oneDAL project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#include "oneapi/dal/detail/system_parameters.hpp" + +namespace oneapi::dal { + +namespace detail { + +system_parameters::system_parameters() : impl_(detail::pimpl(new system_parameters_impl())) {} + +} // namespace detail +} // namespace oneapi::dal diff --git a/cpp/oneapi/dal/detail/system_parameters.hpp b/cpp/oneapi/dal/detail/system_parameters.hpp new file mode 100644 index 00000000000..3b7b020be19 --- /dev/null +++ b/cpp/oneapi/dal/detail/system_parameters.hpp @@ -0,0 +1,53 @@ +/******************************************************************************* +* Copyright contributors to the oneDAL project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#pragma once + +#include + +#include "oneapi/dal/detail/common.hpp" +#include "oneapi/dal/detail/system_parameters_impl.hpp" + +namespace oneapi::dal { + +namespace detail { + +class system_parameters : public base { +public: + explicit system_parameters(); + + /// C++ related parameters + cpu_extension get_top_enabled_cpu_extension() const; + std::uint32_t get_max_number_of_threads() const; + +#ifdef ONEDAL_DATA_PARALLEL + /// DPC++ related parameters + std::uint32_t get_max_workgroup_size(sycl::queue& queue) const; +#endif + + /// Logging + std::string dump() const; + +#ifdef ONEDAL_DATA_PARALLEL + std::string dump(sycl::queue& queue) const; +#endif + +private: + detail::pimpl impl_; +}; + +} // namespace detail +} // namespace oneapi::dal \ No newline at end of file diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.cpp b/cpp/oneapi/dal/detail/system_parameters_impl.cpp new file mode 100644 index 00000000000..ba42ea2cfce --- /dev/null +++ b/cpp/oneapi/dal/detail/system_parameters_impl.cpp @@ -0,0 +1,73 @@ +/******************************************************************************* +* Copyright contributors to the oneDAL project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#include "oneapi/dal/detail/cpu_info_impl.hpp" +#include "oneapi/dal/detail/system_parameters_impl.hpp" +#include + +#include + +namespace oneapi::dal::detail { +namespace v1 { + +system_parameters_impl::system_parameters_impl() +{ + using daal::services::Environment; + Environment * env = Environment::getInstance(); + sys_info_["top_enabled_cpu_extension"] = env->getCpuId(); + sys_info_["max_number_of_threads"] = env->getNumberOfThreads(); +} + +cpu_extension system_parameters_impl::get_top_enabled_cpu_extension() const { + return std::any_cast(sys_info_.find("top_enabled_cpu_extension")->second); +} + +std::uint32_t system_parameters_impl::get_max_number_of_threads() const { + return std::any_cast(sys_info_.find("max_number_of_threads")->second); +} + +template +void system_parameters_impl::print(const std::any& value, std::stringstream& ss) const { + T typed_value = std::any_cast(value); + ss << to_string(typed_value); +} + +template +void system_parameters_impl::print_primitive(const std::any& value, std::stringstream& ss) const { + ss << std::any_cast(value); +} + +void system_parameters_impl::print_any(const std::any& value, std::stringstream& ss) const { + const std::type_info& ti = value.type(); + if (ti == typeid(cpu_extension)) { + print(value, ss); + } else if (ti == typeid(std::uint32_t)) { + print_primitive(value, ss); + } +} + +std::string system_parameters_impl::dump() const { + std::stringstream ss; + for (auto it = sys_info_.begin(); it != sys_info_.end(); ++it) { + ss << it->first << " : "; + print_any(it->second, ss); + ss << "; "; + } + return std::move(ss).str(); +} + +} // namespace v1 +} // namespace oneapi::dal::detail diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.hpp b/cpp/oneapi/dal/detail/system_parameters_impl.hpp new file mode 100644 index 00000000000..a16eafaad5f --- /dev/null +++ b/cpp/oneapi/dal/detail/system_parameters_impl.hpp @@ -0,0 +1,64 @@ +/******************************************************************************* +* Copyright contributors to the oneDAL project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#pragma once + +#include "oneapi/dal/detail/cpu.hpp" + +#ifdef ONEDAL_DATA_PARALLEL +#include +#endif + +#include +#include + +namespace oneapi::dal::detail { +namespace v1 { + +class system_parameters_impl { +public: + explicit system_parameters_impl(); + + cpu_extension get_top_enabled_cpu_extension() const; + std::uint32_t get_max_number_of_threads() const; + +#ifdef ONEDAL_DATA_PARALLEL + /// DPC++ related parameters + std::uint32_t get_max_workgroup_size(sycl::queue& queue) const; +#endif + + /// Logging + std::string dump() const; + +#ifdef ONEDAL_DATA_PARALLEL + std::string dump(sycl::queue& queue) const; +#endif + +protected: + std::map sys_info_; + + template + void print(const std::any& value, std::stringstream& ss) const; + + template + void print_primitive(const std::any& value, std::stringstream& ss) const; + + void print_any(const std::any& value, std::stringstream& ss) const; +}; + +} // namespace v1 +using v1::system_parameters_impl; +} // namespace oneapi::dal::detail diff --git a/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp b/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp new file mode 100644 index 00000000000..647b2e3e603 --- /dev/null +++ b/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp @@ -0,0 +1,36 @@ +/******************************************************************************* +* Copyright contributors to the oneDAL project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#include "oneapi/dal/detail/system_parameters_impl.hpp" +#include "oneapi/dal/backend/common.hpp" + +#include + +namespace oneapi::dal::detail { +namespace v1 { + +std::uint32_t system_parameters_impl::get_max_workgroup_size(sycl::queue& queue) const { + return dal::backend::device_max_wg_size(queue); +} + +std::string system_parameters_impl::dump(sycl::queue& queue) const { + std::stringstream ss(dump()); + ss << "max_workgroup_size" << " : " << get_max_workgroup_size(queue) << " ; "; + return std::move(ss).str(); +} + +} // namespace v1 +} // namespace oneapi::dal::detail From a5ee87d10512b7da59358877719269907d65bfb3 Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Tue, 16 Apr 2024 04:42:05 -0700 Subject: [PATCH 02/15] Add a test for system-related parameters --- .../dal/algo/covariance/compute_types.cpp | 2 +- .../covariance/test/compute_parameters.cpp | 14 ++++++++ cpp/oneapi/dal/detail/cpu.cpp | 14 -------- cpp/oneapi/dal/detail/cpu.hpp | 16 ++++++++++ cpp/oneapi/dal/detail/cpu_info_impl.cpp | 4 +++ cpp/oneapi/dal/detail/system_parameters.cpp | 12 +++++++ .../dal/detail/system_parameters_dpc.cpp | 32 +++++++++++++++++++ .../dal/detail/system_parameters_impl.cpp | 23 +++++-------- .../dal/detail/system_parameters_impl.hpp | 6 ---- 9 files changed, 87 insertions(+), 36 deletions(-) create mode 100644 cpp/oneapi/dal/detail/system_parameters_dpc.cpp diff --git a/cpp/oneapi/dal/algo/covariance/compute_types.cpp b/cpp/oneapi/dal/algo/covariance/compute_types.cpp index 58cf70661f1..5f6b01178c7 100644 --- a/cpp/oneapi/dal/algo/covariance/compute_types.cpp +++ b/cpp/oneapi/dal/algo/covariance/compute_types.cpp @@ -59,7 +59,7 @@ struct compute_parameters_impl : public base { }; template -compute_parameters::compute_parameters() : impl_(new compute_parameters_impl{}) {} +compute_parameters::compute_parameters() : dal::detail::system_parameters(), impl_(new compute_parameters_impl{}) {} /// Choose the number of rows in the data block used in variance-covariance matrix computations on CPU. /// diff --git a/cpp/oneapi/dal/algo/covariance/test/compute_parameters.cpp b/cpp/oneapi/dal/algo/covariance/test/compute_parameters.cpp index 4c9a13d0baf..1914e05de6b 100644 --- a/cpp/oneapi/dal/algo/covariance/test/compute_parameters.cpp +++ b/cpp/oneapi/dal/algo/covariance/test/compute_parameters.cpp @@ -88,4 +88,18 @@ TEMPLATE_LIST_TEST_M(covariance_params_test, this->general_checks(input, input_data_table_id); } +TEST("can dump system-related parameters") { + detail::compute_parameters hp{}; + std::string hp_dump; +#ifdef ONEDAL_DATA_PARALLEL + DECLARE_TEST_POLICY(policy); + auto& q = policy.get_queue(); + hp_dump = hp.dump(q); +#else + hp_dump = hp.dump(); +#endif + std::cout << "System-related parameters: " << hp_dump << std::endl; + REQUIRE(hp_dump.size() > 0); +} + } // namespace oneapi::dal::covariance::test diff --git a/cpp/oneapi/dal/detail/cpu.cpp b/cpp/oneapi/dal/detail/cpu.cpp index 9767fbc4160..d5866a9d47d 100644 --- a/cpp/oneapi/dal/detail/cpu.cpp +++ b/cpp/oneapi/dal/detail/cpu.cpp @@ -15,24 +15,10 @@ *******************************************************************************/ #include "oneapi/dal/detail/cpu.hpp" -#include namespace oneapi::dal::detail { namespace v1 { -inline constexpr cpu_extension from_daal_cpu_type(daal::CpuType cpu) { - switch (cpu) { -#if defined(TARGET_X86_64) - case daal::sse2: return cpu_extension::sse2; - case daal::sse42: return cpu_extension::sse42; - case daal::avx2: return cpu_extension::avx2; - case daal::avx512: return cpu_extension::avx512; -#elif defined(TARGET_ARM) - case daal::sve: return cpu_extension::sve; -#endif - } - return cpu_extension::none; -} cpu_extension detect_top_cpu_extension() { if (!__daal_serv_cpu_extensions_available()) { #if defined(TARGET_X86_64) diff --git a/cpp/oneapi/dal/detail/cpu.hpp b/cpp/oneapi/dal/detail/cpu.hpp index 2530a9233ae..0fcc3a2e9a5 100644 --- a/cpp/oneapi/dal/detail/cpu.hpp +++ b/cpp/oneapi/dal/detail/cpu.hpp @@ -16,6 +16,8 @@ #pragma once +#include + #include // TODO: Clean up this redefinition and import the defines globally. @@ -44,6 +46,20 @@ enum class cpu_extension : uint64_t { #endif }; +inline constexpr cpu_extension from_daal_cpu_type(daal::CpuType cpu) { + switch (cpu) { +#if defined(TARGET_X86_64) + case daal::sse2: return cpu_extension::sse2; + case daal::sse42: return cpu_extension::sse42; + case daal::avx2: return cpu_extension::avx2; + case daal::avx512: return cpu_extension::avx512; +#elif defined(TARGET_ARM) + case daal::sve: return cpu_extension::sve; +#endif + } + return cpu_extension::none; +} + cpu_extension detect_top_cpu_extension(); } // namespace v1 diff --git a/cpp/oneapi/dal/detail/cpu_info_impl.cpp b/cpp/oneapi/dal/detail/cpu_info_impl.cpp index 6a99a9b5e87..876e66e3f62 100644 --- a/cpp/oneapi/dal/detail/cpu_info_impl.cpp +++ b/cpp/oneapi/dal/detail/cpu_info_impl.cpp @@ -15,6 +15,7 @@ *******************************************************************************/ #include "oneapi/dal/detail/cpu_info_impl.hpp" +#include "oneapi/dal/detail/error_messages.hpp" #include @@ -80,6 +81,9 @@ void cpu_info_impl::print_any(const std::any& value, std::stringstream& ss) cons else if (ti == typeid(cpu_vendor)) { print(value, ss); } + else { + throw unimplemented{ dal::detail::error_messages::unsupported_data_type() }; + } } } // namespace v1 diff --git a/cpp/oneapi/dal/detail/system_parameters.cpp b/cpp/oneapi/dal/detail/system_parameters.cpp index fedb4b6545c..99b4681df84 100644 --- a/cpp/oneapi/dal/detail/system_parameters.cpp +++ b/cpp/oneapi/dal/detail/system_parameters.cpp @@ -22,5 +22,17 @@ namespace detail { system_parameters::system_parameters() : impl_(detail::pimpl(new system_parameters_impl())) {} +cpu_extension system_parameters::get_top_enabled_cpu_extension() const { + return impl_->get_top_enabled_cpu_extension(); +} + +std::uint32_t system_parameters::get_max_number_of_threads() const { + return impl_->get_max_number_of_threads(); +} + +std::string system_parameters::dump() const { + return impl_->dump(); +} + } // namespace detail } // namespace oneapi::dal diff --git a/cpp/oneapi/dal/detail/system_parameters_dpc.cpp b/cpp/oneapi/dal/detail/system_parameters_dpc.cpp new file mode 100644 index 00000000000..b2e29f5e425 --- /dev/null +++ b/cpp/oneapi/dal/detail/system_parameters_dpc.cpp @@ -0,0 +1,32 @@ +/******************************************************************************* +* Copyright contributors to the oneDAL project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*******************************************************************************/ + +#include "oneapi/dal/detail/system_parameters.hpp" + +namespace oneapi::dal { + +namespace detail { + +std::uint32_t system_parameters::get_max_workgroup_size(sycl::queue& queue) const { + return impl_->get_max_workgroup_size(queue); +} + +std::string system_parameters::dump(sycl::queue& queue) const { + return impl_->dump(queue); +} + +} // namespace detail +} // namespace oneapi::dal \ No newline at end of file diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.cpp b/cpp/oneapi/dal/detail/system_parameters_impl.cpp index ba42ea2cfce..ceeb93d80a9 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl.cpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl.cpp @@ -15,6 +15,7 @@ *******************************************************************************/ #include "oneapi/dal/detail/cpu_info_impl.hpp" +#include "oneapi/dal/detail/error_messages.hpp" #include "oneapi/dal/detail/system_parameters_impl.hpp" #include @@ -27,8 +28,8 @@ system_parameters_impl::system_parameters_impl() { using daal::services::Environment; Environment * env = Environment::getInstance(); - sys_info_["top_enabled_cpu_extension"] = env->getCpuId(); - sys_info_["max_number_of_threads"] = env->getNumberOfThreads(); + sys_info_["top_enabled_cpu_extension"] = from_daal_cpu_type(daal::CpuType(env->getCpuId())); + sys_info_["max_number_of_threads"] = static_cast(env->getNumberOfThreads()); } cpu_extension system_parameters_impl::get_top_enabled_cpu_extension() const { @@ -39,23 +40,15 @@ std::uint32_t system_parameters_impl::get_max_number_of_threads() const { return std::any_cast(sys_info_.find("max_number_of_threads")->second); } -template -void system_parameters_impl::print(const std::any& value, std::stringstream& ss) const { - T typed_value = std::any_cast(value); - ss << to_string(typed_value); -} - -template -void system_parameters_impl::print_primitive(const std::any& value, std::stringstream& ss) const { - ss << std::any_cast(value); -} - void system_parameters_impl::print_any(const std::any& value, std::stringstream& ss) const { const std::type_info& ti = value.type(); if (ti == typeid(cpu_extension)) { - print(value, ss); + ss << to_string(std::any_cast(value)); } else if (ti == typeid(std::uint32_t)) { - print_primitive(value, ss); + ss << std::any_cast(value); + } + else { + throw unimplemented{ dal::detail::error_messages::unsupported_data_type() }; } } diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.hpp b/cpp/oneapi/dal/detail/system_parameters_impl.hpp index a16eafaad5f..a262fc3cf48 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl.hpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl.hpp @@ -50,12 +50,6 @@ class system_parameters_impl { protected: std::map sys_info_; - template - void print(const std::any& value, std::stringstream& ss) const; - - template - void print_primitive(const std::any& value, std::stringstream& ss) const; - void print_any(const std::any& value, std::stringstream& ss) const; }; From 2084a2667c02baa9ea4f2df2eeca3bd271327f8a Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Wed, 17 Apr 2024 02:40:31 -0700 Subject: [PATCH 03/15] 1. Fix system_parameters::get_top_enabled_cpu_extension. 2. Derive all perf-related parameters classes from system_parameters. 3. Add tests for system_parameters --- .../dal/algo/covariance/test/compute_parameters.cpp | 11 +++++++++++ cpp/oneapi/dal/algo/decision_forest/infer_types.hpp | 2 +- cpp/oneapi/dal/algo/linear_regression/train_types.hpp | 2 +- cpp/oneapi/dal/detail/system_parameters_impl.cpp | 7 ++++--- cpp/oneapi/dal/detail/system_parameters_impl.hpp | 2 +- cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp | 5 +++-- 6 files changed, 21 insertions(+), 8 deletions(-) diff --git a/cpp/oneapi/dal/algo/covariance/test/compute_parameters.cpp b/cpp/oneapi/dal/algo/covariance/test/compute_parameters.cpp index 1914e05de6b..6563b7f26c4 100644 --- a/cpp/oneapi/dal/algo/covariance/test/compute_parameters.cpp +++ b/cpp/oneapi/dal/algo/covariance/test/compute_parameters.cpp @@ -102,4 +102,15 @@ TEST("can dump system-related parameters") { REQUIRE(hp_dump.size() > 0); } +TEST("can retrieve system-related parameters") { + detail::compute_parameters hp{}; + REQUIRE(static_cast(hp.get_top_enabled_cpu_extension()) >= 0); + REQUIRE(hp.get_max_number_of_threads() > 0); +#ifdef ONEDAL_DATA_PARALLEL + DECLARE_TEST_POLICY(policy); + auto& q = policy.get_queue(); + REQUIRE(hp.get_max_workgroup_size(q) > 0); +#endif +} + } // namespace oneapi::dal::covariance::test diff --git a/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp b/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp index fcb45b1dd45..a410b50a5db 100644 --- a/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp +++ b/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp @@ -33,7 +33,7 @@ template struct infer_parameters_impl; template -class infer_parameters : public base { +class infer_parameters : public dal::detail::system_parameters { public: explicit infer_parameters(); infer_parameters(infer_parameters&&) = default; diff --git a/cpp/oneapi/dal/algo/linear_regression/train_types.hpp b/cpp/oneapi/dal/algo/linear_regression/train_types.hpp index d0b748333c3..eb1b40c751c 100644 --- a/cpp/oneapi/dal/algo/linear_regression/train_types.hpp +++ b/cpp/oneapi/dal/algo/linear_regression/train_types.hpp @@ -35,7 +35,7 @@ template class partial_train_result_impl; template -class train_parameters : public base { +class train_parameters : public dal::detail::system_parameters { public: explicit train_parameters(); train_parameters(train_parameters&&) = default; diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.cpp b/cpp/oneapi/dal/detail/system_parameters_impl.cpp index ceeb93d80a9..3e89c71d76b 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl.cpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl.cpp @@ -18,6 +18,7 @@ #include "oneapi/dal/detail/error_messages.hpp" #include "oneapi/dal/detail/system_parameters_impl.hpp" #include +#include #include @@ -28,7 +29,7 @@ system_parameters_impl::system_parameters_impl() { using daal::services::Environment; Environment * env = Environment::getInstance(); - sys_info_["top_enabled_cpu_extension"] = from_daal_cpu_type(daal::CpuType(env->getCpuId())); + sys_info_["top_enabled_cpu_extension"] = from_daal_cpu_type(DAAL_KERNEL_BUILD_MAX_INSTRUCTION_SET_ID); sys_info_["max_number_of_threads"] = static_cast(env->getNumberOfThreads()); } @@ -40,7 +41,7 @@ std::uint32_t system_parameters_impl::get_max_number_of_threads() const { return std::any_cast(sys_info_.find("max_number_of_threads")->second); } -void system_parameters_impl::print_any(const std::any& value, std::stringstream& ss) const { +void system_parameters_impl::print_any(const std::any& value, std::ostringstream& ss) const { const std::type_info& ti = value.type(); if (ti == typeid(cpu_extension)) { ss << to_string(std::any_cast(value)); @@ -53,7 +54,7 @@ void system_parameters_impl::print_any(const std::any& value, std::stringstream& } std::string system_parameters_impl::dump() const { - std::stringstream ss; + std::ostringstream ss; for (auto it = sys_info_.begin(); it != sys_info_.end(); ++it) { ss << it->first << " : "; print_any(it->second, ss); diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.hpp b/cpp/oneapi/dal/detail/system_parameters_impl.hpp index a262fc3cf48..6fd86325d8b 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl.hpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl.hpp @@ -50,7 +50,7 @@ class system_parameters_impl { protected: std::map sys_info_; - void print_any(const std::any& value, std::stringstream& ss) const; + void print_any(const std::any& value, std::ostringstream& ss) const; }; } // namespace v1 diff --git a/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp b/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp index 647b2e3e603..fb41a080586 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp @@ -27,8 +27,9 @@ std::uint32_t system_parameters_impl::get_max_workgroup_size(sycl::queue& queue) } std::string system_parameters_impl::dump(sycl::queue& queue) const { - std::stringstream ss(dump()); - ss << "max_workgroup_size" << " : " << get_max_workgroup_size(queue) << " ; "; + std::ostringstream ss; + ss << "max_workgroup_size" << " : " << get_max_workgroup_size(queue) << "; "; + ss << dump(); return std::move(ss).str(); } From 474604b0de41ed2ce539233098a016efbcb6ec0f Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Wed, 17 Apr 2024 03:59:37 -0700 Subject: [PATCH 04/15] clang-format; Add missing includes --- cpp/oneapi/dal/algo/covariance/compute_types.cpp | 2 +- cpp/oneapi/dal/algo/decision_forest/infer_types.hpp | 1 + cpp/oneapi/dal/algo/linear_regression/train_types.hpp | 1 + cpp/oneapi/dal/detail/system_parameters.cpp | 3 ++- cpp/oneapi/dal/detail/system_parameters_impl.cpp | 11 ++++++----- cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp | 3 ++- 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/cpp/oneapi/dal/algo/covariance/compute_types.cpp b/cpp/oneapi/dal/algo/covariance/compute_types.cpp index 5f6b01178c7..58cf70661f1 100644 --- a/cpp/oneapi/dal/algo/covariance/compute_types.cpp +++ b/cpp/oneapi/dal/algo/covariance/compute_types.cpp @@ -59,7 +59,7 @@ struct compute_parameters_impl : public base { }; template -compute_parameters::compute_parameters() : dal::detail::system_parameters(), impl_(new compute_parameters_impl{}) {} +compute_parameters::compute_parameters() : impl_(new compute_parameters_impl{}) {} /// Choose the number of rows in the data block used in variance-covariance matrix computations on CPU. /// diff --git a/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp b/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp index a410b50a5db..4e78527e911 100644 --- a/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp +++ b/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp @@ -18,6 +18,7 @@ #pragma once #include "oneapi/dal/algo/decision_forest/common.hpp" +#include "oneapi/dal/detail/system_parameters.hpp" namespace oneapi::dal::decision_forest { diff --git a/cpp/oneapi/dal/algo/linear_regression/train_types.hpp b/cpp/oneapi/dal/algo/linear_regression/train_types.hpp index eb1b40c751c..0ae1efae8f6 100644 --- a/cpp/oneapi/dal/algo/linear_regression/train_types.hpp +++ b/cpp/oneapi/dal/algo/linear_regression/train_types.hpp @@ -17,6 +17,7 @@ #pragma once #include "oneapi/dal/algo/linear_regression/common.hpp" +#include "oneapi/dal/detail/system_parameters.hpp" namespace oneapi::dal::linear_regression { diff --git a/cpp/oneapi/dal/detail/system_parameters.cpp b/cpp/oneapi/dal/detail/system_parameters.cpp index 99b4681df84..344bbd2957c 100644 --- a/cpp/oneapi/dal/detail/system_parameters.cpp +++ b/cpp/oneapi/dal/detail/system_parameters.cpp @@ -20,7 +20,8 @@ namespace oneapi::dal { namespace detail { -system_parameters::system_parameters() : impl_(detail::pimpl(new system_parameters_impl())) {} +system_parameters::system_parameters() + : impl_(detail::pimpl(new system_parameters_impl())) {} cpu_extension system_parameters::get_top_enabled_cpu_extension() const { return impl_->get_top_enabled_cpu_extension(); diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.cpp b/cpp/oneapi/dal/detail/system_parameters_impl.cpp index 3e89c71d76b..696124c0348 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl.cpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl.cpp @@ -25,11 +25,11 @@ namespace oneapi::dal::detail { namespace v1 { -system_parameters_impl::system_parameters_impl() -{ +system_parameters_impl::system_parameters_impl() { using daal::services::Environment; - Environment * env = Environment::getInstance(); - sys_info_["top_enabled_cpu_extension"] = from_daal_cpu_type(DAAL_KERNEL_BUILD_MAX_INSTRUCTION_SET_ID); + Environment* env = Environment::getInstance(); + sys_info_["top_enabled_cpu_extension"] = + from_daal_cpu_type(DAAL_KERNEL_BUILD_MAX_INSTRUCTION_SET_ID); sys_info_["max_number_of_threads"] = static_cast(env->getNumberOfThreads()); } @@ -45,7 +45,8 @@ void system_parameters_impl::print_any(const std::any& value, std::ostringstream const std::type_info& ti = value.type(); if (ti == typeid(cpu_extension)) { ss << to_string(std::any_cast(value)); - } else if (ti == typeid(std::uint32_t)) { + } + else if (ti == typeid(std::uint32_t)) { ss << std::any_cast(value); } else { diff --git a/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp b/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp index fb41a080586..66585afd179 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp @@ -28,7 +28,8 @@ std::uint32_t system_parameters_impl::get_max_workgroup_size(sycl::queue& queue) std::string system_parameters_impl::dump(sycl::queue& queue) const { std::ostringstream ss; - ss << "max_workgroup_size" << " : " << get_max_workgroup_size(queue) << "; "; + ss << "max_workgroup_size" + << " : " << get_max_workgroup_size(queue) << "; "; ss << dump(); return std::move(ss).str(); } From c3776be0cd56b4d76b027d88aba2be8e1f46a7e3 Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Thu, 18 Apr 2024 02:56:17 -0700 Subject: [PATCH 05/15] Fix include name in cpu.hpp --- cpp/oneapi/dal/detail/cpu.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/oneapi/dal/detail/cpu.hpp b/cpp/oneapi/dal/detail/cpu.hpp index 0fcc3a2e9a5..70b14301892 100644 --- a/cpp/oneapi/dal/detail/cpu.hpp +++ b/cpp/oneapi/dal/detail/cpu.hpp @@ -16,7 +16,7 @@ #pragma once -#include +#include #include From 51f264948f973dbfc92c3b0e7aab823ffe9cc7d8 Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Fri, 19 Apr 2024 05:00:41 -0700 Subject: [PATCH 06/15] Return incorrectly deleted include back --- cpp/oneapi/dal/detail/cpu.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/oneapi/dal/detail/cpu.cpp b/cpp/oneapi/dal/detail/cpu.cpp index d5866a9d47d..cdcfc46e450 100644 --- a/cpp/oneapi/dal/detail/cpu.cpp +++ b/cpp/oneapi/dal/detail/cpu.cpp @@ -15,6 +15,7 @@ *******************************************************************************/ #include "oneapi/dal/detail/cpu.hpp" +#include namespace oneapi::dal::detail { namespace v1 { From 9a7eb9b7b1cca4c1055f04da717cae5b05dfd00f Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Mon, 22 Apr 2024 02:31:07 -0700 Subject: [PATCH 07/15] Fix build error in oneAPI examples --- cpp/oneapi/dal/detail/cpu.cpp | 17 ++++++++++++++++- cpp/oneapi/dal/detail/cpu.hpp | 17 +---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/cpp/oneapi/dal/detail/cpu.cpp b/cpp/oneapi/dal/detail/cpu.cpp index cdcfc46e450..f430b6c750d 100644 --- a/cpp/oneapi/dal/detail/cpu.cpp +++ b/cpp/oneapi/dal/detail/cpu.cpp @@ -20,6 +20,21 @@ namespace oneapi::dal::detail { namespace v1 { +cpu_extension from_daal_cpu_type(int cpu_type) { + daal::CpuType cpu = static_cast(cpu_type); + switch (cpu) { +#if defined(TARGET_X86_64) + case daal::sse2: return cpu_extension::sse2; + case daal::sse42: return cpu_extension::sse42; + case daal::avx2: return cpu_extension::avx2; + case daal::avx512: return cpu_extension::avx512; +#elif defined(TARGET_ARM) + case daal::sve: return cpu_extension::sve; +#endif + } + return cpu_extension::none; +} + cpu_extension detect_top_cpu_extension() { if (!__daal_serv_cpu_extensions_available()) { #if defined(TARGET_X86_64) @@ -28,7 +43,7 @@ cpu_extension detect_top_cpu_extension() { return detail::cpu_extension::sve; #endif } - const auto daal_cpu = (daal::CpuType)__daal_serv_cpu_detect(0); + const auto daal_cpu = __daal_serv_cpu_detect(0); return from_daal_cpu_type(daal_cpu); } diff --git a/cpp/oneapi/dal/detail/cpu.hpp b/cpp/oneapi/dal/detail/cpu.hpp index 70b14301892..ff19742232b 100644 --- a/cpp/oneapi/dal/detail/cpu.hpp +++ b/cpp/oneapi/dal/detail/cpu.hpp @@ -16,8 +16,6 @@ #pragma once -#include - #include // TODO: Clean up this redefinition and import the defines globally. @@ -46,20 +44,7 @@ enum class cpu_extension : uint64_t { #endif }; -inline constexpr cpu_extension from_daal_cpu_type(daal::CpuType cpu) { - switch (cpu) { -#if defined(TARGET_X86_64) - case daal::sse2: return cpu_extension::sse2; - case daal::sse42: return cpu_extension::sse42; - case daal::avx2: return cpu_extension::avx2; - case daal::avx512: return cpu_extension::avx512; -#elif defined(TARGET_ARM) - case daal::sve: return cpu_extension::sve; -#endif - } - return cpu_extension::none; -} - +cpu_extension from_daal_cpu_type(int); cpu_extension detect_top_cpu_extension(); } // namespace v1 From 849beb69edb873b3ae89713be09c4cd89b216694 Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Wed, 24 Apr 2024 02:29:53 -0700 Subject: [PATCH 08/15] Add EOL in the end of the files --- cpp/oneapi/dal/detail/system_parameters.hpp | 2 +- cpp/oneapi/dal/detail/system_parameters_dpc.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/oneapi/dal/detail/system_parameters.hpp b/cpp/oneapi/dal/detail/system_parameters.hpp index 3b7b020be19..14e90cf2117 100644 --- a/cpp/oneapi/dal/detail/system_parameters.hpp +++ b/cpp/oneapi/dal/detail/system_parameters.hpp @@ -50,4 +50,4 @@ class system_parameters : public base { }; } // namespace detail -} // namespace oneapi::dal \ No newline at end of file +} // namespace oneapi::dal diff --git a/cpp/oneapi/dal/detail/system_parameters_dpc.cpp b/cpp/oneapi/dal/detail/system_parameters_dpc.cpp index b2e29f5e425..410c3d7a358 100644 --- a/cpp/oneapi/dal/detail/system_parameters_dpc.cpp +++ b/cpp/oneapi/dal/detail/system_parameters_dpc.cpp @@ -29,4 +29,4 @@ std::string system_parameters::dump(sycl::queue& queue) const { } } // namespace detail -} // namespace oneapi::dal \ No newline at end of file +} // namespace oneapi::dal From c936722519da8e005fc8b071e88d0f634305cbed Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Wed, 24 Apr 2024 03:04:29 -0700 Subject: [PATCH 09/15] Add comments to system_parameters class --- cpp/oneapi/dal/detail/system_parameters.hpp | 23 ++++++++++++++++--- .../dal/detail/system_parameters_impl.hpp | 2 -- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/cpp/oneapi/dal/detail/system_parameters.hpp b/cpp/oneapi/dal/detail/system_parameters.hpp index 14e90cf2117..2a890c2f17f 100644 --- a/cpp/oneapi/dal/detail/system_parameters.hpp +++ b/cpp/oneapi/dal/detail/system_parameters.hpp @@ -25,23 +25,40 @@ namespace oneapi::dal { namespace detail { +/// Stores system-related parameters that affect the performance of the algorithms. +/// Those parameters can differ from the `get_global_context().get_cpu_info()`. +/// +/// `cpu_info` reports the parameters available in hardware, when `system_parameters` +/// are the software-enabled parameters that can differ from `cpu_info`. class system_parameters : public base { public: + /// Creates a new default ``system_parameters`` instance. explicit system_parameters(); - /// C++ related parameters + /// Host related parameters. + + /// Top enabled CPU instruction set. cpu_extension get_top_enabled_cpu_extension() const; + + /// Maximal number of threads available to the algorithm. std::uint32_t get_max_number_of_threads() const; #ifdef ONEDAL_DATA_PARALLEL - /// DPC++ related parameters + /// Device related parameters. + + /// Maximal SYCL workgroup size on the device. + /// + /// @param queue The SYCL* queue object std::uint32_t get_max_workgroup_size(sycl::queue& queue) const; #endif - /// Logging + /// Logs host parameters in the format: name_1: value_1; ... ; name_N: value_N. std::string dump() const; #ifdef ONEDAL_DATA_PARALLEL + /// Logs host and device parameters in the format: name_1: value_1; ... ; name_N: value_N. + /// + /// @param queue The SYCL* queue object std::string dump(sycl::queue& queue) const; #endif diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.hpp b/cpp/oneapi/dal/detail/system_parameters_impl.hpp index 6fd86325d8b..8de5c75da66 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl.hpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl.hpp @@ -36,11 +36,9 @@ class system_parameters_impl { std::uint32_t get_max_number_of_threads() const; #ifdef ONEDAL_DATA_PARALLEL - /// DPC++ related parameters std::uint32_t get_max_workgroup_size(sycl::queue& queue) const; #endif - /// Logging std::string dump() const; #ifdef ONEDAL_DATA_PARALLEL From a2fa159979933c9f3edadb5195ff39e32fc5b933 Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Thu, 25 Apr 2024 04:47:43 -0700 Subject: [PATCH 10/15] Implement the changes requested in code review --- cpp/oneapi/dal/detail/cpu_info.cpp | 8 ++++---- cpp/oneapi/dal/detail/cpu_info_impl.cpp | 12 ++++++------ cpp/oneapi/dal/detail/cpu_info_impl.hpp | 4 ++-- cpp/oneapi/dal/detail/system_parameters.cpp | 2 +- cpp/oneapi/dal/detail/system_parameters.hpp | 4 ++-- cpp/oneapi/dal/detail/system_parameters_impl.cpp | 6 +++--- cpp/oneapi/dal/detail/system_parameters_impl.hpp | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/cpp/oneapi/dal/detail/cpu_info.cpp b/cpp/oneapi/dal/detail/cpu_info.cpp index c73c241b553..0fad80d157d 100644 --- a/cpp/oneapi/dal/detail/cpu_info.cpp +++ b/cpp/oneapi/dal/detail/cpu_info.cpp @@ -29,17 +29,17 @@ namespace v1 { cpu_info::cpu_info() { #if defined(TARGET_X86_64) - impl_ = detail::pimpl(new cpu_info_x86()); + impl_ = detail::pimpl(std::make_unique()); #elif defined(TARGET_ARM) - impl_ = detail::pimpl(new cpu_info_arm()); + impl_ = detail::pimpl(std::make_unique()); #endif } cpu_info::cpu_info(const cpu_extension cpu_extension_) { #if defined(TARGET_X86_64) - impl_ = detail::pimpl(new cpu_info_x86(cpu_extension_)); + impl_ = detail::pimpl(std::make_unique(cpu_extension_)); #elif defined(TARGET_ARM) - impl_ = detail::pimpl(new cpu_info_arm(cpu_extension_)); + impl_ = detail::pimpl(std::make_unique(cpu_extension_)); #endif } diff --git a/cpp/oneapi/dal/detail/cpu_info_impl.cpp b/cpp/oneapi/dal/detail/cpu_info_impl.cpp index 876e66e3f62..8b894091e5c 100644 --- a/cpp/oneapi/dal/detail/cpu_info_impl.cpp +++ b/cpp/oneapi/dal/detail/cpu_info_impl.cpp @@ -58,22 +58,22 @@ cpu_extension cpu_info_impl::get_top_cpu_extension() const { } std::string cpu_info_impl::dump() const { - std::stringstream ss; - for (auto it = info_.begin(); it != info_.end(); ++it) { - ss << it->first << " : "; - print_any(it->second, ss); + std::ostringstream ss; + for (auto const &[name, value] : info_) { + ss << name << " : "; + print_any(value, ss); ss << "; "; } return std::move(ss).str(); } template -void cpu_info_impl::print(const std::any& value, std::stringstream& ss) const { +void cpu_info_impl::print(const std::any& value, std::ostringstream& ss) const { T typed_value = std::any_cast(value); ss << to_string(typed_value); } -void cpu_info_impl::print_any(const std::any& value, std::stringstream& ss) const { +void cpu_info_impl::print_any(const std::any& value, std::ostringstream& ss) const { const std::type_info& ti = value.type(); if (ti == typeid(cpu_extension)) { print(value, ss); diff --git a/cpp/oneapi/dal/detail/cpu_info_impl.hpp b/cpp/oneapi/dal/detail/cpu_info_impl.hpp index 2f5c7ea711f..76b395b316c 100644 --- a/cpp/oneapi/dal/detail/cpu_info_impl.hpp +++ b/cpp/oneapi/dal/detail/cpu_info_impl.hpp @@ -40,9 +40,9 @@ class cpu_info_impl : public cpu_info_iface { std::map info_; template - void print(const std::any& value, std::stringstream& ss) const; + void print(const std::any& value, std::ostringstream& ss) const; - void print_any(const std::any& value, std::stringstream& ss) const; + void print_any(const std::any& value, std::ostringstream& ss) const; }; } // namespace v1 diff --git a/cpp/oneapi/dal/detail/system_parameters.cpp b/cpp/oneapi/dal/detail/system_parameters.cpp index 344bbd2957c..15e37756692 100644 --- a/cpp/oneapi/dal/detail/system_parameters.cpp +++ b/cpp/oneapi/dal/detail/system_parameters.cpp @@ -21,7 +21,7 @@ namespace oneapi::dal { namespace detail { system_parameters::system_parameters() - : impl_(detail::pimpl(new system_parameters_impl())) {} + : impl_(detail::pimpl(std::make_unique())) {} cpu_extension system_parameters::get_top_enabled_cpu_extension() const { return impl_->get_top_enabled_cpu_extension(); diff --git a/cpp/oneapi/dal/detail/system_parameters.hpp b/cpp/oneapi/dal/detail/system_parameters.hpp index 2a890c2f17f..872d3d9bd70 100644 --- a/cpp/oneapi/dal/detail/system_parameters.hpp +++ b/cpp/oneapi/dal/detail/system_parameters.hpp @@ -28,11 +28,11 @@ namespace detail { /// Stores system-related parameters that affect the performance of the algorithms. /// Those parameters can differ from the `get_global_context().get_cpu_info()`. /// -/// `cpu_info` reports the parameters available in hardware, when `system_parameters` +/// `cpu_info` reports the parameters available in hardware, where `system_parameters` /// are the software-enabled parameters that can differ from `cpu_info`. class system_parameters : public base { public: - /// Creates a new default ``system_parameters`` instance. + /// Creates a new default `system_parameters` instance. explicit system_parameters(); /// Host related parameters. diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.cpp b/cpp/oneapi/dal/detail/system_parameters_impl.cpp index 696124c0348..ede5462a3d5 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl.cpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl.cpp @@ -56,9 +56,9 @@ void system_parameters_impl::print_any(const std::any& value, std::ostringstream std::string system_parameters_impl::dump() const { std::ostringstream ss; - for (auto it = sys_info_.begin(); it != sys_info_.end(); ++it) { - ss << it->first << " : "; - print_any(it->second, ss); + for (auto const &[name, value] : sys_info_) { + ss << name << " : "; + print_any(value, ss); ss << "; "; } return std::move(ss).str(); diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.hpp b/cpp/oneapi/dal/detail/system_parameters_impl.hpp index 8de5c75da66..57da24d7bc6 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl.hpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl.hpp @@ -45,7 +45,7 @@ class system_parameters_impl { std::string dump(sycl::queue& queue) const; #endif -protected: +private: std::map sys_info_; void print_any(const std::any& value, std::ostringstream& ss) const; From 18497e8dd0f19adcec24d26dd86cf7a3ff21e364 Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Fri, 26 Apr 2024 01:28:45 -0700 Subject: [PATCH 11/15] clang-format --- cpp/oneapi/dal/detail/cpu_info_impl.cpp | 2 +- cpp/oneapi/dal/detail/system_parameters.cpp | 3 ++- cpp/oneapi/dal/detail/system_parameters_impl.cpp | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cpp/oneapi/dal/detail/cpu_info_impl.cpp b/cpp/oneapi/dal/detail/cpu_info_impl.cpp index 8b894091e5c..45183d1b82b 100644 --- a/cpp/oneapi/dal/detail/cpu_info_impl.cpp +++ b/cpp/oneapi/dal/detail/cpu_info_impl.cpp @@ -59,7 +59,7 @@ cpu_extension cpu_info_impl::get_top_cpu_extension() const { std::string cpu_info_impl::dump() const { std::ostringstream ss; - for (auto const &[name, value] : info_) { + for (auto const& [name, value] : info_) { ss << name << " : "; print_any(value, ss); ss << "; "; diff --git a/cpp/oneapi/dal/detail/system_parameters.cpp b/cpp/oneapi/dal/detail/system_parameters.cpp index 15e37756692..22e5cc2e9e8 100644 --- a/cpp/oneapi/dal/detail/system_parameters.cpp +++ b/cpp/oneapi/dal/detail/system_parameters.cpp @@ -21,7 +21,8 @@ namespace oneapi::dal { namespace detail { system_parameters::system_parameters() - : impl_(detail::pimpl(std::make_unique())) {} + : impl_(detail::pimpl(std::make_unique())) { +} cpu_extension system_parameters::get_top_enabled_cpu_extension() const { return impl_->get_top_enabled_cpu_extension(); diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.cpp b/cpp/oneapi/dal/detail/system_parameters_impl.cpp index ede5462a3d5..8f731d2df31 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl.cpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl.cpp @@ -56,7 +56,7 @@ void system_parameters_impl::print_any(const std::any& value, std::ostringstream std::string system_parameters_impl::dump() const { std::ostringstream ss; - for (auto const &[name, value] : sys_info_) { + for (auto const& [name, value] : sys_info_) { ss << name << " : "; print_any(value, ss); ss << "; "; From 72ed679d85ea0d7176c1d219921edc88cbd4af48 Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Tue, 30 Apr 2024 02:01:16 -0700 Subject: [PATCH 12/15] Fix DPC++ tests failures and Coverity failures --- cpp/oneapi/dal/detail/cpu_info_impl.cpp | 12 +++++- cpp/oneapi/dal/detail/system_parameters.cpp | 12 ++++++ .../dal/detail/system_parameters_dpc.cpp | 32 ---------------- .../dal/detail/system_parameters_impl.cpp | 29 +++++++++++++- .../dal/detail/system_parameters_impl_dpc.cpp | 38 ------------------- 5 files changed, 49 insertions(+), 74 deletions(-) delete mode 100644 cpp/oneapi/dal/detail/system_parameters_dpc.cpp delete mode 100644 cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp diff --git a/cpp/oneapi/dal/detail/cpu_info_impl.cpp b/cpp/oneapi/dal/detail/cpu_info_impl.cpp index 9cdd6bdf384..8af80578a0c 100644 --- a/cpp/oneapi/dal/detail/cpu_info_impl.cpp +++ b/cpp/oneapi/dal/detail/cpu_info_impl.cpp @@ -53,11 +53,19 @@ std::string to_string(cpu_extension extension) { } cpu_vendor cpu_info_impl::get_cpu_vendor() const { - return std::any_cast(info_.find("vendor")->second); + const auto entry = info_.find("vendor"); + if (entry == info_.end()) { + throw invalid_argument{ error_messages::invalid_key() }; + } + return std::any_cast(entry->second); } cpu_extension cpu_info_impl::get_top_cpu_extension() const { - return std::any_cast(info_.find("top_cpu_extension")->second); + const auto entry = info_.find("top_cpu_extension"); + if (entry == info_.end()) { + throw invalid_argument{ error_messages::invalid_key() }; + } + return std::any_cast(entry->second); } std::string cpu_info_impl::dump() const { diff --git a/cpp/oneapi/dal/detail/system_parameters.cpp b/cpp/oneapi/dal/detail/system_parameters.cpp index 22e5cc2e9e8..1c9fb4a22e3 100644 --- a/cpp/oneapi/dal/detail/system_parameters.cpp +++ b/cpp/oneapi/dal/detail/system_parameters.cpp @@ -36,5 +36,17 @@ std::string system_parameters::dump() const { return impl_->dump(); } +#ifdef ONEDAL_DATA_PARALLEL + +std::uint32_t system_parameters::get_max_workgroup_size(sycl::queue& queue) const { + return impl_->get_max_workgroup_size(queue); +} + +std::string system_parameters::dump(sycl::queue& queue) const { + return impl_->dump(queue); +} + +#endif + } // namespace detail } // namespace oneapi::dal diff --git a/cpp/oneapi/dal/detail/system_parameters_dpc.cpp b/cpp/oneapi/dal/detail/system_parameters_dpc.cpp deleted file mode 100644 index 410c3d7a358..00000000000 --- a/cpp/oneapi/dal/detail/system_parameters_dpc.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* -* Copyright contributors to the oneDAL project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*******************************************************************************/ - -#include "oneapi/dal/detail/system_parameters.hpp" - -namespace oneapi::dal { - -namespace detail { - -std::uint32_t system_parameters::get_max_workgroup_size(sycl::queue& queue) const { - return impl_->get_max_workgroup_size(queue); -} - -std::string system_parameters::dump(sycl::queue& queue) const { - return impl_->dump(queue); -} - -} // namespace detail -} // namespace oneapi::dal diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.cpp b/cpp/oneapi/dal/detail/system_parameters_impl.cpp index 8f731d2df31..7e89cebc1f4 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl.cpp +++ b/cpp/oneapi/dal/detail/system_parameters_impl.cpp @@ -14,6 +14,7 @@ * limitations under the License. *******************************************************************************/ +#include "oneapi/dal/backend/common.hpp" #include "oneapi/dal/detail/cpu_info_impl.hpp" #include "oneapi/dal/detail/error_messages.hpp" #include "oneapi/dal/detail/system_parameters_impl.hpp" @@ -34,11 +35,19 @@ system_parameters_impl::system_parameters_impl() { } cpu_extension system_parameters_impl::get_top_enabled_cpu_extension() const { - return std::any_cast(sys_info_.find("top_enabled_cpu_extension")->second); + const auto entry = sys_info_.find("top_enabled_cpu_extension"); + if (entry == sys_info_.end()) { + throw invalid_argument{ error_messages::invalid_key() }; + } + return std::any_cast(entry->second); } std::uint32_t system_parameters_impl::get_max_number_of_threads() const { - return std::any_cast(sys_info_.find("max_number_of_threads")->second); + const auto entry = sys_info_.find("max_number_of_threads"); + if (entry == sys_info_.end()) { + throw invalid_argument{ error_messages::invalid_key() }; + } + return std::any_cast(entry->second); } void system_parameters_impl::print_any(const std::any& value, std::ostringstream& ss) const { @@ -64,5 +73,21 @@ std::string system_parameters_impl::dump() const { return std::move(ss).str(); } +#ifdef ONEDAL_DATA_PARALLEL + +std::uint32_t system_parameters_impl::get_max_workgroup_size(sycl::queue& queue) const { + return dal::backend::device_max_wg_size(queue); +} + +std::string system_parameters_impl::dump(sycl::queue& queue) const { + std::ostringstream ss; + ss << "max_workgroup_size" + << " : " << get_max_workgroup_size(queue) << "; "; + ss << dump(); + return std::move(ss).str(); +} + +#endif + } // namespace v1 } // namespace oneapi::dal::detail diff --git a/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp b/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp deleted file mode 100644 index 66585afd179..00000000000 --- a/cpp/oneapi/dal/detail/system_parameters_impl_dpc.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* -* Copyright contributors to the oneDAL project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*******************************************************************************/ - -#include "oneapi/dal/detail/system_parameters_impl.hpp" -#include "oneapi/dal/backend/common.hpp" - -#include - -namespace oneapi::dal::detail { -namespace v1 { - -std::uint32_t system_parameters_impl::get_max_workgroup_size(sycl::queue& queue) const { - return dal::backend::device_max_wg_size(queue); -} - -std::string system_parameters_impl::dump(sycl::queue& queue) const { - std::ostringstream ss; - ss << "max_workgroup_size" - << " : " << get_max_workgroup_size(queue) << "; "; - ss << dump(); - return std::move(ss).str(); -} - -} // namespace v1 -} // namespace oneapi::dal::detail From 81359a774358972ef757d8977166b24253efb5f5 Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Tue, 7 May 2024 05:13:50 -0700 Subject: [PATCH 13/15] Add system_parameters related symbols into onedal_parameters libs --- cpp/oneapi/dal/BUILD | 3 +++ cpp/oneapi/dal/algo/covariance/BUILD | 1 + cpp/oneapi/dal/algo/covariance/compute_types.hpp | 2 +- cpp/oneapi/dal/algo/decision_forest/BUILD | 1 + .../dal/algo/decision_forest/infer_types.hpp | 2 +- cpp/oneapi/dal/algo/linear_regression/BUILD | 1 + .../dal/algo/linear_regression/train_types.hpp | 2 +- cpp/oneapi/dal/detail/parameters/BUILD | 15 +++++++++++++++ .../detail/{ => parameters}/system_parameters.cpp | 2 +- .../detail/{ => parameters}/system_parameters.hpp | 2 +- .../{ => parameters}/system_parameters_impl.cpp | 2 +- .../{ => parameters}/system_parameters_impl.hpp | 0 12 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 cpp/oneapi/dal/detail/parameters/BUILD rename cpp/oneapi/dal/detail/{ => parameters}/system_parameters.cpp (96%) rename cpp/oneapi/dal/detail/{ => parameters}/system_parameters.hpp (97%) rename cpp/oneapi/dal/detail/{ => parameters}/system_parameters_impl.cpp (97%) rename cpp/oneapi/dal/detail/{ => parameters}/system_parameters_impl.hpp (100%) diff --git a/cpp/oneapi/dal/BUILD b/cpp/oneapi/dal/BUILD index 0bd5a48269d..ff6d770cc7c 100644 --- a/cpp/oneapi/dal/BUILD +++ b/cpp/oneapi/dal/BUILD @@ -65,6 +65,7 @@ dal_public_includes( ":optional", "@onedal//cpp/oneapi/dal/detail/mpi", "@onedal//cpp/oneapi/dal/detail/ccl", + "@onedal//cpp/oneapi/dal/detail/parameters", "@onedal//cpp/oneapi/dal/algo:parameters", ], ) @@ -84,6 +85,7 @@ dal_static_lib( dal_deps = [ ":static", "@onedal//cpp/oneapi/dal/algo:parameters", + "@onedal//cpp/oneapi/dal/detail/parameters", ], ) @@ -102,6 +104,7 @@ dal_dynamic_lib( dal_deps = [ ":dynamic", "@onedal//cpp/oneapi/dal/algo:parameters", + "@onedal//cpp/oneapi/dal/detail/parameters", ], ) diff --git a/cpp/oneapi/dal/algo/covariance/BUILD b/cpp/oneapi/dal/algo/covariance/BUILD index 2770e6fc9aa..f09be772709 100644 --- a/cpp/oneapi/dal/algo/covariance/BUILD +++ b/cpp/oneapi/dal/algo/covariance/BUILD @@ -16,6 +16,7 @@ dal_module( name = "parameters", dal_deps = [ "@onedal//cpp/oneapi/dal/algo/covariance/parameters", + "@onedal//cpp/oneapi/dal/detail/parameters", ], ) diff --git a/cpp/oneapi/dal/algo/covariance/compute_types.hpp b/cpp/oneapi/dal/algo/covariance/compute_types.hpp index deaf59cdd65..33f7e3d73e0 100644 --- a/cpp/oneapi/dal/algo/covariance/compute_types.hpp +++ b/cpp/oneapi/dal/algo/covariance/compute_types.hpp @@ -17,7 +17,7 @@ #pragma once #include "oneapi/dal/algo/covariance/common.hpp" -#include "oneapi/dal/detail/system_parameters.hpp" +#include "oneapi/dal/detail/parameters/system_parameters.hpp" namespace oneapi::dal::covariance { diff --git a/cpp/oneapi/dal/algo/decision_forest/BUILD b/cpp/oneapi/dal/algo/decision_forest/BUILD index 159f9351ef9..8bd3d7ff0eb 100644 --- a/cpp/oneapi/dal/algo/decision_forest/BUILD +++ b/cpp/oneapi/dal/algo/decision_forest/BUILD @@ -17,6 +17,7 @@ dal_module( name = "parameters", dal_deps = [ "@onedal//cpp/oneapi/dal/algo/decision_forest/parameters", + "@onedal//cpp/oneapi/dal/detail/parameters", ], ) diff --git a/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp b/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp index 4e78527e911..ab962b4831d 100644 --- a/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp +++ b/cpp/oneapi/dal/algo/decision_forest/infer_types.hpp @@ -18,7 +18,7 @@ #pragma once #include "oneapi/dal/algo/decision_forest/common.hpp" -#include "oneapi/dal/detail/system_parameters.hpp" +#include "oneapi/dal/detail/parameters/system_parameters.hpp" namespace oneapi::dal::decision_forest { diff --git a/cpp/oneapi/dal/algo/linear_regression/BUILD b/cpp/oneapi/dal/algo/linear_regression/BUILD index e6ab83d5f19..94c5137b0b1 100644 --- a/cpp/oneapi/dal/algo/linear_regression/BUILD +++ b/cpp/oneapi/dal/algo/linear_regression/BUILD @@ -17,6 +17,7 @@ dal_module( name = "parameters", dal_deps = [ "@onedal//cpp/oneapi/dal/algo/linear_regression/parameters", + "@onedal//cpp/oneapi/dal/detail/parameters", ], ) diff --git a/cpp/oneapi/dal/algo/linear_regression/train_types.hpp b/cpp/oneapi/dal/algo/linear_regression/train_types.hpp index 0ae1efae8f6..cc96db9ccfb 100644 --- a/cpp/oneapi/dal/algo/linear_regression/train_types.hpp +++ b/cpp/oneapi/dal/algo/linear_regression/train_types.hpp @@ -17,7 +17,7 @@ #pragma once #include "oneapi/dal/algo/linear_regression/common.hpp" -#include "oneapi/dal/detail/system_parameters.hpp" +#include "oneapi/dal/detail/parameters/system_parameters.hpp" namespace oneapi::dal::linear_regression { diff --git a/cpp/oneapi/dal/detail/parameters/BUILD b/cpp/oneapi/dal/detail/parameters/BUILD new file mode 100644 index 00000000000..e0d6c7373ca --- /dev/null +++ b/cpp/oneapi/dal/detail/parameters/BUILD @@ -0,0 +1,15 @@ +load( + "@onedal//dev/bazel:dal.bzl", + "dal_module", + "dal_test_suite", +) + +package(default_visibility = ["//visibility:public"]) + +dal_module( + name = "parameters", + auto = True, + dal_deps = [ + "@onedal//cpp/oneapi/dal:common", + ] +) diff --git a/cpp/oneapi/dal/detail/system_parameters.cpp b/cpp/oneapi/dal/detail/parameters/system_parameters.cpp similarity index 96% rename from cpp/oneapi/dal/detail/system_parameters.cpp rename to cpp/oneapi/dal/detail/parameters/system_parameters.cpp index 1c9fb4a22e3..8216564d939 100644 --- a/cpp/oneapi/dal/detail/system_parameters.cpp +++ b/cpp/oneapi/dal/detail/parameters/system_parameters.cpp @@ -14,7 +14,7 @@ * limitations under the License. *******************************************************************************/ -#include "oneapi/dal/detail/system_parameters.hpp" +#include "oneapi/dal/detail/parameters/system_parameters.hpp" namespace oneapi::dal { diff --git a/cpp/oneapi/dal/detail/system_parameters.hpp b/cpp/oneapi/dal/detail/parameters/system_parameters.hpp similarity index 97% rename from cpp/oneapi/dal/detail/system_parameters.hpp rename to cpp/oneapi/dal/detail/parameters/system_parameters.hpp index 872d3d9bd70..b173edbfbf7 100644 --- a/cpp/oneapi/dal/detail/system_parameters.hpp +++ b/cpp/oneapi/dal/detail/parameters/system_parameters.hpp @@ -19,7 +19,7 @@ #include #include "oneapi/dal/detail/common.hpp" -#include "oneapi/dal/detail/system_parameters_impl.hpp" +#include "oneapi/dal/detail/parameters/system_parameters_impl.hpp" namespace oneapi::dal { diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.cpp b/cpp/oneapi/dal/detail/parameters/system_parameters_impl.cpp similarity index 97% rename from cpp/oneapi/dal/detail/system_parameters_impl.cpp rename to cpp/oneapi/dal/detail/parameters/system_parameters_impl.cpp index 7e89cebc1f4..14219a45226 100644 --- a/cpp/oneapi/dal/detail/system_parameters_impl.cpp +++ b/cpp/oneapi/dal/detail/parameters/system_parameters_impl.cpp @@ -17,7 +17,7 @@ #include "oneapi/dal/backend/common.hpp" #include "oneapi/dal/detail/cpu_info_impl.hpp" #include "oneapi/dal/detail/error_messages.hpp" -#include "oneapi/dal/detail/system_parameters_impl.hpp" +#include "oneapi/dal/detail/parameters/system_parameters_impl.hpp" #include #include diff --git a/cpp/oneapi/dal/detail/system_parameters_impl.hpp b/cpp/oneapi/dal/detail/parameters/system_parameters_impl.hpp similarity index 100% rename from cpp/oneapi/dal/detail/system_parameters_impl.hpp rename to cpp/oneapi/dal/detail/parameters/system_parameters_impl.hpp From e38d51e95c3da08339f0693d48348b76fbc241a5 Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Wed, 8 May 2024 03:21:26 -0700 Subject: [PATCH 14/15] Fix bazel build --- cpp/oneapi/dal/algo/covariance/BUILD | 1 + cpp/oneapi/dal/algo/decision_forest/BUILD | 1 + cpp/oneapi/dal/algo/linear_regression/BUILD | 1 + 3 files changed, 3 insertions(+) diff --git a/cpp/oneapi/dal/algo/covariance/BUILD b/cpp/oneapi/dal/algo/covariance/BUILD index f09be772709..3a5f16a283e 100644 --- a/cpp/oneapi/dal/algo/covariance/BUILD +++ b/cpp/oneapi/dal/algo/covariance/BUILD @@ -9,6 +9,7 @@ dal_module( auto = True, dal_deps = [ "@onedal//cpp/oneapi/dal:core", + "@onedal//cpp/oneapi/dal/detail/parameters", ], ) diff --git a/cpp/oneapi/dal/algo/decision_forest/BUILD b/cpp/oneapi/dal/algo/decision_forest/BUILD index 8bd3d7ff0eb..0a47587af06 100644 --- a/cpp/oneapi/dal/algo/decision_forest/BUILD +++ b/cpp/oneapi/dal/algo/decision_forest/BUILD @@ -10,6 +10,7 @@ dal_module( dal_deps = [ "@onedal//cpp/oneapi/dal:core", "@onedal//cpp/oneapi/dal/algo/decision_forest/backend:model_impl", + "@onedal//cpp/oneapi/dal/detail/parameters", ], ) diff --git a/cpp/oneapi/dal/algo/linear_regression/BUILD b/cpp/oneapi/dal/algo/linear_regression/BUILD index 94c5137b0b1..58a3ebf1ea4 100644 --- a/cpp/oneapi/dal/algo/linear_regression/BUILD +++ b/cpp/oneapi/dal/algo/linear_regression/BUILD @@ -10,6 +10,7 @@ dal_module( dal_deps = [ "@onedal//cpp/oneapi/dal:core", "@onedal//cpp/oneapi/dal/algo/linear_regression/backend:model_impl", + "@onedal//cpp/oneapi/dal/detail/parameters", ], ) From 511f814faed1d0be43cccfdb6ba5f160b6b518b1 Mon Sep 17 00:00:00 2001 From: Victoriya Fedotova Date: Mon, 13 May 2024 04:28:03 -0700 Subject: [PATCH 15/15] Fix parameters library build in makefile --- makefile | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/makefile b/makefile index 1ca3cd701f7..1006bfb00aa 100644 --- a/makefile +++ b/makefile @@ -563,14 +563,16 @@ ONEAPI.srcdirs.base := $(ONEAPI.srcdir) \ $(addprefix $(ONEAPI.srcdir)/io/, $(ONEAPI.IO)) ONEAPI.srcdirs.detail := $(foreach x,$(ONEAPI.srcdirs.base),$(shell find $x -maxdepth 1 -type d -name detail)) ONEAPI.srcdirs.backend := $(foreach x,$(ONEAPI.srcdirs.base),$(shell find $x -maxdepth 1 -type d -name backend)) -ONEAPI.srcdirs.parameters := $(foreach x,$(ONEAPI.srcdirs.base),$(shell find $x -maxdepth 1 -type d -name parameters)) +ONEAPI.srcdirs.parameters := $(ONEAPI.srcdir)/detail/parameters \ + $(foreach x,$(ONEAPI.srcdirs.base),$(shell find $x -maxdepth 1 -type d -name parameters)) ONEAPI.srcdirs := $(ONEAPI.srcdirs.base) $(ONEAPI.srcdirs.detail) $(ONEAPI.srcdirs.backend) $(ONEAPI.srcdirs.parameters) -ONEAPI.srcs.all.exclude := ! -path "*_test.*" ! -path "*/test/*" +ONEAPI.srcs.all.exclude := ! -path "*_test.*" ! -path "*/test/*" ! -path "*/detail/parameters/*" +ONEAPI.srcs.parameters.exclude := ! -path "*_test.*" ! -path "*/test/*" ONEAPI.srcs.all := $(foreach x,$(ONEAPI.srcdirs.base),$(shell find $x -maxdepth 1 -type f -name "*.cpp" $(ONEAPI.srcs.all.exclude))) \ $(foreach x,$(ONEAPI.srcdirs.detail),$(shell find $x -type f -name "*.cpp" $(ONEAPI.srcs.all.exclude))) \ $(foreach x,$(ONEAPI.srcdirs.backend),$(shell find $x -type f -name "*.cpp" $(ONEAPI.srcs.all.exclude))) \ - $(foreach x,$(ONEAPI.srcdirs.parameters),$(shell find $x -type f -name "*.cpp" $(ONEAPI.srcs.all.exclude))) + $(foreach x,$(ONEAPI.srcdirs.parameters),$(shell find $x -type f -name "*.cpp" $(ONEAPI.srcs.parameters.exclude))) ONEAPI.srcs.all := $(ONEAPI.srcs.all:./%=%) ONEAPI.srcs.dpc := $(filter %_dpc.cpp,$(ONEAPI.srcs.all)) ONEAPI.srcs := $(filter-out %_dpc.cpp,$(ONEAPI.srcs.all)) @@ -705,14 +707,14 @@ $(ONEAPI.objs_y.dpc): COPT += $(-fPIC) $(-cxx17) $(-DEBC) $(-EHsc) $(pedantic.op $(eval $(call update_copt_from_dispatcher_tag,$(ONEAPI.objs_y.dpc),.dpcpp)) # Filtering parameter files -PARAMETERS.objs_a.filtered := $(filter %parameters.$(o),$(ONEAPI.objs_a)) -ONEAPI.objs_a.filtered := $(filter-out %parameters.$(o),$(ONEAPI.objs_a)) -PARAMETERS.objs_y.filtered := $(filter %parameters.$(o),$(ONEAPI.objs_y)) -ONEAPI.objs_y.filtered := $(filter-out %parameters.$(o),$(ONEAPI.objs_y)) -PARAMETERS.objs_a.dpc.filtered := $(filter %parameters.$(o) %parameters_dpc.$(o),$(ONEAPI.objs_a.dpc)) -ONEAPI.objs_a.dpc.filtered := $(filter-out %parameters.$(o) %parameters_dpc.$(o),$(ONEAPI.objs_a.dpc)) -PARAMETERS.objs_y.dpc.filtered := $(filter %parameters.$(o) %parameters_dpc.$(o),$(ONEAPI.objs_y.dpc)) -ONEAPI.objs_y.dpc.filtered := $(filter-out %parameters.$(o) %parameters_dpc.$(o),$(ONEAPI.objs_y.dpc)) +PARAMETERS.objs_a.filtered := $(filter %parameters.$(o) %parameters_impl.$(o),$(ONEAPI.objs_a)) +ONEAPI.objs_a.filtered := $(filter-out %parameters.$(o) %parameters_impl.$(o),$(ONEAPI.objs_a)) +PARAMETERS.objs_y.filtered := $(filter %parameters.$(o) %parameters_impl.$(o),$(ONEAPI.objs_y)) +ONEAPI.objs_y.filtered := $(filter-out %parameters.$(o) %parameters_impl.$(o),$(ONEAPI.objs_y)) +PARAMETERS.objs_a.dpc.filtered := $(filter %parameters.$(o) %parameters_impl.$(o) %parameters_dpc.$(o),$(ONEAPI.objs_a.dpc)) +ONEAPI.objs_a.dpc.filtered := $(filter-out %parameters.$(o) %parameters_impl.$(o) %parameters_dpc.$(o),$(ONEAPI.objs_a.dpc)) +PARAMETERS.objs_y.dpc.filtered := $(filter %parameters.$(o) %parameters_impl.$(o) %parameters_dpc.$(o),$(ONEAPI.objs_y.dpc)) +ONEAPI.objs_y.dpc.filtered := $(filter-out %parameters.$(o) %parameters_impl.$(o) %parameters_dpc.$(o),$(ONEAPI.objs_y.dpc)) # Actual compilation $(foreach x,$(ONEAPI.objs_a.filtered),$(eval $(call .ONEAPI.compile,$x,$(ONEAPI.tmpdir_a),C)))