Skip to content
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

Remove excessive synchronization in AsyncPool. #3256

Merged
merged 2 commits into from
Aug 17, 2021

Conversation

mzient
Copy link
Contributor

@mzient mzient commented Aug 17, 2021

Signed-off-by: Michał Zientkiewicz mzient@gmail.com

Description

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Refactoring (Redesign of existing code that doesn't affect functionality)
  • Other (e.g. Documentation, Tests, Configuration)

What happened in this PR

Removed excessive syncrhonization when deallocating in async_pool - it effectively injected additional syncrhonization. This defeated deferred deallocation and introduced double syncrhonization when there was no deferred deallocation enabled.
The total time taken by pool tests went down by almost 20%.

Additional information

Affected modules and functionalities:
  • async_pool
Key points relevant for the review:

N/A

Checklist

Tests

  • Existing tests apply
  • New tests added
    • Python tests
    • GTests
    • Benchmark
    • Other
  • N/A

Documentation

  • Existing documentation applies
  • Documentation updated
    • Docstring
    • Doxygen
    • RST
    • Jupyter
    • Other
  • N/A

DALI team only

Requirements

  • Implements new requirements
  • Affects existing requirements
  • N/A

REQ IDs: N/A

JIRA TASK: N/A

Signed-off-by: Michał Zientkiewicz <mzient@gmail.com>
@@ -131,13 +131,13 @@ class cuda_vm_resource_base : public memory_resource<memory_kind::device> {
stat_ = {};
}

protected:
bool defer_dealloc_ = false;
constexpr bool deferred_dealloc_enabled() const noexcept { return defer_dealloc_; }
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This needs to be public

Signed-off-by: Michał Zientkiewicz <mzient@gmail.com>
@dali-automaton
Copy link
Collaborator

CI MESSAGE: [2783263]: BUILD STARTED

@awolant awolant self-assigned this Aug 17, 2021
@klecki
Copy link
Contributor

klecki commented Aug 17, 2021

syncrhonization

synchronization

@mzient mzient changed the title Remove excessive syncrhonization in AsyncPool. Remove excessive synchronization in AsyncPool. Aug 17, 2021
@NVIDIA NVIDIA deleted a comment from dali-automaton Aug 17, 2021
@dali-automaton
Copy link
Collaborator

CI MESSAGE: [2783263]: BUILD PASSED

@mzient mzient merged commit d61ffac into NVIDIA:main Aug 17, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants