Skip to content

Commit 5dda196

Browse files
committed
Renames Buffer import_/export methods.
1 parent c9f8c91 commit 5dda196

File tree

8 files changed

+27
-25
lines changed

8 files changed

+27
-25
lines changed

cuda_core/cuda/core/experimental/_device.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1343,8 +1343,9 @@ def _reconstruct_device(device_id):
13431343
device.set_current()
13441344
return device
13451345

1346+
13461347
def _reduce_device(device):
13471348
return _reconstruct_device, (device.device_id,)
13481349

1349-
multiprocessing.reduction.register(Device, _reduce_device)
13501350

1351+
multiprocessing.reduction.register(Device, _reduce_device)

cuda_core/cuda/core/experimental/_memory.pyx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ if platform.system() == "Linux":
2929

3030
if TYPE_CHECKING:
3131
from ._device import Device
32-
import cuda.bindings.driver
3332
import uuid
3433

3534
# TODO: define a memory property mixin class and make Buffer and
@@ -75,7 +74,7 @@ cdef class Buffer:
7574
self.close()
7675

7776
def __reduce__(self):
78-
return Buffer.import_, (self.memory_resource, self.export())
77+
return Buffer.from_ipc_descriptor, (self.memory_resource, self.get_ipc_descriptor())
7978

8079
cpdef close(self, stream: Stream = None):
8180
"""Deallocate this buffer asynchronously on the given stream.
@@ -137,7 +136,7 @@ cdef class Buffer:
137136
return self._mr.device_id
138137
raise NotImplementedError("WIP: Currently this property only supports buffers with associated MemoryResource")
139138

140-
def export(self) -> IPCBufferDescriptor:
139+
def get_ipc_descriptor(self) -> IPCBufferDescriptor:
141140
"""Export a buffer allocated for sharing between processes."""
142141
if not self._mr.is_ipc_enabled:
143142
raise RuntimeError("Memory resource is not IPC-enabled")
@@ -146,7 +145,7 @@ cdef class Buffer:
146145
return IPCBufferDescriptor._init(ptr.reserved, self.size)
147146

148147
@classmethod
149-
def import_(cls, mr: MemoryResource, ipc_buffer: IPCBufferDescriptor) -> Buffer:
148+
def from_ipc_descriptor(cls, mr: MemoryResource, ipc_buffer: IPCBufferDescriptor) -> Buffer:
150149
"""Import a buffer that was exported from another process."""
151150
if not mr.is_ipc_enabled:
152151
raise RuntimeError("Memory resource is not IPC-enabled")
@@ -621,7 +620,7 @@ class DeviceMemoryResource(MemoryResource):
621620
raise_if_driver_error(err)
622621

623622
if opts.ipc_enabled:
624-
self.get_allocation_handle() # enables Buffer.export, sets uuid
623+
self.get_allocation_handle() # enables Buffer.get_ipc_descriptor, sets uuid
625624

626625
def __del__(self):
627626
self.close()
@@ -675,8 +674,9 @@ class DeviceMemoryResource(MemoryResource):
675674
return self
676675

677676
def unregister(self):
678-
with contextlib.suppress(KeyError):
679-
del _ipc_registry[self.uuid]
677+
if _ipc_registry is not None:
678+
with contextlib.suppress(KeyError):
679+
del _ipc_registry[self.uuid]
680680

681681
@property
682682
def uuid(self):

cuda_core/tests/memory_ipc/test_errors.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,11 @@ class TestImportWrongMR(ChildErrorHarness):
7373
def PARENT_ACTION(self, queue):
7474
mr2 = DeviceMemoryResource(self.device, dict(max_size=POOL_SIZE, ipc_enabled=True))
7575
buffer = mr2.allocate(NBYTES)
76-
queue.put([self.mr, buffer.export()]) # Note: mr does not own this buffer
76+
queue.put([self.mr, buffer.get_ipc_descriptor()]) # Note: mr does not own this buffer
7777

7878
def CHILD_ACTION(self, queue):
7979
mr, buffer_desc = queue.get(timeout=CHILD_TIMEOUT_SEC)
80-
Buffer.import_(mr, buffer_desc)
80+
Buffer.from_ipc_descriptor(mr, buffer_desc)
8181

8282
def ASSERT(self, exc_type, exc_msg):
8383
assert exc_type is CUDAError
@@ -110,7 +110,7 @@ def PARENT_ACTION(self, queue):
110110

111111
def CHILD_ACTION(self, queue):
112112
buffer = queue.get(timeout=CHILD_TIMEOUT_SEC)
113-
Buffer.import_(self.mr, buffer)
113+
Buffer.from_ipc_descriptor(self.mr, buffer)
114114

115115
def ASSERT(self, exc_type, exc_msg):
116116
assert exc_type is TypeError

cuda_core/tests/memory_ipc/test_leaks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def __reduce__(self):
8080
lambda mr: mr.get_allocation_handle(),
8181
lambda mr: mr,
8282
lambda mr: mr.allocate(NBYTES),
83-
lambda mr: mr.allocate(NBYTES).export(),
83+
lambda mr: mr.allocate(NBYTES).get_ipc_descriptor(),
8484
],
8585
ids=["alloc_handle", "mr", "buffer", "buffer_desc"],
8686
)

cuda_core/tests/memory_ipc/test_memory_ipc.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ def test_main(self, device, ipc_memory_resource):
109109
# Allocate and share memory.
110110
buf1 = mr.allocate(NBYTES)
111111
buf2 = mr.allocate(NBYTES)
112-
q1.put(buf1.export())
113-
q2.put(buf2.export())
112+
q1.put(buf1.get_ipc_descriptor())
113+
q2.put(buf2.get_ipc_descriptor())
114114

115115
# Wait for children.
116116
p1.join(timeout=CHILD_TIMEOUT_SEC)
@@ -130,7 +130,7 @@ def child_main(self, alloc_handle, idx, queue):
130130
device.set_current()
131131
mr = DeviceMemoryResource.from_allocation_handle(device, alloc_handle)
132132
buffer_descriptor = queue.get(timeout=CHILD_TIMEOUT_SEC)
133-
buffer = Buffer.import_(mr, buffer_descriptor)
133+
buffer = Buffer.from_ipc_descriptor(mr, buffer_descriptor)
134134
IPCBufferTestHelper(device, buffer).fill_buffer(starting_from=idx)
135135

136136

cuda_core/tests/memory_ipc/test_serialize.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def test_main(self, device, ipc_memory_resource):
3939
parent_conn.send(buffer1) # directly
4040

4141
buffer2 = mr.allocate(NBYTES)
42-
parent_conn.send(buffer2.export()) # by descriptor
42+
parent_conn.send(buffer2.get_ipc_descriptor()) # by descriptor
4343

4444
# Wait for the child process.
4545
process.join(timeout=CHILD_TIMEOUT_SEC)
@@ -64,7 +64,7 @@ def child_main(self, conn):
6464
# Receive the buffers.
6565
buffer1 = conn.recv() # directly
6666
buffer_desc = conn.recv()
67-
buffer2 = Buffer.import_(mr, buffer_desc) # by descriptor
67+
buffer2 = Buffer.from_ipc_descriptor(mr, buffer_desc) # by descriptor
6868

6969
# Modify the buffers.
7070
IPCBufferTestHelper(device, buffer1).fill_buffer(flipped=True)
@@ -126,7 +126,7 @@ def test_object_passing(device, ipc_memory_resource):
126126
mr = ipc_memory_resource
127127
alloc_handle = mr.get_allocation_handle()
128128
buffer = mr.allocate(NBYTES)
129-
buffer_desc = buffer.export()
129+
buffer_desc = buffer.get_ipc_descriptor()
130130

131131
helper = IPCBufferTestHelper(device, buffer)
132132
helper.fill_buffer(flipped=False)
@@ -145,8 +145,8 @@ def child_main(device, alloc_handle, mr1, buffer_desc, buffer1):
145145

146146
# OK to build the buffer from either mr and the descriptor.
147147
# All buffer* objects point to the same memory.
148-
buffer2 = Buffer.import_(mr1, buffer_desc)
149-
buffer3 = Buffer.import_(mr2, buffer_desc)
148+
buffer2 = Buffer.from_ipc_descriptor(mr1, buffer_desc)
149+
buffer3 = Buffer.from_ipc_descriptor(mr2, buffer_desc)
150150

151151
helper1 = IPCBufferTestHelper(device, buffer1)
152152
helper2 = IPCBufferTestHelper(device, buffer2)

cuda_core/tests/memory_ipc/test_workerpool.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def test_ipc_workerpool(self, device, ipc_memory_resource):
3636
mr = ipc_memory_resource
3737
buffers = [mr.allocate(NBYTES) for _ in range(NTASKS)]
3838
with multiprocessing.Pool(processes=NWORKERS, initializer=self.init_worker, initargs=([mr],)) as pool:
39-
pool.starmap(self.process_buffer, [(0, buffer.export()) for buffer in buffers])
39+
pool.starmap(self.process_buffer, [(0, buffer.get_ipc_descriptor()) for buffer in buffers])
4040

4141
for buffer in buffers:
4242
IPCBufferTestHelper(device, buffer).verify_buffer(flipped=True)
@@ -49,15 +49,16 @@ def test_ipc_workerpool_multi_mr(self, device, ipc_memory_resource):
4949
buffers = [mr.allocate(NBYTES) for mr, _ in zip(cycle(mrs), range(NTASKS))]
5050
with multiprocessing.Pool(processes=NWORKERS, initializer=self.init_worker, initargs=(mrs,)) as pool:
5151
pool.starmap(
52-
self.process_buffer, [(mrs.index(buffer.memory_resource), buffer.export()) for buffer in buffers]
52+
self.process_buffer,
53+
[(mrs.index(buffer.memory_resource), buffer.get_ipc_descriptor()) for buffer in buffers],
5354
)
5455

5556
for buffer in buffers:
5657
IPCBufferTestHelper(device, buffer).verify_buffer(flipped=True)
5758

5859
def process_buffer(self, mr_idx, buffer_desc):
5960
device = Device()
60-
buffer = Buffer.import_(g_mrs[mr_idx], buffer_desc)
61+
buffer = Buffer.from_ipc_descriptor(g_mrs[mr_idx], buffer_desc)
6162
IPCBufferTestHelper(device, buffer).fill_buffer(flipped=True)
6263

6364

cuda_core/tests/test_memory.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -350,11 +350,11 @@ def test_mempool(mempool_device):
350350
mr.get_allocation_handle()
351351

352352
with pytest.raises(RuntimeError, match=ipc_error_msg):
353-
buffer.export()
353+
buffer.get_ipc_descriptor()
354354

355355
with pytest.raises(RuntimeError, match=ipc_error_msg):
356356
handle = IPCBufferDescriptor._init(b"", 0)
357-
Buffer.import_(mr, handle)
357+
Buffer.from_ipc_descriptor(mr, handle)
358358

359359
buffer.close()
360360

0 commit comments

Comments
 (0)