[llvm-branch-commits] [llvm] [libsycl] Add parallel_for feature (PR #189068)
Kseniya Tikhomirova via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Apr 27 04:11:08 PDT 2026
================
@@ -220,26 +356,55 @@ class _LIBSYCL_EXPORT queue {
sizeof(FirstArg));
}
+ /// The sycl_kernel_entry_point attribute facilitates the generation of an
+ /// offload kernel entry point function with parameters corresponding to the
+ /// (potentially decomposed) kernel arguments and a body that (potentially
+ /// reconstructs the arguments and) executes the kernel.
#ifdef SYCL_LANGUAGE_VERSION
# define _LIBSYCL_ENTRY_POINT_ATTR__(KernelName) \
[[clang::sycl_kernel_entry_point(KernelName)]]
#else
# define _LIBSYCL_ENTRY_POINT_ATTR__(KernelName)
#endif // SYCL_LANGUAGE_VERSION
+ /// Specifies the parameters and body of the generated offload kernel entry
+ /// point for single_task invocations. On host compiler generates call to
+ /// sycl_kernel_launch instead of KernelFunc invocation.
template <typename KernelName, typename KernelType>
_LIBSYCL_ENTRY_POINT_ATTR__(KernelName)
void submitSingleTask(const KernelType &KernelFunc) {
KernelFunc();
}
+
+ /// Specifies the parameters and body of the generated offload kernel entry
+ /// point for parallel_for invocations. On host compiler generates call to
+ /// sycl_kernel_launch instead of KernelFunc invocation.
+ template <typename KernelName, typename ElementType, typename KernelType>
+ _LIBSYCL_ENTRY_POINT_ATTR__(KernelName)
+ void submitParallelFor(const KernelType &KernelFunc) {
+ KernelFunc(detail::Builder::getElement(detail::declptr<ElementType>()));
+ }
#undef _LIBSYCL_ENTRY_POINT_ATTR__
- event getLastEvent();
- void submitKernelImpl(detail::DeviceKernelInfo &KernelInfo, void *ArgData,
- size_t ArgSize);
+ /// Passes kernel parameters to runtime.
+ /// \param Events a collection of events representing dependencies of the
+ /// kernel to submit.
+ /// \param Range a unified view of range for kernel execution.
void setKernelParameters(const std::vector<event> &Events,
const detail::UnifiedRangeView &Range = {});
+ /// Passes kernel arguments to runtime.
+ /// If all dependencies are met and kernel can be submitted to backend - it is
+ /// done in this call.
----------------
KseniyaTikhomirova wrote:
Current implementation is limited but it is applicable for current impl and for future extension as well. Would be great if you can clarify your concerns
https://github.com/llvm/llvm-project/pull/189068
More information about the llvm-branch-commits
mailing list