Skip to content
This repository was archived by the owner on Mar 28, 2023. It is now read-only.

Commit d07c067

Browse files
committed
check SYCL_EXT_ONEAPI_COMPLEX_ALGORITHMS and aspect::fp64
Signed-off-by: Chris Perkins <[email protected]>
1 parent dbe7f52 commit d07c067

File tree

3 files changed

+51
-22
lines changed

3 files changed

+51
-22
lines changed

SYCL/GroupAlgorithm/exclusive_scan_sycl2020.cpp

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ int main() {
190190
// https://github.com/intel/llvm/pull/5108/ ) joint_exclusive_scan and
191191
// exclusive_scan_over_group now operate on std::complex limited to using the
192192
// sycl::plus binary operation.
193+
#ifdef SYCL_EXT_ONEAPI_COMPLEX_ALGORITHMS
193194
std::array<std::complex<float>, N> input_cf;
194195
std::array<std::complex<float>, N> output_cf;
195196
std::iota(input_cf.begin(), input_cf.end(), 0);
@@ -198,13 +199,22 @@ int main() {
198199
sycl::plus<std::complex<float>>(), 0);
199200
test<class KernelNamePlusUnspecF>(q, input_cf, output_cf, sycl::plus<>(), 0);
200201

201-
std::array<std::complex<double>, N> input_cd;
202-
std::array<std::complex<double>, N> output_cd;
203-
std::iota(input_cd.begin(), input_cd.end(), 0);
204-
std::fill(output_cd.begin(), output_cd.end(), 0);
205-
test<class KernelNamePlusComplexD>(q, input_cd, output_cd,
206-
sycl::plus<std::complex<double>>(), 0);
207-
test<class KernelNamePlusUnspecD>(q, input_cd, output_cd, sycl::plus<>(), 0);
202+
if (q.get_device().has(aspect::fp64)) {
203+
std::array<std::complex<double>, N> input_cd;
204+
std::array<std::complex<double>, N> output_cd;
205+
std::iota(input_cd.begin(), input_cd.end(), 0);
206+
std::fill(output_cd.begin(), output_cd.end(), 0);
207+
test<class KernelNamePlusComplexD>(q, input_cd, output_cd,
208+
sycl::plus<std::complex<double>>(), 0);
209+
test<class KernelNamePlusUnspecD>(q, input_cd, output_cd, sycl::plus<>(),
210+
0);
211+
} else {
212+
std::cout << "aspect::fp64 not supported. skipping std::complex<double>"
213+
<< std::endl;
214+
}
215+
#else
216+
static_assert(false, "SYCL_EXT_ONEAPI_COMPLEX_ALGORITHMS not defined");
217+
#endif
208218

209219
std::cout << "Test passed." << std::endl;
210220
}

SYCL/GroupAlgorithm/inclusive_scan_sycl2020.cpp

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ int main() {
190190
// https://github.com/intel/llvm/pull/5108/ ) joint_inclusive_scan and
191191
// inclusive_scan_over_group now operate on std::complex limited to using the
192192
// sycl::plus binary operation.
193+
#ifdef SYCL_EXT_ONEAPI_COMPLEX_ALGORITHMS
193194
std::array<std::complex<float>, N> input_cf;
194195
std::array<std::complex<float>, N> output_cf;
195196
std::iota(input_cf.begin(), input_cf.end(), 0);
@@ -198,13 +199,21 @@ int main() {
198199
sycl::plus<std::complex<float>>(), 0);
199200
test<class KernelNamePlusUnspecF>(q, input_cf, output_cf, sycl::plus<>(), 0);
200201

201-
std::array<std::complex<double>, N> input_cd;
202-
std::array<std::complex<double>, N> output_cd;
203-
std::iota(input_cd.begin(), input_cd.end(), 0);
204-
std::fill(output_cd.begin(), output_cd.end(), 0);
205-
test<class KernelNamePlusComplexD>(q, input_cd, output_cd,
206-
sycl::plus<std::complex<double>>(), 0);
207-
test<class KernelNamePlusUnspecD>(q, input_cd, output_cd, sycl::plus<>(), 0);
208-
202+
if (q.get_device().has(aspect::fp64)) {
203+
std::array<std::complex<double>, N> input_cd;
204+
std::array<std::complex<double>, N> output_cd;
205+
std::iota(input_cd.begin(), input_cd.end(), 0);
206+
std::fill(output_cd.begin(), output_cd.end(), 0);
207+
test<class KernelNamePlusComplexD>(q, input_cd, output_cd,
208+
sycl::plus<std::complex<double>>(), 0);
209+
test<class KernelNamePlusUnspecD>(q, input_cd, output_cd, sycl::plus<>(),
210+
0);
211+
} else {
212+
std::cout << "aspect::fp64 not supported. skipping std::complex<double>"
213+
<< std::endl;
214+
}
215+
#else
216+
static_assert(false, "SYCL_EXT_ONEAPI_COMPLEX_ALGORITHMS not defined");
217+
#endif
209218
std::cout << "Test passed." << std::endl;
210219
}

SYCL/GroupAlgorithm/reduce_sycl2020.cpp

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ int main() {
9494
// https://github.com/intel/llvm/pull/5108/ ) joint_reduce and
9595
// reduce_over_group now operate on std::complex limited to using the
9696
// sycl::plus binary operation.
97+
#ifdef SYCL_EXT_ONEAPI_COMPLEX_ALGORITHMS
9798
std::array<std::complex<float>, N> input_cf;
9899
std::array<std::complex<float>, 4> output_cf;
99100
std::iota(input_cf.begin(), input_cf.end(), 0);
@@ -102,13 +103,22 @@ int main() {
102103
sycl::plus<std::complex<float>>(), 0);
103104
test<class KernelNamePlusUnspecF>(q, input_cf, output_cf, sycl::plus<>(), 0);
104105

105-
std::array<std::complex<double>, N> input_cd;
106-
std::array<std::complex<double>, 4> output_cd;
107-
std::iota(input_cd.begin(), input_cd.end(), 0);
108-
std::fill(output_cd.begin(), output_cd.end(), 0);
109-
test<class KernelNamePlusComplexD>(q, input_cd, output_cd,
110-
sycl::plus<std::complex<double>>(), 0);
111-
test<class KernelNamePlusUnspecD>(q, input_cd, output_cd, sycl::plus<>(), 0);
106+
if (q.get_device().has(aspect::fp64)) {
107+
std::array<std::complex<double>, N> input_cd;
108+
std::array<std::complex<double>, 4> output_cd;
109+
std::iota(input_cd.begin(), input_cd.end(), 0);
110+
std::fill(output_cd.begin(), output_cd.end(), 0);
111+
test<class KernelNamePlusComplexD>(q, input_cd, output_cd,
112+
sycl::plus<std::complex<double>>(), 0);
113+
test<class KernelNamePlusUnspecD>(q, input_cd, output_cd, sycl::plus<>(),
114+
0);
115+
} else {
116+
std::cout << "aspect::fp64 not supported. skipping std::complex<double>"
117+
<< std::endl;
118+
}
119+
#else
120+
static_assert(false, "SYCL_EXT_ONEAPI_COMPLEX_ALGORITHMS not defined");
121+
#endif
112122

113123
std::cout << "Test passed." << std::endl;
114124
}

0 commit comments

Comments
 (0)