You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 2335200
Browse filesBrowse the repository at this point in the historyBrowse files
GPU: implement the work-group and warp collectives for Metal
Metal fell through to the CPU branch of GPUCommonAlgorithm.h, where a
scan, a reduction or a broadcast returns the thread's own value: right for
one thread per block, wrong for the 32- to 1024-thread groups Metal runs.
The TPC ZS decoding and the stream compaction of the cluster finder got
wrong offsets and counts, and found no clusters at all.
Implement them with MSL's SIMD-group functions, and the work-group ones by
scanning within each SIMD group and then across the group totals, which go
through smem as with cub. MSL has the thread index only as a kernel
parameter, so like smem it is taken from the caller's scope, and the
CfUtils block helpers get it through GPUCA_THREAD_INFO_DECL, which is
empty for the other backends. blockPredicateScan loses the default of its
last parameter for that. Sums are returned promoted, since the callers
pass !!pred and a bool would truncate them.
The CUDA, HIP, OpenCL and CPU code is unchanged.
0 commit comments