@@ -35,36 +35,51 @@ ur_result_t setup_urDeviceGet(void *pParams) {
3535 }
3636 return UR_RESULT_SUCCESS;
3737}
38- ur_result_t setup_urDeviceGetInfo (void *pParams) {
38+
39+ template <bool VirtualMemSupported>
40+ ur_result_t after_urDeviceGetInfo_AllDevices (void *pParams) {
3941 auto params = *static_cast <ur_device_get_info_params_t *>(pParams);
4042 switch (*params.ppropName ) {
4143 case UR_DEVICE_INFO_VIRTUAL_MEMORY_SUPPORT: {
42- if (*params.ppPropValue ) {
43- if (*params.phDevice == GlobalDevicesHandle[0 ]) {
44- return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
44+ if (*params.ppPropValue )
45+ *static_cast <ur_bool_t *>(*params.ppPropValue ) = VirtualMemSupported;
46+ return UR_RESULT_SUCCESS;
47+ }
48+ default :;
49+ }
50+ return UR_RESULT_SUCCESS;
51+ }
52+
53+ template <bool VirtualMemSupported>
54+ ur_result_t after_urDeviceGetInfo_SingleDevice (void *pParams) {
55+ auto params = *static_cast <ur_device_get_info_params_t *>(pParams);
56+ switch (*params.ppropName ) {
57+ case UR_DEVICE_INFO_VIRTUAL_MEMORY_SUPPORT: {
58+ if (*params.ppPropValue ){
59+ if (*params.phDevice == GlobalDevicesHandle[0 ]){
60+ *static_cast <ur_bool_t *>(*params.ppPropValue ) = VirtualMemSupported;
4561 }
4662 }
47- break ;
48- }
49- default : {
50- break ;
63+ return UR_RESULT_SUCCESS;
5164 }
65+ default :;
5266 }
5367 return UR_RESULT_SUCCESS;
5468}
5569
5670TEST (VirtualMemoryMultipleDevices, ThrowExceptionForGetMemGranularityContext) {
5771
5872 sycl::unittest::UrMock<> Mock;
59- mock::getCallbacks ().set_replace_callback (" urDeviceGet" , &setup_urDeviceGet);
60- mock::getCallbacks ().set_replace_callback (" urDeviceGetInfo" ,
61- &setup_urDeviceGetInfo );
73+ mock::getCallbacks ().set_after_callback (" urDeviceGet" , &setup_urDeviceGet);
74+ mock::getCallbacks ().set_after_callback (" urDeviceGetInfo" ,
75+ &after_urDeviceGetInfo_SingleDevice< false > );
6276 sycl::platform Platform = sycl::platform ();
6377 sycl::context Context{Platform};
6478
6579 try {
6680 syclext::get_mem_granularity (Context,
6781 syclext::granularity_mode::recommended);
82+ FAIL () << " No exception thrown." ;
6883 } catch (sycl::exception &e) {
6984 EXPECT_EQ (e.code (), sycl::errc::feature_not_supported);
7085 EXPECT_STREQ (e.what (), " One or more devices in the context does not "
@@ -73,6 +88,7 @@ TEST(VirtualMemoryMultipleDevices, ThrowExceptionForGetMemGranularityContext) {
7388
7489 try {
7590 syclext::get_mem_granularity (Context, syclext::granularity_mode::minimum);
91+ FAIL () << " No exception thrown." ;
7692 } catch (sycl::exception &e) {
7793 EXPECT_EQ (e.code (), sycl::errc::feature_not_supported);
7894 EXPECT_STREQ (e.what (), " One or more devices in the context does not "
@@ -83,24 +99,27 @@ TEST(VirtualMemoryMultipleDevices, ThrowExceptionForGetMemGranularityContext) {
8399TEST (VirtualMemoryMultipleDevices, ThrowExceptionForGetMemGranularityDevice) {
84100
85101 sycl::unittest::UrMock<> Mock;
86- mock::getCallbacks ().set_replace_callback (" urDeviceGet" , &setup_urDeviceGet);
87- mock::getCallbacks ().set_replace_callback (" urDeviceGetInfo" ,
88- &setup_urDeviceGetInfo);
102+ mock::getCallbacks ().set_after_callback (" urDeviceGet" , &setup_urDeviceGet);
103+ mock::getCallbacks ().set_after_callback (" urDeviceGetInfo" ,
104+ &after_urDeviceGetInfo_AllDevices<false >);
105+
89106 sycl::platform Platform = sycl::platform ();
90107 sycl::context Context{Platform};
91108
92109 try {
93- syclext::get_mem_granularity (Context.get_devices (). front () , Context,
110+ syclext::get_mem_granularity (Context.get_devices ()[ 0 ] , Context,
94111 syclext::granularity_mode::recommended);
112+ FAIL () << " No exception thrown." ;
95113 } catch (sycl::exception &e) {
96114 EXPECT_EQ (e.code (), sycl::errc::feature_not_supported);
97115 EXPECT_STREQ (e.what (),
98116 " Device does not support aspect::ext_oneapi_virtual_mem." );
99117 }
100118
101119 try {
102- syclext::get_mem_granularity (Context.get_devices (). front () , Context,
120+ syclext::get_mem_granularity (Context.get_devices ()[ 0 ] , Context,
103121 syclext::granularity_mode::minimum);
122+ FAIL () << " No exception thrown." ;
104123 } catch (sycl::exception &e) {
105124 EXPECT_EQ (e.code (), sycl::errc::feature_not_supported);
106125 EXPECT_STREQ (e.what (),
@@ -111,14 +130,15 @@ TEST(VirtualMemoryMultipleDevices, ThrowExceptionForGetMemGranularityDevice) {
111130TEST (VirtualMemoryMultipleDevices, ReserveVirtualMemoryRange) {
112131
113132 sycl::unittest::UrMock<> Mock;
114- mock::getCallbacks ().set_replace_callback (" urDeviceGet" , &setup_urDeviceGet);
115- mock::getCallbacks ().set_replace_callback (" urDeviceGetInfo" ,
116- &setup_urDeviceGetInfo );
133+ mock::getCallbacks ().set_after_callback (" urDeviceGet" , &setup_urDeviceGet);
134+ mock::getCallbacks ().set_after_callback (" urDeviceGetInfo" ,
135+ &after_urDeviceGetInfo_SingleDevice< false > );
117136 sycl::platform Platform = sycl::platform ();
118137 sycl::context Context{Platform};
119138
120139 try {
121140 syclext::reserve_virtual_mem (0 , sizeof (int ), Context);
141+ FAIL () << " No exception thrown." ;
122142 } catch (sycl::exception &e) {
123143 EXPECT_EQ (e.code (), sycl::errc::feature_not_supported);
124144 EXPECT_STREQ (e.what (),
@@ -130,15 +150,16 @@ TEST(VirtualMemoryMultipleDevices, ReserveVirtualMemoryRange) {
130150TEST (VirtualMemoryMultipleDevices, ReservePhysicalMemory) {
131151
132152 sycl::unittest::UrMock<> Mock;
133- mock::getCallbacks ().set_replace_callback (" urDeviceGet" , &setup_urDeviceGet);
134- mock::getCallbacks ().set_replace_callback (" urDeviceGetInfo" ,
135- &setup_urDeviceGetInfo );
153+ mock::getCallbacks ().set_after_callback (" urDeviceGet" , &setup_urDeviceGet);
154+ mock::getCallbacks ().set_after_callback (" urDeviceGetInfo" ,
155+ &after_urDeviceGetInfo_AllDevices< false > );
136156 sycl::platform Platform = sycl::platform ();
137157 sycl::context Context{Platform};
138158
139159 try {
140- syclext::physical_mem PhysicalMem{Context.get_devices (). front () , Context,
160+ syclext::physical_mem PhysicalMem{Context.get_devices ()[ 0 ] , Context,
141161 sizeof (int )};
162+ FAIL () << " No exception thrown." ;
142163 } catch (sycl::exception &e) {
143164 EXPECT_EQ (e.code (), sycl::errc::feature_not_supported);
144165 EXPECT_STREQ (e.what (),
0 commit comments