Skip to content

Commit

Permalink
bounce_buffer_free
Browse files Browse the repository at this point in the history
  • Loading branch information
madsbk committed Sep 2, 2024
1 parent 49bf4ac commit 669dfa2
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
2 changes: 1 addition & 1 deletion python/kvikio/kvikio/_lib/buffer.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,5 @@ cdef extern from "<kvikio/bounce_buffer.hpp>" nogil:
size_t cpp_alloc_retain_clear "kvikio::AllocRetain::instance().clear"() except +


def bounce_buffer_clear() -> int:
def bounce_buffer_free() -> int:
return cpp_alloc_retain_clear()
10 changes: 8 additions & 2 deletions python/kvikio/kvikio/buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,11 @@ def memory_deregister(buf) -> None:
buffer.memory_deregister(buf)


def bounce_buffer_clear() -> int:
return buffer.bounce_buffer_clear()
def bounce_buffer_free() -> int:
"""Free the host allocations used as bounce buffers.
Returns
-------
Number of bytes freed.
"""
return buffer.bounce_buffer_free()
14 changes: 7 additions & 7 deletions python/kvikio/tests/test_basic_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,20 +276,20 @@ def test_different_bounce_buffer_sizes(tmp_path, size, tasksize, buffer_size):
cupy.testing.assert_array_equal(a, b)


def test_bounce_buffer_clear(tmp_path):
"""Test clearing the bounce buffer"""
def test_bounce_buffer_free(tmp_path):
"""Test freeing the bounce buffer allocations"""
filename = tmp_path / "test-file"
kvikio.buffer.bounce_buffer_clear()
kvikio.buffer.bounce_buffer_free()
with kvikio.defaults.set_compat_mode(True), kvikio.defaults.set_num_threads(1):
with kvikio.CuFile(filename, "w") as f:
with kvikio.defaults.set_bounce_buffer_size(1024):
# Notice, since the bounce buffer size is only checked when the buffer
# is used, we populate the bounce buffer in between we clear it.
f.write(cupy.arange(10))
assert kvikio.buffer.bounce_buffer_clear() == 1024
assert kvikio.buffer.bounce_buffer_clear() == 0
assert kvikio.buffer.bounce_buffer_free() == 1024
assert kvikio.buffer.bounce_buffer_free() == 0
f.write(cupy.arange(10))
with kvikio.defaults.set_bounce_buffer_size(2048):
f.write(cupy.arange(10))
assert kvikio.buffer.bounce_buffer_clear() == 2048
assert kvikio.buffer.bounce_buffer_clear() == 0
assert kvikio.buffer.bounce_buffer_free() == 2048
assert kvikio.buffer.bounce_buffer_free() == 0

0 comments on commit 669dfa2

Please sign in to comment.