From 2256fae4e78baadcacaec4884327149384c0de5c Mon Sep 17 00:00:00 2001 From: tapplencourt Date: Thu, 29 Jan 2026 20:54:28 +0000 Subject: [PATCH] Update Context Constructor --- include/simsycl/sycl/context.hh | 5 +++++ src/simsycl/context.cc | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/include/simsycl/sycl/context.hh b/include/simsycl/sycl/context.hh index 7c7a0c9..36bd7cf 100644 --- a/include/simsycl/sycl/context.hh +++ b/include/simsycl/sycl/context.hh @@ -37,6 +37,11 @@ class context final : public detail::reference_type &device_list, async_handler async_handler, const property_list &prop_list = {}); + explicit context(const platform &plat, const property_list &prop_list = {}); + + explicit context( + const platform &plat, async_handler async_handler, const property_list &prop_list = {}); + backend get_backend() const noexcept { return backend::simsycl; } platform get_platform() const; diff --git a/src/simsycl/context.cc b/src/simsycl/context.cc index 9f23ba8..2e75b3e 100644 --- a/src/simsycl/context.cc +++ b/src/simsycl/context.cc @@ -1,5 +1,6 @@ #include "simsycl/sycl/context.hh" #include "simsycl/sycl/device.hh" +#include "simsycl/sycl/exception.hh" #include "simsycl/sycl/info.hh" #include "simsycl/sycl/platform.hh" #include "simsycl/system.hh" @@ -44,7 +45,9 @@ struct context_state { }; sycl::platform get_common_platform(const std::vector &devices) { - SIMSYCL_CHECK(!devices.empty()); // TODO throw instead + if(devices.empty()) { + throw sycl::exception(sycl::errc::invalid, "sycl::context: device list must not be empty"); + } const auto common = devices[0].get_platform(); for(size_t i = 1; i < devices.size(); ++i) { SIMSYCL_CHECK(devices[i].get_platform() == common); } return common; @@ -77,6 +80,12 @@ context::context(const std::vector &device_list, const property_list &pr context::context(const std::vector &device_list, async_handler async_handler, const property_list &prop_list) : context(internal, device_list, async_handler, prop_list) {} +context::context(const platform &plat, const property_list &prop_list) + : context(internal, plat.get_devices(), {}, prop_list) {} + +context::context(const platform &plat, async_handler async_handler, const property_list &prop_list) + : context(internal, plat.get_devices(), async_handler, prop_list) {} + template<> platform context::get_info() const { return state().platform;