@@ -183,7 +183,68 @@ SPGEMM_NUMERIC_AVAIL_MKL_E(Kokkos::Serial)
183
183
#ifdef KOKKOS_ENABLE_OPENMP
184
184
SPGEMM_NUMERIC_AVAIL_MKL_E (Kokkos::OpenMP)
185
185
#endif
186
- #endif
186
+
187
+ #if defined(KOKKOS_ENABLE_SYCL)
188
+ #define SPGEMM_NUMERIC_AVAIL_MKL_SYCL (SCALAR, ORDINAL ) \
189
+ template <> \
190
+ struct spgemm_numeric_tpl_spec_avail < \
191
+ KokkosKernels::Experimental::KokkosKernelsHandle< \
192
+ const ORDINAL, const ORDINAL, const SCALAR, \
193
+ Kokkos::Experimental::SYCL, \
194
+ Kokkos::Experimental::SYCLDeviceUSMSpace, \
195
+ Kokkos::Experimental::SYCLDeviceUSMSpace>, \
196
+ Kokkos::View<const ORDINAL *, default_layout, \
197
+ Kokkos::Device<Kokkos::Experimental::SYCL, \
198
+ Kokkos::Experimental::SYCLDeviceUSMSpace>, \
199
+ Kokkos::MemoryTraits<Kokkos::Unmanaged> >, \
200
+ Kokkos::View<const ORDINAL *, default_layout, \
201
+ Kokkos::Device<Kokkos::Experimental::SYCL, \
202
+ Kokkos::Experimental::SYCLDeviceUSMSpace>, \
203
+ Kokkos::MemoryTraits<Kokkos::Unmanaged> >, \
204
+ Kokkos::View<const SCALAR *, default_layout, \
205
+ Kokkos::Device<Kokkos::Experimental::SYCL, \
206
+ Kokkos::Experimental::SYCLDeviceUSMSpace>, \
207
+ Kokkos::MemoryTraits<Kokkos::Unmanaged> >, \
208
+ Kokkos::View<const ORDINAL *, default_layout, \
209
+ Kokkos::Device<Kokkos::Experimental::SYCL, \
210
+ Kokkos::Experimental::SYCLDeviceUSMSpace>, \
211
+ Kokkos::MemoryTraits<Kokkos::Unmanaged> >, \
212
+ Kokkos::View<const ORDINAL *, default_layout, \
213
+ Kokkos::Device<Kokkos::Experimental::SYCL, \
214
+ Kokkos::Experimental::SYCLDeviceUSMSpace>, \
215
+ Kokkos::MemoryTraits<Kokkos::Unmanaged> >, \
216
+ Kokkos::View<const SCALAR *, default_layout, \
217
+ Kokkos::Device<Kokkos::Experimental::SYCL, \
218
+ Kokkos::Experimental::SYCLDeviceUSMSpace>, \
219
+ Kokkos::MemoryTraits<Kokkos::Unmanaged> >, \
220
+ Kokkos::View<const ORDINAL *, default_layout, \
221
+ Kokkos::Device<Kokkos::Experimental::SYCL, \
222
+ Kokkos::Experimental::SYCLDeviceUSMSpace>, \
223
+ Kokkos::MemoryTraits<Kokkos::Unmanaged> >, \
224
+ Kokkos::View<ORDINAL *, default_layout, \
225
+ Kokkos::Device<Kokkos::Experimental::SYCL, \
226
+ Kokkos::Experimental::SYCLDeviceUSMSpace>, \
227
+ Kokkos::MemoryTraits<Kokkos::Unmanaged> >, \
228
+ Kokkos::View<SCALAR *, default_layout, \
229
+ Kokkos::Device<Kokkos::Experimental::SYCL, \
230
+ Kokkos::Experimental::SYCLDeviceUSMSpace>, \
231
+ Kokkos::MemoryTraits<Kokkos::Unmanaged> > > { \
232
+ enum : bool { value = true }; \
233
+ };
234
+
235
+ SPGEMM_NUMERIC_AVAIL_MKL_SYCL (float , std::int32_t )
236
+ SPGEMM_NUMERIC_AVAIL_MKL_SYCL(double , std::int32_t )
237
+ SPGEMM_NUMERIC_AVAIL_MKL_SYCL(Kokkos::complex<float >, std::int32_t )
238
+ SPGEMM_NUMERIC_AVAIL_MKL_SYCL(Kokkos::complex<double >, std::int32_t )
239
+
240
+ SPGEMM_NUMERIC_AVAIL_MKL_SYCL(float , std::int64_t )
241
+ SPGEMM_NUMERIC_AVAIL_MKL_SYCL(double , std::int64_t )
242
+ SPGEMM_NUMERIC_AVAIL_MKL_SYCL(Kokkos::complex<float >, std::int64_t )
243
+ SPGEMM_NUMERIC_AVAIL_MKL_SYCL(Kokkos::complex<double >, std::int64_t )
244
+
245
+ #endif // KOKKOS_ENABLE_SYCL
246
+
247
+ #endif // KOKKOSKERNELS_ENABLE_TPL_MKL
187
248
188
249
} // namespace Impl
189
250
} // namespace KokkosSparse
0 commit comments