Use cuda::mr::memory_resource instead of raw device_memory_resource#1095
Use cuda::mr::memory_resource instead of raw device_memory_resource#1095rapids-bot[bot] merged 37 commits intorapidsai:branch-23.12from
cuda::mr::memory_resource instead of raw device_memory_resource#1095Conversation
|
Can one of the admins verify this patch? Admins can comment |
|
@miscco so what's your current thinking about the steps we'd take to transition rapids libraries? Ultimately we want to get rid of the |
I guess the advantage that we have is that the new interface itself is non intrusive. So my proposal would be to expand test coverage and merge this PR right away into rmm. We can then think about which parts of rapids to move over to the new shiny. We might also want to think about adding a new interface first and then remove the old one as a second step afterwards |
0b91187 to
2c85df6
Compare
|
ok to test |
|
@miscco can you target this at branch-22.12? We don't target main with PRs, and 22.10 is entering code freeze later this week. (RAPIDS has an interesting branching model) |
|
You will also need to run clang-format to pass the style checks. |
|
Yeah, I am not fully ready with the device side memory resources. I hope to finish something this week |
2c85df6 to
777d0f0
Compare
…ource_ref ` While we are at it also properly test that a `device_memory_resource` is a `async_resource`
Also `Nothing` seems to be an invalid type
5220ff7 to
c298fbc
Compare
|
I discussed with @harrism -- he wants to finish testing downstream RAPIDS repos with commit 41c1bea. In the meantime, I created a branch with temporary changes from my PR review. https://github.com/bdice/rmm/tree/memory_resource-bdice Feel free to merge those three commits into this PR when ready. |
We currently have no design on how we want to propagate the properties of the memory_resource, so drop this for now until have a proper design ready
There was a problem hiding this comment.
Approving as-is. Let's merge tonight (in the next 5-6 hours, ideally) and let the nightlies rebuild all RAPIDS packages. We'll iron out any problems (like the potential issue with cuGraph) once we see if the nightlies pass.
|
/merge |
|
Thanks a lot for helping me getting this in 🎉 |
This introduces
cuda::mr::{async_}resource_refas a type erased safe resource wrapper that is meant to replace uses ofrmm::mr::{host, device}_memory_resourcepointers.We provide both async and classic allocate functions that delegate back to the original resource used to construct the
cuda::mr::{async_}resource_refIn comparison to
{host, device}_memory_resourcethe new feature provides additional compile time checks that will help users avoid common pitfalls with heterogeneous memory allocations.As a first step we provide the properties
cuda::mr::host_accessibleandcuda::mr::device_accessible. These properties can be added to an internal or even external type through a free functionget_propertyThe advantage is that we can constrain interfaces based on these properties
This function will fail to compile if it is passed any resource that does not support async allocations or is not tagged as providing device accessible memory. In the same way the following function will only compile if the provided resource provides the classic allocate / deallocate interface and is tagged to provide host accessible memory
The property system is highly flexible and can easily be user provided to add their own properties as needed. That gives it both the flexibility of an inheritance based implementation and the security of a strictly type checked interface