[SYCL] Explictly use first dimension of ranges
This commit is contained in:
parent
1e976ff150
commit
db01715806
@ -87,7 +87,7 @@ void SYCLStream<T>::copy()
|
|||||||
cgh.parallel_for<copy_kernel>(p->get_kernel<copy_kernel>(),
|
cgh.parallel_for<copy_kernel>(p->get_kernel<copy_kernel>(),
|
||||||
range<1>{array_size}, [=](item<1> item)
|
range<1>{array_size}, [=](item<1> item)
|
||||||
{
|
{
|
||||||
auto id = item.get();
|
auto id = item.get()[0];
|
||||||
kc[id] = ka[id];
|
kc[id] = ka[id];
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -105,7 +105,7 @@ void SYCLStream<T>::mul()
|
|||||||
cgh.parallel_for<mul_kernel>(p->get_kernel<mul_kernel>(),
|
cgh.parallel_for<mul_kernel>(p->get_kernel<mul_kernel>(),
|
||||||
range<1>{array_size}, [=](item<1> item)
|
range<1>{array_size}, [=](item<1> item)
|
||||||
{
|
{
|
||||||
auto id = item.get();
|
auto id = item.get()[0];
|
||||||
kb[id] = scalar * kc[id];
|
kb[id] = scalar * kc[id];
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -123,7 +123,7 @@ void SYCLStream<T>::add()
|
|||||||
cgh.parallel_for<add_kernel>(p->get_kernel<add_kernel>(),
|
cgh.parallel_for<add_kernel>(p->get_kernel<add_kernel>(),
|
||||||
range<1>{array_size}, [=](item<1> item)
|
range<1>{array_size}, [=](item<1> item)
|
||||||
{
|
{
|
||||||
auto id = item.get();
|
auto id = item.get()[0];
|
||||||
kc[id] = ka[id] + kb[id];
|
kc[id] = ka[id] + kb[id];
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -142,7 +142,7 @@ void SYCLStream<T>::triad()
|
|||||||
cgh.parallel_for<triad_kernel>(p->get_kernel<triad_kernel>(),
|
cgh.parallel_for<triad_kernel>(p->get_kernel<triad_kernel>(),
|
||||||
range<1>{array_size}, [=](item<1> item)
|
range<1>{array_size}, [=](item<1> item)
|
||||||
{
|
{
|
||||||
auto id = item.get();
|
auto id = item.get()[0];
|
||||||
ka[id] = kb[id] + scalar * kc[id];
|
ka[id] = kb[id] + scalar * kc[id];
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -167,11 +167,14 @@ T SYCLStream<T>::dot()
|
|||||||
{
|
{
|
||||||
size_t i = item.get_global(0);
|
size_t i = item.get_global(0);
|
||||||
size_t li = item.get_local(0);
|
size_t li = item.get_local(0);
|
||||||
|
size_t global_size = item.get_global_range()[0];
|
||||||
|
|
||||||
wg_sum[li] = 0.0;
|
wg_sum[li] = 0.0;
|
||||||
for (; i < N; i += item.get_global_range()[0])
|
for (; i < N; i += global_size)
|
||||||
wg_sum[li] += ka[i] * kb[i];
|
wg_sum[li] += ka[i] * kb[i];
|
||||||
|
|
||||||
for (int offset = item.get_local_range()[0] / 2; offset > 0; offset /= 2)
|
size_t local_size = item.get_local_range()[0];
|
||||||
|
for (int offset = local_size / 2; offset > 0; offset /= 2)
|
||||||
{
|
{
|
||||||
item.barrier(cl::sycl::access::fence_space::local_space);
|
item.barrier(cl::sycl::access::fence_space::local_space);
|
||||||
if (li < offset)
|
if (li < offset)
|
||||||
@ -204,10 +207,10 @@ void SYCLStream<T>::init_arrays(T initA, T initB, T initC)
|
|||||||
cgh.parallel_for<init_kernel>(p->get_kernel<init_kernel>(),
|
cgh.parallel_for<init_kernel>(p->get_kernel<init_kernel>(),
|
||||||
range<1>{array_size}, [=](item<1> item)
|
range<1>{array_size}, [=](item<1> item)
|
||||||
{
|
{
|
||||||
auto id = item.get();
|
auto id = item.get()[0];
|
||||||
ka[id[0]] = initA;
|
ka[id] = initA;
|
||||||
kb[id[0]] = initB;
|
kb[id] = initB;
|
||||||
kc[id[0]] = initC;
|
kc[id] = initC;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
queue->wait();
|
queue->wait();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user