-
Notifications
You must be signed in to change notification settings - Fork 796
[SYCL] Impl of fallback group sort in device code #12676
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
jinge90
wants to merge
120
commits into
intel:sycl
Choose a base branch
from
jinge90:fallback_sort
base: sycl
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 7 commits
Commits
Show all changes
120 commits
Select commit
Hold shift + click to select a range
9e4717c
[SYCL] Impl of fallback group sort in device code
jinge90 4614b00
fix clang-fortmat issue
jinge90 e32e4c4
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 4d47fcb
template for group sort
jinge90 33c2df4
remove commented code
jinge90 90cb9d2
add default work group joint sort for i8
jinge90 f0224ea
add default work group joint sort fo i64
jinge90 9170914
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 eed61f4
add default work group joint sort for unsigned integer
jinge90 2907810
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 9840222
add wg default private sort for i8
jinge90 d6ac904
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 fd80709
add private sorting for i16
jinge90 38251b4
private sort for i64
jinge90 92d86f1
add private sort for uint
jinge90 2a1124a
add private sort for fp32
jinge90 5145446
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 9ef7692
add sub group private sort
jinge90 0b993f6
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 3025430
add utils for fp16 comparison
jinge90 455d343
add work group joint sort for f16
jinge90 15444c2
use native f16 type
jinge90 9f6172a
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 2385102
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 3ee7b7d
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 91ac557
Sync with latest sycl branch
jinge90 59c67db
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 ae0d2af
link gsort fallback
jinge90 045413c
update driver test
jinge90 4ae26de
Enable fallback spv for group sort
jinge90 e0cb989
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 8a62ceb
Fix driver test regression
jinge90 7c72135
Add first test case for fallback group sort
jinge90 92f171f
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 f8190b6
Add test for group sort i8,i16,i64
jinge90 d242e77
Fix clang-format
jinge90 1170147
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 bfb2d8b
Combine tests
jinge90 ee09a2a
Fix joint sort p1i64_u32_p1i64
jinge90 152e09d
add fp32 test
jinge90 31c11d1
sync with latest sycl branch
jinge90 f530e7d
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 0273739
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 b400b03
Fix joint_sort_p1u64_u32_p1u8
jinge90 c603cb1
add tests
jinge90 db00c79
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 82fa9ce
Add tests for private sort
jinge90 06bdf77
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 289395b
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 f672adf
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 5fa8ec3
draft to add key value
jinge90 b775b85
Add (uint32_t, uint32_t)
jinge90 db2e183
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 c0dbd92
Add joint sort KV
jinge90 f61d9ce
add test for KV joint sort
jinge90 92d7e9e
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 060842e
add KV sort private sort
jinge90 1672cf4
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 e554305
disable KV sort tests on CPU backend
jinge90 032e56f
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 627e0e8
add private KV sort
jinge90 062219a
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 07a5df4
simplify function name
jinge90 8bc9263
fix merge conflict
jinge90 89aeaad
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 f227a4e
fix clang format
jinge90 d5ef5e6
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 0c15fd7
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 724113b
add more misc APIs
jinge90 aee06c9
sync with latest intel/llvm
jinge90 2670023
fix cmake issue
jinge90 1017431
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 3139b28
add int8_t value for kv gsort
jinge90 d7ba9c8
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 ffdee6e
fix KV buble sort stable issue
jinge90 c52baf4
add e2e tests for p1u8_i8
jinge90 328b25f
add e2e tests for key_u8
jinge90 7b8dc30
use p1u8_p1u32 for p1u8_p1f32
jinge90 fc328cd
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 4f70308
use u32 copy for fp32
jinge90 96f7ba7
add p1u16_p1i8/16/32/64
jinge90 47aa231
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 4e46393
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 77d9856
add p1 signed integer key
jinge90 cfd749d
add tests for p1i8_p1*
jinge90 883a60c
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 bdd19f2
add wg_private_sort for key-value
jinge90 287498c
add test for u8_u64
jinge90 343f56d
add KV sort for i8 key
jinge90 61d9cf8
Merge remote-tracking branch 'origin/sycl' into fallback_sort
jinge90 cff0a6b
add work group private sort for i32/u32/i64/u64 key type
jinge90 f43572a
add tests for i16 key type
jinge90 396d310
add tests for i16,u16 key type
jinge90 c845b34
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 5e4f509
add tests for key type u32
jinge90 bef0bcf
add test for key type i32
jinge90 35413ea
add tests for key type i64/u64
jinge90 34f6c35
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 828be3b
apply group broadcast to KV private sort
jinge90 8a03ba5
add private KV spread sort
jinge90 5667986
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 c1e3aaa
add private key value sorting with local shared scratch memory
jinge90 b079feb
add subgroup key-value sort for 1-element for u8/u16 key
jinge90 5436084
Fix incorrect type in sg_private_sort_p1u16_p1i8
jinge90 961a6d8
fix e2e test header file issue
jinge90 f71a79c
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 3ff204a
remove incorrect subgroup private func names
jinge90 b26e1a5
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 a4e8572
correct function name for subgroup private sorting
jinge90 bc03dc4
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 f068588
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 11f2a13
sync with latest head
jinge90 877af07
fix clang format issue
jinge90 7d87a89
fix clang format
jinge90 78235d0
Disable AMD target for fallback gsort
jinge90 3bdc448
fix cmake
jinge90 4e486b4
Fix cmake issue
jinge90 2559b78
sync with latest intel/llvm
jinge90 36ad10f
Merge remote-tracking branch 'upstream/sycl' into fallback_sort
jinge90 a5d2e26
sync with latest sycl head
jinge90 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,254 @@ | ||
|
|
||
| //==--- fallback_gsort_fp32.cpp - fallback implementation of group sort | ||
| //-----==// | ||
| // | ||
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| // See https://llvm.org/LICENSE.txt for license information. | ||
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
| #include "device.h" | ||
| #include "sort_helper.hpp" | ||
| #include <cstdint> | ||
| #include <functional> | ||
| #if defined(__SPIR__) | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p1i8_u32_p1i8( | ||
| int8_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int8_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p1i8_u32_p3i8( | ||
| int8_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int8_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p3i8_u32_p1i8( | ||
| int8_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int8_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p3i8_u32_p3i8( | ||
| int8_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int8_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p1i8_u32_p1i8( | ||
| int8_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int8_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p1i8_u32_p3i8( | ||
| int8_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int8_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p3i8_u32_p1i8( | ||
| int8_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int8_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p3i8_u32_p3i8( | ||
| int8_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int8_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p1i16_u32_p1i8( | ||
| int16_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int16_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p1i16_u32_p3i8( | ||
| int16_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int16_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p3i16_u32_p1i8( | ||
| int16_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int16_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p3i16_u32_p3i8( | ||
| int16_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int16_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p1i16_u32_p1i8( | ||
| int16_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int16_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p1i16_u32_p3i8( | ||
| int16_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int16_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p3i16_u32_p1i8( | ||
| int16_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int16_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p3i16_u32_p3i8( | ||
| int16_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int16_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p1i32_u32_p1i8( | ||
| int32_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int32_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p1i32_u32_p3i8( | ||
| int32_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int32_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p3i32_u32_p1i8( | ||
| int32_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int32_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p3i32_u32_p3i8( | ||
| int32_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int32_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p1i32_u32_p1i8( | ||
| int32_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int32_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p1i32_u32_p3i8( | ||
| int32_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int32_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p3i32_u32_p1i8( | ||
| int32_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int32_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p3i32_u32_p3i8( | ||
| int32_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int32_t>{}); | ||
| } | ||
|
|
||
| void __devicelib_default_work_group_joint_sort_ascending_p1i64_u32_p1i8( | ||
| int64_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int64_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p1i64_u32_p3i8( | ||
| int64_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int64_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p3i64_u32_p1i8( | ||
| int64_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int64_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p3i64_u32_p3i8( | ||
| int64_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<int64_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p1i64_u32_p1i8( | ||
| int64_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int64_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p1i64_u32_p3i8( | ||
| int64_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int64_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p3i64_u32_p1i8( | ||
| int64_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int64_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p3i64_u32_p3i8( | ||
| int64_t *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<int64_t>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p1f32_u32_p1i8( | ||
| float *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<float>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p1f32_u32_p3i8( | ||
| float *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<float>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p3f32_u32_p1i8( | ||
| float *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<float>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_ascending_p3f32_u32_p3i8( | ||
| float *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::less<float>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p1f32_u32_p1i8( | ||
| float *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<float>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p1f32_u32_p3i8( | ||
| float *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<float>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p3f32_u32_p1i8( | ||
| float *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<float>{}); | ||
| } | ||
|
|
||
| DEVICE_EXTERN_C_INLINE | ||
| void __devicelib_default_work_group_joint_sort_descending_p3f32_u32_p3i8( | ||
| float *first, uint32_t n, uint8_t *scratch) { | ||
| merge_sort(first, n, scratch, std::greater<float>{}); | ||
| } | ||
| #endif | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| //==------- group_helper.hpp - utils related to work-group operations-------==// | ||
| // | ||
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| // See https://llvm.org/LICENSE.txt for license information. | ||
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| // | ||
| //==------------------------------------------------------------------------==// | ||
| #pragma once | ||
| #include "spirv_decls.hpp" | ||
| #include "spirv_vars.h" | ||
| #include <cstdint> | ||
| #if defined(__SPIR__) | ||
|
|
||
| static inline size_t __get_wg_local_range() { | ||
| return __spirv_BuiltInWorkgroupSize.x * __spirv_BuiltInWorkgroupSize.y * | ||
| __spirv_BuiltInWorkgroupSize.z; | ||
| } | ||
|
|
||
| static inline size_t __get_wg_local_linear_id() { | ||
| return (__spirv_BuiltInLocalInvocationId.x * __spirv_BuiltInWorkgroupSize.y * | ||
| __spirv_BuiltInWorkgroupSize.z) + | ||
| (__spirv_BuiltInLocalInvocationId.y * __spirv_BuiltInWorkgroupSize.z) + | ||
| __spirv_BuiltInLocalInvocationId.z; | ||
| } | ||
|
|
||
| static inline void group_barrier() { | ||
| __spirv_ControlBarrier(__spv::Scope::Workgroup, __spv::Scope::Workgroup, | ||
| __spv::MemorySemanticsMask::SequentiallyConsistent | | ||
| __spv::MemorySemanticsMask::SubgroupMemory | | ||
| __spv::MemorySemanticsMask::WorkgroupMemory | | ||
| __spv::MemorySemanticsMask::CrossWorkgroupMemory); | ||
| } | ||
| #endif |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.