File tree 8 files changed +46
-5
lines changed
8 files changed +46
-5
lines changed Original file line number Diff line number Diff line change @@ -208,6 +208,11 @@ class __SYCL_EXPORT platform : public detail::OwnerLessBase<platform> {
208
208
209
209
std::vector<device> ext_oneapi_get_composite_devices () const ;
210
210
211
+ // / Returns a copy of the default context object for this platform.
212
+ // /
213
+ // / \return the default context
214
+ context khr_get_default_context () const ;
215
+
211
216
private:
212
217
ur_native_handle_t getNative () const ;
213
218
Original file line number Diff line number Diff line change @@ -85,7 +85,7 @@ class queue_impl {
85
85
context{createSyclObjFromImpl<device>(Device), {}, {}});
86
86
87
87
ContextImplPtr DefaultContext = detail::getSyclObjImpl (
88
- Device->get_platform ().ext_oneapi_get_default_context ());
88
+ Device->get_platform ().khr_get_default_context ());
89
89
if (DefaultContext->isDeviceValid (Device))
90
90
return DefaultContext;
91
91
return detail::getSyclObjImpl (
Original file line number Diff line number Diff line change @@ -117,6 +117,7 @@ inline namespace _V1 {
117
117
#define SYCL_KHR_FREE_FUNCTION_COMMANDS 1
118
118
// In progress yet
119
119
#define SYCL_EXT_ONEAPI_ATOMIC16 0
120
+ #define SYCL_KHR_DEFAULT_CONTEXT 1
120
121
121
122
#ifndef __has_include
122
123
#define __has_include (x ) 0
Original file line number Diff line number Diff line change @@ -87,10 +87,7 @@ platform::get_backend_info() const {
87
87
88
88
#undef __SYCL_PARAM_TRAITS_SPEC
89
89
90
- context platform::ext_oneapi_get_default_context () const {
91
- if (!detail::SYCLConfig<detail::SYCL_ENABLE_DEFAULT_CONTEXTS>::get ())
92
- throw std::runtime_error (" SYCL default contexts are not enabled" );
93
-
90
+ context platform::khr_get_default_context () const {
94
91
// Keeping the default context for platforms in the global cache to avoid
95
92
// shared_ptr based circular dependency between platform and context classes
96
93
std::unordered_map<detail::PlatformImplPtr, detail::ContextImplPtr>
@@ -109,6 +106,13 @@ context platform::ext_oneapi_get_default_context() const {
109
106
return detail::createSyclObjFromImpl<context>(It->second );
110
107
}
111
108
109
+ context platform::ext_oneapi_get_default_context () const {
110
+ if (!detail::SYCLConfig<detail::SYCL_ENABLE_DEFAULT_CONTEXTS>::get ())
111
+ throw std::runtime_error (" SYCL default contexts are not enabled" );
112
+
113
+ return khr_get_default_context ();
114
+ }
115
+
112
116
std::vector<device> platform::ext_oneapi_get_composite_devices () const {
113
117
// Only GPU architectures can be composite devices.
114
118
auto GPUDevices = get_devices (info::device_type::gpu);
Original file line number Diff line number Diff line change
1
+ // RUN: %{build} -o %t.out
2
+ // RUN: %{run} %t.out
3
+
4
+ // Test checks that the default context contains all of the root devices that
5
+ // are associated with this platform.
6
+
7
+ #include < algorithm>
8
+ #include < sycl/detail/core.hpp>
9
+
10
+ using namespace sycl ;
11
+
12
+ int main () {
13
+ auto platforms = platform::get_platforms ();
14
+
15
+ for (const auto &plt : platforms) {
16
+ auto def_ctx_devs = plt.khr_get_default_context ().get_devices ();
17
+ auto root_devs = plt.get_devices ();
18
+
19
+ for (const auto &dev : root_devs)
20
+ if (std::find (def_ctx_devs.begin (), def_ctx_devs.end (), dev) ==
21
+ def_ctx_devs.end ())
22
+ return 1 ;
23
+ }
24
+
25
+ return 0 ;
26
+ }
Original file line number Diff line number Diff line change @@ -4025,6 +4025,7 @@ _ZNK4sycl3_V18platform13has_extensionENS0_6detail11string_viewE
4025
4025
_ZNK4sycl3_V18platform16get_backend_infoINS0_4info6device15backend_versionEEENS0_6detail20is_backend_info_descIT_E11return_typeEv
4026
4026
_ZNK4sycl3_V18platform16get_backend_infoINS0_4info6device7versionEEENS0_6detail20is_backend_info_descIT_E11return_typeEv
4027
4027
_ZNK4sycl3_V18platform16get_backend_infoINS0_4info8platform7versionEEENS0_6detail20is_backend_info_descIT_E11return_typeEv
4028
+ _ZNK4sycl3_V18platform23khr_get_default_contextEv
4028
4029
_ZNK4sycl3_V18platform30ext_oneapi_get_default_contextEv
4029
4030
_ZNK4sycl3_V18platform32ext_oneapi_get_composite_devicesEv
4030
4031
_ZNK4sycl3_V18platform3getEv
Original file line number Diff line number Diff line change 3872
3872
?ext_oneapi_get_backend_content_view_impl@device_image_plain@detail@_V1@sycl@@IEBA?AU?$pair@PEBW4byte@std@@PEBW412@@std@@XZ
3873
3873
?ext_oneapi_get_composite_devices@platform@_V1@sycl@@QEBA?AV?$vector@Vdevice@_V1@sycl@@V?$allocator@Vdevice@_V1@sycl@@@std@@@std@@XZ
3874
3874
?ext_oneapi_get_default_context@platform@_V1@sycl@@QEBA?AVcontext@23@XZ
3875
+ ?khr_get_default_context@platform@_V1@sycl@@QEBA?AVcontext@23@XZ
3875
3876
?ext_oneapi_get_graph@queue@_V1@sycl@@QEBA?AV?$command_graph@$0A@@experimental@oneapi@ext@23@XZ
3876
3877
?ext_oneapi_get_kernel@kernel_bundle_plain@detail@_V1@sycl@@AEAA?AVkernel@34@Vstring_view@234@@Z
3877
3878
?ext_oneapi_get_kernel@kernel_bundle_plain@detail@_V1@sycl@@QEAA?AVkernel@34@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z
Original file line number Diff line number Diff line change @@ -36,6 +36,9 @@ void test_default_context_enabled() {
36
36
37
37
ASSERT_EQ (Dev1.get_platform ().ext_oneapi_get_default_context (),
38
38
Dev2.get_platform ().ext_oneapi_get_default_context ());
39
+
40
+ ASSERT_EQ (Dev1.get_platform ().khr_get_default_context (),
41
+ Dev2.get_platform ().khr_get_default_context ());
39
42
}
40
43
41
44
void test_default_context_disabled () {
You can’t perform that action at this time.
0 commit comments