Skip to content

AdaptiveCpp/featuresupport

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 

Repository files navigation

AdaptiveCpp feature support

This page summarizes the state of SYCL feature support in the current develop branch of AdaptiveCpp. Features that are supported are listed with a link to the pull request where they have been merged.

SYCL 1.2.1 features

(This list is incomplete and only contains features that are known to be problematic)

Feature Supported (PR link) Caveats Comments
Images ❌ --- ---
OpenCL interop ❌ --- ---
Hierarchical parallelism βœ”οΈ HIP/CUDA: Does not limit execution in work group scope to one thread for performance reasons

SYCL 2020 features

Feature Supported (PR link) Caveats Comments
Accessor simplifications βœ”οΈ (partial) (PR) [6]
USM: Memory management functions βœ”οΈ (PR) [1]
USM: Queue shortcuts βœ”οΈ (PR)
USM: Prefetch βœ”οΈ (PR) [2]
USM: mem_advise ❌ Implementation requires host tasks since backends do not provide async mem advise
USM: memcpy βœ”οΈ (PR)
USM: memset/fill βœ”οΈ (PR)
host tasks ❌
Optional lambda naming βœ”οΈ (PR)
Subgroups βœ”οΈ (PR) On CPU, subgroup size is always 1
In-order queues βœ”οΈ (PR)
Explicit dependencies (depends_on()) βœ”οΈ (PR)
Backend interop API βœ”οΈ (PR) [3]
Reductions βœ”οΈ (PR) [4]
Group algorithms βœ”οΈ (PR) [5]
New device selector API βœ”οΈ (PR)
Aspect API βœ”οΈ (PR)
Deduction guides βœ”οΈ (PR)
atomic_ref βœ”οΈ (PR)
marray ❌
New SYCL/sycl.hpp header βœ”οΈ (PR)
C++17 by default βœ”οΈ (PR)
Builtin changes: ctz(), clz() ❌
Remove *_class types ❌
const return type for read accessor operator[] ❌
Remove buffer API for unique_ptr ❌
Replace program class with module ❌
Add kernel_handler ❌
explicit queue, context constructors βœ”οΈ (PR)
Only require C++ trivially copyable for shared data βœ”οΈ Has always worked thanks to CUDA/HIP toolchain
Update group class with new types/member functions ❌
Remove nd_item::barrier() ❌
Replace mem_fence with atomic_fence ❌
Add vec::operator[],unary +,-, static constexpr get_size()/get_count() βœ”οΈ (PR)
buffer, local accessor are C++ ContiguousContainer ❌
Replace image with sampled_image, unsampled_image ❌
All accessors are placeholders βœ”οΈ (PR)
Use single exception type derived from std::exception ❌
Default asynchronous handler should terminate program βœ”οΈ (PR)
Kernel invocation APIs take const reference to kernels, kernels must be immutable ❌
Queue constructor accepting both device and context βœ”οΈ (PR)
Simplified parallel_for API ❌
Clarified names for device specific info queries ❌
Address space changes, generic address spaces ❌ Partially, we have always had generic address spaces because of CUDA/HIP
Updated multi_ptr interface ❌
Remove OpenCL types, cl_int etc βœ”οΈ hipSYCL has stopped supporting them a long time ago
  • [1] HIP/ROCm implements unified memory using slow device accessible host memory. This means that hipSYCL's call to hipMallocManaged cannot produce efficient shared allocations.
  • [2] HIP/ROCm does not provide the required functionality, so hipSYCL cannot expose it. Prefetch calls are ignored at the moment.
  • [3] The interop types that backends expose is limited. Native queues can only be obtained using an interop_handle because a queue in hipSYCL does not relate to any specific backend object.
  • [4] Only scalar reductions are supported. Note that the reduction interface is expected to change slightly with the release of SYCL 2020 final.
  • [5] Note that the interface of group algorithms is expected to change slightly with the release of SYCL 2020 final.
  • [6] Constructing read-only accessor using accessor<const T> from non-const buffer<T> is not yet supported.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published