Repository navigation
Add Unique by Key Implementation for c.parallel - #3947
Conversation
…because this allows us to define it such that we can use the ActivePolicyT template parameter of invoke() as its policy, rather than the policy hub's MaxPolicy. ActivePolicyT will be the correct policy for the current ptx version, since calling invoke() from dispatch() causes us to move down the chained policies until we get to the correct one.
… needed because this allows us to define it such that we can use the ActivePolicyT template parameter of invoke() as its policy, rather than the policy hub's MaxPolicy. ActivePolicyT will be the correct policy for the current ptx version, since calling invoke() from dispatch() causes us to move down the chained policies until we get to the correct one." This reverts commit 2a17133.
…s it from the c.parallel layer. Also we don't need it to have any run-time state
…und an nvcc 12.0 template instantiation issue with vsmem_helper_fallback_policy_t
…aderalawar/cccl into unique-by-key-dynamic-dispatch
…_key and fix issue with extra semicolon in kernel template instantiation
shwina
left a comment
There was a problem hiding this comment.
Looks great to me - nice work, @NaderAlAwar!
🟩 CI finished in 52m 15s: Pass: 100%/3 | Total: 1h 08m | Avg: 22m 56s | Max: 51m 53s | Hits: 97%/318
|
| Project | |
|---|---|
| CCCL Infrastructure | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| python | |
| +/- | CCCL C Parallel Library |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| CCCL Infrastructure | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| +/- | python |
| +/- | CCCL C Parallel Library |
| Catch2Helper |
🏃 Runner counts (total jobs: 3)
| # | Runner |
|---|---|
| 2 | linux-amd64-gpu-rtx2080-latest-1 |
| 1 | linux-amd64-cpu16 |
| // TODO: we should update this once we figure out a way to reuse | ||
| // tuning logic from C++. Alternately, we should implement | ||
| // something better than a hardcoded default: | ||
| return {128, 10, cub::BLOCK_LOAD_DIRECT, cub::LOAD_DEFAULT}; |
There was a problem hiding this comment.
important: we should wait with copy-pasting all the tuning policies we have on the C++ end until we have a machinery in place. That said, unique by key tuning uses items per thread scaling to better handle large data types. It shouldn't be a lot of effort to make the tuning policy depend on the key (similar to Nominal4BItemsToItems<KeyT>(10) logic) type along the lines of what we do in the reduce.cu. But if it's not the case, feel free to address this as a follow-up PR.
There was a problem hiding this comment.
I had original implemented Nominal4BItemsToItems but that triggered the memory op assertion in the tests, so I overrode that value it produced with a smaller one. I moved Nominal4BItemsToItems to a common file to use it here, but I ran into the same issue, so I fixed it the same way. I think I'm just going to fix both in a later PR
🟩 CI finished in 54m 47s: Pass: 100%/3 | Total: 1h 08m | Avg: 22m 43s | Max: 51m 15s | Hits: 98%/318
|
| Project | |
|---|---|
| CCCL Infrastructure | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| python | |
| +/- | CCCL C Parallel Library |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| CCCL Infrastructure | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| +/- | python |
| +/- | CCCL C Parallel Library |
| Catch2Helper |
🏃 Runner counts (total jobs: 3)
| # | Runner |
|---|---|
| 2 | linux-amd64-gpu-rtx2080-latest-1 |
| 1 | linux-amd64-cpu16 |
🟩 CI finished in 50m 29s: Pass: 100%/3 | Total: 1h 07m | Avg: 22m 25s | Max: 50m 18s | Hits: 98%/320
|
| Project | |
|---|---|
| CCCL Infrastructure | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| python | |
| +/- | CCCL C Parallel Library |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| CCCL Infrastructure | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| +/- | python |
| +/- | CCCL C Parallel Library |
| Catch2Helper |
🏃 Runner counts (total jobs: 3)
| # | Runner |
|---|---|
| 2 | linux-amd64-gpu-rtx2080-latest-1 |
| 1 | linux-amd64-cpu16 |
🟩 CI finished in 1h 01m: Pass: 100%/3 | Total: 1h 14m | Avg: 24m 47s | Max: 57m 26s | Hits: 98%/320
|
| Project | |
|---|---|
| CCCL Infrastructure | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| python | |
| +/- | CCCL C Parallel Library |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| CCCL Infrastructure | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| +/- | python |
| +/- | CCCL C Parallel Library |
| Catch2Helper |
🏃 Runner counts (total jobs: 3)
| # | Runner |
|---|---|
| 2 | linux-amd64-gpu-rtx2080-latest-1 |
| 1 | linux-amd64-cpu16 |
| @@ -0,0 +1,13 @@ | |||
| //===----------------------------------------------------------------------===// | |||
| // | |||
| // Part of CUDA Experimental in CUDA C++ Core Libraries, | |||
There was a problem hiding this comment.
Is this correct? Isn't this the C parallel library?
There was a problem hiding this comment.
I'm not really sure, this is the license used in the other files in the same directory
🟩 CI finished in 53m 59s: Pass: 100%/3 | Total: 1h 07m | Avg: 22m 31s | Max: 50m 49s | Hits: 98%/320
|
| Project | |
|---|---|
| CCCL Infrastructure | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| python | |
| +/- | CCCL C Parallel Library |
| Catch2Helper |
Modifications in project or dependencies?
| Project | |
|---|---|
| CCCL Infrastructure | |
| libcu++ | |
| CUB | |
| Thrust | |
| CUDA Experimental | |
| +/- | python |
| +/- | CCCL C Parallel Library |
| Catch2Helper |
🏃 Runner counts (total jobs: 3)
| # | Runner |
|---|---|
| 2 | linux-amd64-gpu-rtx2080-latest-1 |
| 1 | linux-amd64-cpu16 |
* Move nominal_4b_items_to_items to separate file for reuse * Use correct offset type for merge sort and unique by key
* Move nominal_4b_items_to_items to separate file for reuse * Use correct offset type for merge sort and unique by key
Description
Closes #3807
This should only be merged after #3816
Checklist