@@ -16,33 +16,35 @@ int main() {
1616 sycl::queue Q;
1717 sycl::context Context = Q.get_context ();
1818 int Failed = 0 ;
19-
20- size_t UsedGranularityInBytes = syclext::get_mem_granularity (
19+ constexpr size_t NumberOfElements = 1000 ;
20+ size_t BytesRequired = NumberOfElements*sizeof (int );
21+
22+ size_t CtxGranularity = syclext::get_mem_granularity (
2123 Context, syclext::granularity_mode::recommended);
2224
25+ size_t AlignedByteSize = ((BytesRequired + CtxGranularity - 1 ) / CtxGranularity) * CtxGranularity;
26+
2327 syclext::physical_mem NewPhysicalMem{Q.get_device (), Context,
24- UsedGranularityInBytes };
28+ AlignedByteSize };
2529 uintptr_t VirtualMemoryPtr =
26- syclext::reserve_virtual_mem (0 , UsedGranularityInBytes , Context);
30+ syclext::reserve_virtual_mem (0 , AlignedByteSize , Context);
2731
2832 void *MappedPtr =
29- NewPhysicalMem.map (VirtualMemoryPtr, UsedGranularityInBytes ,
33+ NewPhysicalMem.map (VirtualMemoryPtr, AlignedByteSize ,
3034 syclext::address_access_mode::read_write);
3135
3236 int *DataPtr = reinterpret_cast <int *>(MappedPtr);
3337
34- sycl::range NumItems{UsedGranularityInBytes / sizeof (int )};
35-
36- std::vector<int > ResultHostData (NumItems.size ());
38+ std::vector<int > ResultHostData (NumberOfElements);
3739
3840 constexpr int ExpectedValueAfterFill = 1 ;
3941
40- Q.fill (DataPtr, ExpectedValueAfterFill, NumItems. size () ).wait_and_throw ();
42+ Q.fill (DataPtr, ExpectedValueAfterFill, NumberOfElements ).wait_and_throw ();
4143 {
4244 sycl::buffer<int > CheckBuffer (ResultHostData);
4345 Q.submit ([&](sycl::handler &Handle) {
4446 sycl::accessor A (CheckBuffer, Handle, sycl::write_only);
45- Handle.parallel_for (NumItems ,
47+ Handle.parallel_for (NumberOfElements ,
4648 [=](sycl::id<1 > Idx) { A[Idx] = DataPtr[Idx]; });
4749 });
4850 }
@@ -56,24 +58,24 @@ int main() {
5658 }
5759 }
5860
59- Q.parallel_for (NumItems , [=](sycl::id<1 > Idx) {
61+ Q.parallel_for (NumberOfElements , [=](sycl::id<1 > Idx) {
6062 DataPtr[Idx] = Idx;
6163 }).wait_and_throw ();
6264
63- syclext::set_access_mode (DataPtr, UsedGranularityInBytes ,
65+ syclext::set_access_mode (DataPtr, AlignedByteSize ,
6466 syclext::address_access_mode::read, Context);
6567
6668 {
6769 sycl::buffer<int > ResultBuffer (ResultHostData);
6870
6971 Q.submit ([&](sycl::handler &Handle) {
7072 sycl::accessor A (ResultBuffer, Handle, sycl::write_only);
71- Handle.parallel_for (NumItems ,
73+ Handle.parallel_for (NumberOfElements ,
7274 [=](sycl::id<1 > Idx) { A[Idx] = DataPtr[Idx]; });
7375 });
7476 }
7577
76- for (size_t i = 0 ; i < NumItems. size () ; i++) {
78+ for (size_t i = 0 ; i < NumberOfElements ; i++) {
7779 const int ExpectedValue = static_cast <int >(i);
7880 if (ResultHostData[i] != ExpectedValue) {
7981 std::cout << " Comparison failed at index " << i << " : "
@@ -82,8 +84,8 @@ int main() {
8284 }
8385 }
8486
85- syclext::unmap (MappedPtr, UsedGranularityInBytes , Context);
86- syclext::free_virtual_mem (VirtualMemoryPtr, UsedGranularityInBytes , Context);
87+ syclext::unmap (MappedPtr, AlignedByteSize , Context);
88+ syclext::free_virtual_mem (VirtualMemoryPtr, AlignedByteSize , Context);
8789
8890 return Failed;
8991}
0 commit comments