@@ -889,6 +889,7 @@ class accessor :
889
889
getAdjustedMode (PropertyList),
890
890
detail::getSyclObjImpl (BufferRef).get (), AdjustedDim, sizeof (DataT),
891
891
BufferRef.OffsetInBytes , BufferRef.IsSubBuffer ) {
892
+ checkDeviceAccessorBufferSize (BufferRef.get_count ());
892
893
if (!IsPlaceH)
893
894
addHostAccessorAndWait (AccessorBaseHost::impl.get ());
894
895
#endif
@@ -912,6 +913,7 @@ class accessor :
912
913
getAdjustedMode (PropertyList),
913
914
detail::getSyclObjImpl (BufferRef).get (), Dimensions, sizeof (DataT),
914
915
BufferRef.OffsetInBytes , BufferRef.IsSubBuffer ) {
916
+ checkDeviceAccessorBufferSize (BufferRef.get_count ());
915
917
detail::associateWithHandler (CommandGroupHandler, this , AccessTarget);
916
918
}
917
919
#endif
@@ -935,6 +937,7 @@ class accessor :
935
937
getAdjustedMode (PropertyList),
936
938
detail::getSyclObjImpl (BufferRef).get (), Dimensions, sizeof (DataT),
937
939
BufferRef.OffsetInBytes , BufferRef.IsSubBuffer ) {
940
+ checkDeviceAccessorBufferSize (BufferRef.get_count ());
938
941
if (!IsPlaceH)
939
942
addHostAccessorAndWait (AccessorBaseHost::impl.get ());
940
943
}
@@ -972,6 +975,7 @@ class accessor :
972
975
getAdjustedMode (PropertyList),
973
976
detail::getSyclObjImpl (BufferRef).get (), Dimensions, sizeof (DataT),
974
977
BufferRef.OffsetInBytes , BufferRef.IsSubBuffer ) {
978
+ checkDeviceAccessorBufferSize (BufferRef.get_count ());
975
979
detail::associateWithHandler (CommandGroupHandler, this , AccessTarget);
976
980
}
977
981
#endif
@@ -1058,6 +1062,7 @@ class accessor :
1058
1062
detail::getSyclObjImpl (BufferRef).get (), Dimensions,
1059
1063
sizeof (DataT), BufferRef.OffsetInBytes ,
1060
1064
BufferRef.IsSubBuffer ) {
1065
+ checkDeviceAccessorBufferSize (BufferRef.get_count ());
1061
1066
if (!IsPlaceH)
1062
1067
addHostAccessorAndWait (AccessorBaseHost::impl.get ());
1063
1068
}
@@ -1097,6 +1102,7 @@ class accessor :
1097
1102
detail::getSyclObjImpl (BufferRef).get (), Dimensions,
1098
1103
sizeof (DataT), BufferRef.OffsetInBytes ,
1099
1104
BufferRef.IsSubBuffer ) {
1105
+ checkDeviceAccessorBufferSize (BufferRef.get_count ());
1100
1106
detail::associateWithHandler (CommandGroupHandler, this , AccessTarget);
1101
1107
}
1102
1108
#endif
@@ -1219,6 +1225,15 @@ class accessor :
1219
1225
1220
1226
bool operator ==(const accessor &Rhs) const { return impl == Rhs.impl ; }
1221
1227
bool operator !=(const accessor &Rhs) const { return !(*this == Rhs); }
1228
+
1229
+ private:
1230
+ void checkDeviceAccessorBufferSize (const size_t elemInBuffer) {
1231
+ if (!IsHostBuf && elemInBuffer == 0 )
1232
+ throw cl::sycl::invalid_object_error (
1233
+ " SYCL buffer size is zero. To create a device accessor, SYCL "
1234
+ " buffer size must be greater than zero." ,
1235
+ PI_INVALID_VALUE);
1236
+ }
1222
1237
};
1223
1238
1224
1239
#if __cplusplus > 201402L
0 commit comments