Skip to content

Commit bcce95d

Browse files
steffenlarsenbb-sycl
authored andcommitted
[SYCL] Replace std::fill in single_task with a fill command (intel#1049)
Some targets may not support std::fill in kernel code. This commit changes a number of std::fill in kernel code to be a fill command on queue. Signed-off-by: Larsen, Steffen <[email protected]>
1 parent cb6568c commit bcce95d

File tree

3 files changed

+9
-11
lines changed

3 files changed

+9
-11
lines changed

SYCL/Reduction/reduction_nd_N_queue_shortcut.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,18 @@ int test(queue &Q, BOpT1 BOp1, BOpT2 BOp2, const nd_range<Dims> &Range) {
6565
})
6666
.wait();
6767
} else if constexpr (TC == TestCase::Dependency) {
68-
auto E = Q.single_task([=]() {
69-
std::fill(Arr1, Arr1 + NElems, 1);
70-
std::fill(Arr2, Arr2 + NElems, 2);
71-
});
72-
Q.parallel_for(Range, E, R1, R2,
68+
auto E1 = Q.fill<T1>(Arr1, 1, NElems);
69+
auto E2 = Q.fill<T2>(Arr2, 2, NElems, E1);
70+
Q.parallel_for(Range, E2, R1, R2,
7371
[=](nd_item<Dims> It, auto &Sum1, auto &Sum2) {
7472
size_t LinId = It.get_global_linear_id();
7573
Sum1.combine(static_cast<T1>(LinId) + Arr1[LinId]);
7674
Sum2.combine(static_cast<T2>(LinId) + Arr2[LinId]);
7775
})
7876
.wait();
7977
} else {
80-
auto E1 = Q.single_task([=]() { std::fill(Arr1, Arr1 + NElems, 1); });
81-
auto E2 = Q.single_task([=]() { std::fill(Arr2, Arr2 + NElems, 2); });
78+
auto E1 = Q.fill<T1>(Arr1, 1, NElems);
79+
auto E2 = Q.fill<T2>(Arr2, 2, NElems);
8280
std::vector<event> EVec{E1, E2};
8381
Q.parallel_for(Range, EVec, R1, R2,
8482
[=](nd_item<Dims> It, auto &Sum1, auto &Sum2) {

SYCL/Reduction/reduction_nd_queue_shortcut.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ int test(queue &Q, BinaryOperation BOp, const nd_range<Dims> &Range) {
4545
Sum.combine(static_cast<T>(LinId) + Arr[LinId]);
4646
}).wait();
4747
} else if constexpr (TC == TestCase::Dependency) {
48-
auto E = Q.single_task([=]() { std::fill(Arr, Arr + NElems, 1); });
48+
auto E = Q.fill<T>(Arr, 1, NElems);
4949
Q.parallel_for(Range, E, Redu, [=](nd_item<Dims> It, auto &Sum) {
5050
size_t LinId = It.get_global_linear_id();
5151
Sum.combine(static_cast<T>(LinId) + Arr[LinId]);
5252
}).wait();
5353
} else {
54-
auto E = Q.single_task([=]() { std::fill(Arr, Arr + NElems, 1); });
54+
auto E = Q.fill<T>(Arr, 1, NElems);
5555
std::vector<event> EVec{E};
5656
Q.parallel_for(Range, EVec, Redu, [=](nd_item<Dims> It, auto &Sum) {
5757
size_t LinId = It.get_global_linear_id();

SYCL/Reduction/reduction_range_queue_shortcut.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ int test(queue &Q, BinaryOperation BOp, const range<Dims> &Range) {
5353
Sum.combine(static_cast<T>(LinId) + Arr[LinId]);
5454
}).wait();
5555
} else if constexpr (TC == TestCase::Dependency) {
56-
auto E = Q.single_task([=]() { std::fill(Arr, Arr + NElems, 1); });
56+
auto E = Q.fill<T>(Arr, 1, NElems);
5757
Q.parallel_for(Range, E, Redu, [=](id<Dims> Id, auto &Sum) {
5858
size_t LinId = linearizeId(Id, Range);
5959
Sum.combine(static_cast<T>(LinId) + Arr[LinId]);
6060
}).wait();
6161
} else {
62-
auto E = Q.single_task([=]() { std::fill(Arr, Arr + NElems, 1); });
62+
auto E = Q.fill<T>(Arr, 1, NElems);
6363
std::vector<event> EVec{E};
6464
Q.parallel_for(Range, EVec, Redu, [=](id<Dims> Id, auto &Sum) {
6565
size_t LinId = linearizeId(Id, Range);

0 commit comments

Comments
 (0)