Skip to content

[CUDAX] Add in_place_type argument to pass-through constructor of shared resource #4714

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

Merged

Conversation

pciolkosz
Copy link
Contributor

@pciolkosz pciolkosz commented May 15, 2025

Copy constructor of shared_resource doesn't work correctly right now, because for non-const argument the constructor that passed-through the arguments to the resource constructor is picked by overload resolution instead.

There might be a way to restrict that constructor to fix the overload resolution, but we already have make_shared_resource that does pretty much the same thing and avoids this issue. This PR proposes removal of the problematic pass-through constructor that will make the copy constructor work properly.
This PR adds in_place_type argument to the pass-through shared_resource constructor to avoid issues with overload resolution and enable CTAD.

@pciolkosz pciolkosz requested a review from a team as a code owner May 15, 2025 21:23
@pciolkosz pciolkosz requested a review from bernhardmgruber May 15, 2025 21:23
@github-project-automation github-project-automation bot moved this to Todo in CCCL May 15, 2025
@cccl-authenticator-app cccl-authenticator-app bot moved this from Todo to In Review in CCCL May 15, 2025
@pciolkosz pciolkosz requested review from ericniebler and miscco May 15, 2025 21:23
Copy link
Contributor

🟨 CI finished in 19m 04s: Pass: 88%/26 | Total: 2h 46m | Avg: 6m 24s | Max: 14m 46s | Hits: 94%/12884
  • 🟨 cudax: Pass: 88%/26 | Total: 2h 46m | Avg: 6m 24s | Max: 14m 46s | Hits: 94%/12884

    🔍 cpu: amd64 🔍
      🔍 amd64              Pass:  86%/22  | Total:  2h 28m | Avg:  6m 44s | Max: 14m 46s | Hits:  94%/10540 
      🟩 arm64              Pass: 100%/4   | Total: 18m 02s | Avg:  4m 30s | Max:  4m 58s | Hits:  95%/2344  
    🔍 ctk: 12.8 🔍
      🟩 12.0               Pass: 100%/3   | Total: 23m 54s | Avg:  7m 58s | Max: 14m 46s | Hits:  93%/1463  
      🔍 12.8               Pass:  86%/23  | Total:  2h 22m | Avg:  6m 12s | Max: 14m 32s | Hits:  95%/11421 
    🔍 cudacxx: nvcc12.8 🔍
      🟩 nvcc12.0           Pass: 100%/3   | Total: 23m 54s | Avg:  7m 58s | Max: 14m 46s | Hits:  93%/1463  
      🔍 nvcc12.8           Pass:  86%/23  | Total:  2h 22m | Avg:  6m 12s | Max: 14m 32s | Hits:  95%/11421 
    🚨 jobs: Test 🚨
      🟩 Build              Pass: 100%/23  | Total:  2h 19m | Avg:  6m 04s | Max: 14m 46s | Hits:  94%/12884 
      🔥 Test               Pass:   0%/3   | Total: 26m 55s | Avg:  8m 58s | Max: 10m 05s
    🔍 sm: 90 🔍
      🔍 90                 Pass:  66%/3   | Total: 16m 41s | Avg:  5m 33s | Max:  8m 14s | Hits:  95%/1172  
      🟩 90a                Pass: 100%/1   | Total:  4m 25s | Avg:  4m 25s | Max:  4m 25s | Hits:  95%/586   
    🔍 std: 20 🔍
      🟩 17                 Pass: 100%/4   | Total: 22m 28s | Avg:  5m 37s | Max:  9m 23s | Hits:  94%/2342  
      🔍 20                 Pass:  86%/22  | Total:  2h 24m | Avg:  6m 32s | Max: 14m 46s | Hits:  94%/10542 
    🟨 cxx
      🟩 Clang14            Pass: 100%/2   | Total:  9m 34s | Avg:  4m 47s | Max:  5m 02s | Hits:  95%/1176  
      🟩 Clang15            Pass: 100%/1   | Total:  5m 06s | Avg:  5m 06s | Max:  5m 06s | Hits:  95%/586   
      🟩 Clang16            Pass: 100%/1   | Total:  4m 52s | Avg:  4m 52s | Max:  4m 52s | Hits:  95%/586   
      🟩 Clang17            Pass: 100%/1   | Total:  5m 08s | Avg:  5m 08s | Max:  5m 08s | Hits:  95%/586   
      🟩 Clang18            Pass: 100%/1   | Total:  4m 37s | Avg:  4m 37s | Max:  4m 37s | Hits:  95%/586   
      🟨 Clang19            Pass:  75%/4   | Total: 21m 44s | Avg:  5m 26s | Max:  8m 36s | Hits:  95%/1758  
      🟩 GCC10              Pass: 100%/2   | Total:  9m 35s | Avg:  4m 47s | Max:  4m 59s | Hits:  95%/1176  
      🟩 GCC11              Pass: 100%/1   | Total:  5m 10s | Avg:  5m 10s | Max:  5m 10s | Hits:  95%/586   
      🟩 GCC12              Pass: 100%/1   | Total:  5m 43s | Avg:  5m 43s | Max:  5m 43s | Hits:  95%/586   
      🟨 GCC13              Pass:  75%/8   | Total: 46m 27s | Avg:  5m 48s | Max: 10m 05s | Hits:  95%/3516  
      🟩 MSVC14.39          Pass: 100%/1   | Total: 14m 46s | Avg: 14m 46s | Max: 14m 46s | Hits:  86%/287   
      🟩 MSVC14.42          Pass: 100%/1   | Total: 14m 32s | Avg: 14m 32s | Max: 14m 32s | Hits:  86%/287   
      🟩 NVHPC25.3          Pass: 100%/2   | Total: 19m 16s | Avg:  9m 38s | Max:  9m 53s | Hits:  93%/1168  
    🟨 cxx_family
      🟨 Clang              Pass:  90%/10  | Total: 51m 01s | Avg:  5m 06s | Max:  8m 36s | Hits:  95%/5278  
      🟨 GCC                Pass:  83%/12  | Total:  1h 06m | Avg:  5m 34s | Max: 10m 05s | Hits:  95%/5864  
      🟩 MSVC               Pass: 100%/2   | Total: 29m 18s | Avg: 14m 39s | Max: 14m 46s | Hits:  86%/574   
      🟩 NVHPC              Pass: 100%/2   | Total: 19m 16s | Avg:  9m 38s | Max:  9m 53s | Hits:  93%/1168  
    🟨 cudacxx_family
      🟨 nvcc               Pass:  88%/26  | Total:  2h 46m | Avg:  6m 24s | Max: 14m 46s | Hits:  94%/12884 
    🟨 gpu
      🟨 h100               Pass:  50%/2   | Total: 12m 29s | Avg:  6m 14s | Max:  8m 14s | Hits:  95%/586   
      🟨 rtx2080            Pass:  91%/24  | Total:  2h 34m | Avg:  6m 25s | Max: 14m 46s | Hits:  94%/12298 
    

👃 Inspect Changes

Modifications in project?

Project
CCCL Infrastructure
libcu++
CUB
Thrust
+/- CUDA Experimental
stdpar
python
CCCL C Parallel Library
Catch2Helper

Modifications in project or dependencies?

Project
CCCL Infrastructure
libcu++
CUB
Thrust
+/- CUDA Experimental
stdpar
python
CCCL C Parallel Library
Catch2Helper

🏃‍ Runner counts (total jobs: 26)

# Runner
17 linux-amd64-cpu16
4 linux-arm64-cpu16
2 windows-amd64-cpu16
2 linux-amd64-gpu-rtx2080-latest-1
1 linux-amd64-gpu-h100-latest-1

Copy link
Contributor

🟩 CI finished in 20m 38s: Pass: 100%/26 | Total: 2h 28m | Avg: 5m 42s | Max: 13m 40s | Hits: 99%/14642
  • 🟩 cudax: Pass: 100%/26 | Total: 2h 28m | Avg: 5m 42s | Max: 13m 40s | Hits: 99%/14642

    🟩 cpu
      🟩 amd64              Pass: 100%/22  | Total:  2h 12m | Avg:  6m 02s | Max: 13m 40s | Hits:  99%/12298 
      🟩 arm64              Pass: 100%/4   | Total: 15m 34s | Avg:  3m 53s | Max:  4m 13s | Hits:  99%/2344  
    🟩 ctk
      🟩 12.0               Pass: 100%/3   | Total: 20m 15s | Avg:  6m 45s | Max: 12m 43s | Hits:  98%/1463  
      🟩 12.8               Pass: 100%/23  | Total:  2h 08m | Avg:  5m 34s | Max: 13m 40s | Hits:  99%/13179 
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/3   | Total: 20m 15s | Avg:  6m 45s | Max: 12m 43s | Hits:  98%/1463  
      🟩 nvcc12.8           Pass: 100%/23  | Total:  2h 08m | Avg:  5m 34s | Max: 13m 40s | Hits:  99%/13179 
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/26  | Total:  2h 28m | Avg:  5m 42s | Max: 13m 40s | Hits:  99%/14642 
    🟩 cxx
      🟩 Clang14            Pass: 100%/2   | Total:  7m 24s | Avg:  3m 42s | Max:  3m 51s | Hits:  99%/1176  
      🟩 Clang15            Pass: 100%/1   | Total:  4m 06s | Avg:  4m 06s | Max:  4m 06s | Hits:  99%/586   
      🟩 Clang16            Pass: 100%/1   | Total:  3m 53s | Avg:  3m 53s | Max:  3m 53s | Hits:  99%/586   
      🟩 Clang17            Pass: 100%/1   | Total:  4m 04s | Avg:  4m 04s | Max:  4m 04s | Hits:  99%/586   
      🟩 Clang18            Pass: 100%/1   | Total:  3m 53s | Avg:  3m 53s | Max:  3m 53s | Hits:  99%/586   
      🟩 Clang19            Pass: 100%/4   | Total: 20m 53s | Avg:  5m 13s | Max:  9m 26s | Hits:  99%/2344  
      🟩 GCC10              Pass: 100%/2   | Total:  8m 11s | Avg:  4m 05s | Max:  4m 12s | Hits:  99%/1176  
      🟩 GCC11              Pass: 100%/1   | Total:  4m 20s | Avg:  4m 20s | Max:  4m 20s | Hits:  99%/586   
      🟩 GCC12              Pass: 100%/1   | Total:  4m 19s | Avg:  4m 19s | Max:  4m 19s | Hits:  99%/586   
      🟩 GCC13              Pass: 100%/8   | Total: 44m 02s | Avg:  5m 30s | Max: 10m 34s | Hits:  99%/4688  
      🟩 MSVC14.39          Pass: 100%/1   | Total: 12m 43s | Avg: 12m 43s | Max: 12m 43s | Hits:  95%/287   
      🟩 MSVC14.42          Pass: 100%/1   | Total: 13m 40s | Avg: 13m 40s | Max: 13m 40s | Hits:  95%/287   
      🟩 NVHPC25.3          Pass: 100%/2   | Total: 17m 00s | Avg:  8m 30s | Max:  8m 37s | Hits:  97%/1168  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/10  | Total: 44m 13s | Avg:  4m 25s | Max:  9m 26s | Hits:  99%/5864  
      🟩 GCC                Pass: 100%/12  | Total:  1h 00m | Avg:  5m 04s | Max: 10m 34s | Hits:  99%/7036  
      🟩 MSVC               Pass: 100%/2   | Total: 26m 23s | Avg: 13m 11s | Max: 13m 40s | Hits:  95%/574   
      🟩 NVHPC              Pass: 100%/2   | Total: 17m 00s | Avg:  8m 30s | Max:  8m 37s | Hits:  97%/1168  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 12m 36s | Avg:  6m 18s | Max:  8m 44s | Hits:  99%/1172  
      🟩 rtx2080            Pass: 100%/24  | Total:  2h 15m | Avg:  5m 39s | Max: 13m 40s | Hits:  99%/13470 
    🟩 jobs
      🟩 Build              Pass: 100%/23  | Total:  1h 59m | Avg:  5m 12s | Max: 13m 40s | Hits:  99%/12884 
      🟩 Test               Pass: 100%/3   | Total: 28m 44s | Avg:  9m 34s | Max: 10m 34s | Hits:  99%/1758  
    🟩 sm
      🟩 90                 Pass: 100%/3   | Total: 16m 19s | Avg:  5m 26s | Max:  8m 44s | Hits:  99%/1758  
      🟩 90a                Pass: 100%/1   | Total:  3m 57s | Avg:  3m 57s | Max:  3m 57s | Hits:  99%/586   
    🟩 std
      🟩 17                 Pass: 100%/4   | Total: 19m 51s | Avg:  4m 57s | Max:  8m 23s | Hits:  99%/2342  
      🟩 20                 Pass: 100%/22  | Total:  2h 08m | Avg:  5m 50s | Max: 13m 40s | Hits:  99%/12300 
    

👃 Inspect Changes

Modifications in project?

Project
CCCL Infrastructure
libcu++
CUB
Thrust
+/- CUDA Experimental
stdpar
python
CCCL C Parallel Library
Catch2Helper

Modifications in project or dependencies?

Project
CCCL Infrastructure
libcu++
CUB
Thrust
+/- CUDA Experimental
stdpar
python
CCCL C Parallel Library
Catch2Helper

🏃‍ Runner counts (total jobs: 26)

# Runner
17 linux-amd64-cpu16
4 linux-arm64-cpu16
2 windows-amd64-cpu16
2 linux-amd64-gpu-rtx2080-latest-1
1 linux-amd64-gpu-h100-latest-1

template <class... _Args>
explicit shared_resource(_Args&&... __args)
: __control_block(new _Control_block{_Resource{_CUDA_VSTD::forward<_Args>(__args)...}, 1})
{}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i have a weak preference for keeping this constructor but making its first argument cuda::std::in_place_type_t<_Resource>.

Copy link
Contributor

🟩 CI finished in 20m 54s: Pass: 100%/26 | Total: 2h 45m | Avg: 6m 20s | Max: 14m 42s | Hits: 95%/14642
  • 🟩 cudax: Pass: 100%/26 | Total: 2h 45m | Avg: 6m 20s | Max: 14m 42s | Hits: 95%/14642

    🟩 cpu
      🟩 amd64              Pass: 100%/22  | Total:  2h 27m | Avg:  6m 41s | Max: 14m 42s | Hits:  95%/12298 
      🟩 arm64              Pass: 100%/4   | Total: 17m 43s | Avg:  4m 25s | Max:  4m 45s | Hits:  95%/2344  
    🟩 ctk
      🟩 12.0               Pass: 100%/3   | Total: 23m 43s | Avg:  7m 54s | Max: 14m 10s | Hits:  93%/1463  
      🟩 12.8               Pass: 100%/23  | Total:  2h 21m | Avg:  6m 08s | Max: 14m 42s | Hits:  95%/13179 
    🟩 cudacxx
      🟩 nvcc12.0           Pass: 100%/3   | Total: 23m 43s | Avg:  7m 54s | Max: 14m 10s | Hits:  93%/1463  
      🟩 nvcc12.8           Pass: 100%/23  | Total:  2h 21m | Avg:  6m 08s | Max: 14m 42s | Hits:  95%/13179 
    🟩 cudacxx_family
      🟩 nvcc               Pass: 100%/26  | Total:  2h 45m | Avg:  6m 20s | Max: 14m 42s | Hits:  95%/14642 
    🟩 cxx
      🟩 Clang14            Pass: 100%/2   | Total:  9m 05s | Avg:  4m 32s | Max:  4m 42s | Hits:  95%/1176  
      🟩 Clang15            Pass: 100%/1   | Total:  4m 53s | Avg:  4m 53s | Max:  4m 53s | Hits:  95%/586   
      🟩 Clang16            Pass: 100%/1   | Total:  4m 55s | Avg:  4m 55s | Max:  4m 55s | Hits:  95%/586   
      🟩 Clang17            Pass: 100%/1   | Total:  4m 41s | Avg:  4m 41s | Max:  4m 41s | Hits:  95%/586   
      🟩 Clang18            Pass: 100%/1   | Total:  4m 27s | Avg:  4m 27s | Max:  4m 27s | Hits:  95%/586   
      🟩 Clang19            Pass: 100%/4   | Total: 21m 32s | Avg:  5m 23s | Max:  8m 44s | Hits:  96%/2344  
      🟩 GCC10              Pass: 100%/2   | Total: 10m 25s | Avg:  5m 12s | Max:  5m 15s | Hits:  95%/1176  
      🟩 GCC11              Pass: 100%/1   | Total:  4m 50s | Avg:  4m 50s | Max:  4m 50s | Hits:  95%/586   
      🟩 GCC12              Pass: 100%/1   | Total:  5m 35s | Avg:  5m 35s | Max:  5m 35s | Hits:  95%/586   
      🟩 GCC13              Pass: 100%/8   | Total: 45m 49s | Avg:  5m 43s | Max:  9m 28s | Hits:  96%/4688  
      🟩 MSVC14.39          Pass: 100%/1   | Total: 14m 10s | Avg: 14m 10s | Max: 14m 10s | Hits:  87%/287   
      🟩 MSVC14.42          Pass: 100%/1   | Total: 14m 42s | Avg: 14m 42s | Max: 14m 42s | Hits:  86%/287   
      🟩 NVHPC25.3          Pass: 100%/2   | Total: 19m 58s | Avg:  9m 59s | Max: 10m 01s | Hits:  93%/1168  
    🟩 cxx_family
      🟩 Clang              Pass: 100%/10  | Total: 49m 33s | Avg:  4m 57s | Max:  8m 44s | Hits:  96%/5864  
      🟩 GCC                Pass: 100%/12  | Total:  1h 06m | Avg:  5m 33s | Max:  9m 28s | Hits:  96%/7036  
      🟩 MSVC               Pass: 100%/2   | Total: 28m 52s | Avg: 14m 26s | Max: 14m 42s | Hits:  86%/574   
      🟩 NVHPC              Pass: 100%/2   | Total: 19m 58s | Avg:  9m 59s | Max: 10m 01s | Hits:  93%/1168  
    🟩 gpu
      🟩 h100               Pass: 100%/2   | Total: 13m 06s | Avg:  6m 33s | Max:  8m 41s | Hits:  97%/1172  
      🟩 rtx2080            Pass: 100%/24  | Total:  2h 31m | Avg:  6m 19s | Max: 14m 42s | Hits:  95%/13470 
    🟩 jobs
      🟩 Build              Pass: 100%/23  | Total:  2h 18m | Avg:  6m 00s | Max: 14m 42s | Hits:  94%/12884 
      🟩 Test               Pass: 100%/3   | Total: 26m 53s | Avg:  8m 57s | Max:  9m 28s | Hits:  99%/1758  
    🟩 sm
      🟩 90                 Pass: 100%/3   | Total: 17m 07s | Avg:  5m 42s | Max:  8m 41s | Hits:  96%/1758  
      🟩 90a                Pass: 100%/1   | Total:  4m 31s | Avg:  4m 31s | Max:  4m 31s | Hits:  95%/586   
    🟩 std
      🟩 17                 Pass: 100%/4   | Total: 22m 50s | Avg:  5m 42s | Max:  9m 57s | Hits:  94%/2342  
      🟩 20                 Pass: 100%/22  | Total:  2h 22m | Avg:  6m 27s | Max: 14m 42s | Hits:  95%/12300 
    

👃 Inspect Changes

Modifications in project?

Project
CCCL Infrastructure
libcu++
CUB
Thrust
+/- CUDA Experimental
stdpar
python
CCCL C Parallel Library
Catch2Helper

Modifications in project or dependencies?

Project
CCCL Infrastructure
libcu++
CUB
Thrust
+/- CUDA Experimental
stdpar
python
CCCL C Parallel Library
Catch2Helper

🏃‍ Runner counts (total jobs: 26)

# Runner
17 linux-amd64-cpu16
4 linux-arm64-cpu16
2 windows-amd64-cpu16
2 linux-amd64-gpu-rtx2080-latest-1
1 linux-amd64-gpu-h100-latest-1

@pciolkosz pciolkosz changed the title [CUDAX] Remove pass-through constructor of shared resource [CUDAX] Add in_place_type argument to pass-through constructor of shared resource May 16, 2025
@pciolkosz pciolkosz merged commit 75d041b into NVIDIA:main May 19, 2025
40 checks passed
@github-project-automation github-project-automation bot moved this from In Review to Done in CCCL May 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants