{"id":18849902,"url":"https://github.com/adaptivecpp/featuresupport","last_synced_at":"2026-01-26T11:32:28.623Z","repository":{"id":78489939,"uuid":"302198695","full_name":"AdaptiveCpp/featuresupport","owner":"AdaptiveCpp","description":null,"archived":false,"fork":false,"pushed_at":"2023-09-20T00:35:53.000Z","size":42,"stargazers_count":6,"open_issues_count":2,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-30T02:23:16.979Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AdaptiveCpp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-10-08T01:02:58.000Z","updated_at":"2024-10-16T13:33:57.000Z","dependencies_parsed_at":"2023-09-20T03:08:09.466Z","dependency_job_id":null,"html_url":"https://github.com/AdaptiveCpp/featuresupport","commit_stats":null,"previous_names":["adaptivecpp/featuresupport"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AdaptiveCpp/featuresupport","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaptiveCpp%2Ffeaturesupport","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaptiveCpp%2Ffeaturesupport/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaptiveCpp%2Ffeaturesupport/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaptiveCpp%2Ffeaturesupport/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AdaptiveCpp","download_url":"https://codeload.github.com/AdaptiveCpp/featuresupport/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdaptiveCpp%2Ffeaturesupport/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28777013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T09:42:00.929Z","status":"ssl_error","status_checked_at":"2026-01-26T09:42:00.591Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T03:26:31.414Z","updated_at":"2026-01-26T11:32:28.608Z","avatar_url":"https://github.com/AdaptiveCpp.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# AdaptiveCpp feature support\n\nThis 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.\n\n## SYCL 1.2.1 features\n(This list is incomplete and only contains features that are known to be problematic)\n\n| Feature | Supported (PR link) | Caveats | Comments |\n| --- | --- | --- | --- |\n| Images | :x: | --- | --- |\n| OpenCL interop | :x: | --- | --- |\n| Hierarchical parallelism | :heavy_check_mark: | HIP/CUDA: Does not limit execution in work group scope to one thread for performance reasons | |\n\n## SYCL 2020 features\n\n| Feature | Supported (PR link) | Caveats | Comments |\n| --- | --- | --- | --- |\n| Accessor simplifications | :heavy_check_mark: (partial) ([PR](https://github.com/illuhad/hipSYCL/pull/490)) | [6] |  |\n| USM: Memory management functions | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/308))| [1] | |\n| USM: Queue shortcuts | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/323)) | | |\n| USM: Prefetch | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/323)) | [2] | |\n| USM: mem_advise | :x: |  | Implementation requires host tasks since backends do not provide async mem advise |\n| USM: memcpy | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/323)) | | |\n| USM: memset/fill | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/323)) | | |\n| host tasks | :x: |  |  |\n| Optional lambda naming | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/281)) | | |\n| Subgroups | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/282)) | | On CPU, subgroup size is always 1 |\n| In-order queues | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/320)) | | |\n| Explicit dependencies (`depends_on()`) | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/320)) | | |\n| Backend interop API | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/327)) | [3] | |\n| Reductions | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/374)) | [4] | |\n| Group algorithms | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/391)) | [5] | |\n| New device selector API | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/531)) | | |\n| Aspect API | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/530)) | | |\n| Deduction guides | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/388)) | | |\n| `atomic_ref` | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/584)) | | |\n| `marray` | :x: | | |\n| New `SYCL/sycl.hpp` header | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/216)) | | |\n| C++17 by default | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/206)) | | |\n| Builtin changes: `ctz()`, `clz()` | :x: | | |\n| Remove `*_class` types | :x: | | |\n| `const` return type for read accessor `operator[]` | :x: | | |\n| Remove buffer API for `unique_ptr` | :x: | | |\n| Replace `program` class with `module` | :x: | | |\n| Add `kernel_handler` | :x: | | |\n| explicit `queue`, `context` constructors | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/328)) | | |\n| Only require C++ trivially copyable for shared data | :heavy_check_mark: | | Has always worked thanks to CUDA/HIP toolchain |\n| Update group class with new types/member functions | :x: | | |\n| Remove `nd_item::barrier()` | :x: | | |\n| Replace `mem_fence` with `atomic_fence` | :x: | | |\n| Add `vec::operator[]`,unary `+,-`, `static constexpr get_size()/get_count()` | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/415)) | | |\n| buffer, local accessor are C++ `ContiguousContainer` | :x: | | |\n| Replace `image` with `sampled_image`, `unsampled_image` | :x: | | |\n| All accessors are placeholders | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/490)) | | |\n| Use single exception type derived from `std::exception` | :x: | | |\n| Default asynchronous handler should terminate program  | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/289)) | | |\n| Kernel invocation APIs take const reference to kernels, kernels must be immutable | :x: | | |\n| Queue constructor accepting both `device` and `context` | :heavy_check_mark: ([PR](https://github.com/illuhad/hipSYCL/pull/447)) | | |\n| Simplified `parallel_for` API | :x: | | |\n| Clarified names for device specific info queries | :x: | | |\n| Address space changes, generic address spaces | :x: | | Partially, we have always had generic address spaces because of CUDA/HIP |\n| Updated `multi_ptr` interface | :x: | | |\n| Remove OpenCL types, `cl_int` etc | :heavy_check_mark: | | hipSYCL has stopped supporting them a long time ago |\n\n\n\n\n* [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.\n* [2] HIP/ROCm does not provide the required functionality, so hipSYCL cannot expose it. Prefetch calls are ignored at the moment.\n* [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.\n* [4] Only scalar reductions are supported. Note that the reduction interface is expected to change slightly with the release of SYCL 2020 final.\n* [5] Note that the interface of group algorithms is expected to change slightly with the release of SYCL 2020 final.\n* [6] Constructing read-only accessor using `accessor\u003cconst T\u003e` from non-const `buffer\u003cT\u003e` is not yet supported.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadaptivecpp%2Ffeaturesupport","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadaptivecpp%2Ffeaturesupport","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadaptivecpp%2Ffeaturesupport/lists"}