1
- // RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t.out
1
+ // RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -o %t.out
2
2
// RUN: env SYCL_DEVICE_TYPE=HOST %t.out
3
3
// RUN: %CPU_RUN_PLACEHOLDER %t.out
4
4
// RUN: %GPU_RUN_PLACEHOLDER %t.out
22
22
#include < iostream>
23
23
#include < numeric>
24
24
#include < vector>
25
+ #include < algorithm>
25
26
26
27
void checkHostAccessor (cl::sycl::queue &q) {
27
- std::size_t size =
28
- q.get_device ().get_info <cl::sycl::info::device::mem_base_addr_align>() /
29
- 8 ;
28
+ std::size_t subbuf_align =
29
+ q.get_device ().
30
+ get_info<cl::sycl::info::device::mem_base_addr_align>() / 8 ;
31
+ std::size_t size = subbuf_align;
32
+ size = std::max (size, 10 * 2 * sizeof (int )); // hold at least 20 elements
30
33
size /= sizeof (int );
31
34
size *= 2 ;
35
+
32
36
std::vector<int > data (size);
33
37
std::iota (data.begin (), data.end (), 0 );
34
38
{
35
39
cl::sycl::buffer<int , 1 > buf (data.data (), size);
36
- cl::sycl::buffer<int , 1 > subbuf (buf, {size / 2 }, {10 });
40
+ cl::sycl::buffer<int , 1 > subbuf (buf, {size /2 }, {10 });
37
41
38
42
{
39
43
auto host_acc = subbuf.get_access <cl::sycl::access::mode::write>();
@@ -59,9 +63,11 @@ void checkHostAccessor(cl::sycl::queue &q) {
59
63
}
60
64
61
65
void check1DSubBuffer (cl::sycl::queue &q) {
62
- std::size_t size =
63
- q.get_device ().get_info <cl::sycl::info::device::mem_base_addr_align>() /
64
- 8 ;
66
+ std::size_t subbuf_align =
67
+ q.get_device ().
68
+ get_info<cl::sycl::info::device::mem_base_addr_align>() / 8 ;
69
+ std::size_t size = subbuf_align;
70
+ size = std::max (size, 32 * sizeof (int )); // hold at least 32 elements
65
71
size /= sizeof (int );
66
72
size *= 2 ;
67
73
0 commit comments