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

Rare bug in memory pool where allocation can finish on superblock in empty state #452

Closed
gmackey opened this issue Sep 28, 2016 · 3 comments
Assignees
Labels
Bug Broken / incorrect code; it could be Kokkos' responsibility, or others’ (e.g., Trilinos)
Milestone

Comments

@gmackey
Copy link
Contributor

gmackey commented Sep 28, 2016

In the memory pool, it is possible for an allocation to finish on a superblock in the empty state. Allocations can only start on superblocks in the active state, but it is possible for the superblock to transition to full, then partially full, then empty before the allocation completes. This is extremely unlikely and hasn't been encountered yet, but the issue needs to be addressed.

@gmackey gmackey added the Bug Broken / incorrect code; it could be Kokkos' responsibility, or others’ (e.g., Trilinos) label Sep 28, 2016
@gmackey gmackey added this to the Backlog milestone Sep 28, 2016
@gmackey gmackey self-assigned this Sep 28, 2016
@crtrott
Copy link
Member

crtrott commented Mar 8, 2017

Requires significant redesign to catch corner-cases.

@crtrott crtrott modified the milestones: 2017-April-end, Backlog Mar 22, 2017
@crtrott
Copy link
Member

crtrott commented Mar 22, 2017

Tonight there was a segmentation fault on openmp.task_fib on kokko-develop in addition to the always failing cuda.task_fib on Pascal.

hcedwar added a commit to hcedwar/kokkos that referenced this issue Apr 18, 2017
To be used in MemoryPool for TaskDAG maturing issue kokkos#320 .
Designed to help address issue kokkos#452 .
hcedwar added a commit to hcedwar/kokkos that referenced this issue Apr 18, 2017
race conditions by condensing state representation
to a single integer and simplifying algorithm.
Addresses issues kokkos#320 , kokkos#487 , kokkos#452

Using power-of-two Kokkos::Impl::concurrent_bitset size to streamline
implementation and align with MemoryPool needs.

Unit testing over a range of superblocks the following sequence:
  1) allocate N of varying size
  2) deallocate N/3 of these
  3) reallocation deallocated
  4) concurrently deallocate and allocate N/3 of these
hcedwar added a commit to hcedwar/kokkos that referenced this issue Apr 19, 2017
race conditions by condensing state representation
to a single integer and simplifying algorithm.
Addresses issues kokkos#320 , kokkos#487 , kokkos#452

Using power-of-two Kokkos::Impl::concurrent_bitset size to streamline
implementation and align with MemoryPool needs.

Unit testing over a range of superblocks the following sequence:
  1) allocate N of varying size
  2) deallocate N/3 of these
  3) reallocation deallocated
  4) concurrently deallocate and allocate N/3 of these

Add performance test for memory pool.
Add performance enhancement note for multiple hints per block size.
hcedwar added a commit to hcedwar/kokkos that referenced this issue Apr 19, 2017
race conditions by condensing state representation
to a single integer and simplifying algorithm.
Addresses issues kokkos#320 , kokkos#487 , kokkos#452

Using power-of-two Kokkos::Impl::concurrent_bitset size to streamline
implementation and align with MemoryPool needs.

Unit testing over a range of superblocks the following sequence:
  1) allocate N of varying size
  2) deallocate N/3 of these
  3) reallocation deallocated
  4) concurrently deallocate and allocate N/3 of these

Add performance test for memory pool.
Add performance enhancement note for multiple hints per block size.
hcedwar added a commit to hcedwar/kokkos that referenced this issue Apr 19, 2017
To be used in MemoryPool for TaskDAG maturing issue kokkos#320 .
Designed to help address issue kokkos#452 .
hcedwar added a commit to hcedwar/kokkos that referenced this issue Apr 19, 2017
race conditions by condensing state representation
to a single integer and simplifying algorithm.
Addresses issues kokkos#320 , kokkos#487 , kokkos#452

Using power-of-two Kokkos::Impl::concurrent_bitset size to streamline
implementation and align with MemoryPool needs.

Unit testing over a range of superblocks the following sequence:
  1) allocate N of varying size
  2) deallocate N/3 of these
  3) reallocation deallocated
  4) concurrently deallocate and allocate N/3 of these

Add performance test for memory pool.
Add performance enhancement note for multiple hints per block size.
hcedwar added a commit to hcedwar/kokkos that referenced this issue Apr 19, 2017
race conditions by condensing state representation
to a single integer and simplifying algorithm.
Addresses issues kokkos#320 , kokkos#487 , kokkos#452

Creating power-of-two Kokkos::Impl::concurrent_bitset size to streamline
implementation and align with MemoryPool needs.

Unit testing over a range of superblocks the following sequence:
  1) allocate N of varying size
  2) deallocate N/3 of these
  3) reallocation deallocated
  4) concurrently deallocate and allocate N/3 of these

Add performance test for memory pool.
Add performance enhancement note for multiple hints per block size.
@hcedwar hcedwar added this to Backlog in On-node Task DAG Apr 19, 2017
@hcedwar hcedwar moved this from Feature Backlog to Bug Backlog in On-node Task DAG Apr 19, 2017
@hcedwar hcedwar moved this from Bug Backlog to In Progress in On-node Task DAG Apr 26, 2017
@crtrott crtrott modified the milestones: 2017-April-end, 2017-June-end Apr 26, 2017
@hcedwar hcedwar assigned hcedwar and unassigned gmackey Apr 26, 2017
@hcedwar
Copy link
Contributor

hcedwar commented Apr 28, 2017

The redesigned memory pool explicitly eliminates this situation.

@hcedwar hcedwar moved this from In Progress to In Develop in On-node Task DAG May 12, 2017
@crtrott crtrott closed this as completed May 27, 2017
@hcedwar hcedwar moved this from In Develop to Done in On-node Task DAG Jun 1, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Broken / incorrect code; it could be Kokkos' responsibility, or others’ (e.g., Trilinos)
Projects
No open projects
Development

No branches or pull requests

3 participants