Skip to content

Call deleter when destroying unconsumed DLPack PyCapsules#9297

Closed
t-vi wants to merge 1 commit intopytorch:masterfrom
t-vi:releasing_unused_dlpacks
Closed

Call deleter when destroying unconsumed DLPack PyCapsules#9297
t-vi wants to merge 1 commit intopytorch:masterfrom
t-vi:releasing_unused_dlpacks

Conversation

@t-vi
Copy link
Collaborator

@t-vi t-vi commented Jul 10, 2018

Usually DLPack consumer is expected to call DLManagedTensor's
deleter to signal that it doesn't need the contents.
This patch calls the deleter when freeing unconsumed
DLPack capsules created by PyTorch.

Test script:

import torch
import torch.utils.dlpack
import gc
for i in range(10000):
    a = torch.randn(1000,1000, dtype=torch.float32, device='cuda')
    b = torch.utils.dlpack.to_dlpack(a)
    gc.collect()

Before patch: consume all GPU ram.
After patch: constant GPU ram consumption.

Usually DLPack consumer is expected to call DLManagedTensor's
deleter to signal that it doesn't need the contents.
This patch calls the deleter when freeing unconsumed
DLPack capsules created by PyTorch.
Copy link
Contributor

@facebook-github-bot facebook-github-bot left a comment

Choose a reason for hiding this comment

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

@soumith is landing this pull request. If you are a Facebook employee, you can view this diff on Phabricator.

goodlux pushed a commit to goodlux/pytorch that referenced this pull request Aug 15, 2018
Summary:
Usually DLPack consumer is expected to call DLManagedTensor's
deleter to signal that it doesn't need the contents.
This patch calls the deleter when freeing unconsumed
DLPack capsules created by PyTorch.

Test script:
```
import torch
import torch.utils.dlpack
import gc
for i in range(10000):
    a = torch.randn(1000,1000, dtype=torch.float32, device='cuda')
    b = torch.utils.dlpack.to_dlpack(a)
    gc.collect()
```
Before patch: consume all GPU ram.
After patch: constant GPU ram consumption.
Pull Request resolved: pytorch#9297

Differential Revision: D8781571

Pulled By: soumith

fbshipit-source-id: 2ebadec6c857646220d632ca64110af430dbd52f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants