Skip to content

Commit 5830ba7

Browse files
committed
Avoid aggregate CUmemLocation initialization
1 parent d31a58c commit 5830ba7

6 files changed

Lines changed: 26 additions & 32 deletions

File tree

‎cuda_core/cuda/core/_memory/_device_memory_resource.pyx‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -321,10 +321,9 @@ cpdef str DMR_mempool_get_access(DeviceMemoryResource dmr, int device_id):
321321

322322
cdef int dev_id = Device(device_id).device_id
323323
cdef cydriver.CUmemAccess_flags flags
324-
cdef cydriver.CUmemLocation location = cydriver.CUmemLocation(
325-
type=cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE,
326-
id=dev_id,
327-
)
324+
cdef cydriver.CUmemLocation location
325+
location.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE
326+
location.id = dev_id
328327

329328
with nogil:
330329
HANDLE_RETURN(cydriver.cuMemPoolGetAccess(&flags, as_cu(dmr._h_pool), &location))

‎cuda_core/cuda/core/_memory/_location.pxd‎

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,22 @@ from cuda.bindings cimport cydriver
1515

1616
IF CUDA_CORE_BUILD_MAJOR >= 13:
1717
cdef inline cydriver.CUmemLocation to_cumemlocation(str kind, int loc_id):
18+
cdef cydriver.CUmemLocation cu_loc
1819
if kind == "device":
19-
return cydriver.CUmemLocation(
20-
type=cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE,
21-
id=loc_id)
20+
cu_loc.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE
21+
cu_loc.id = loc_id
2222
elif kind == "host":
23-
return cydriver.CUmemLocation(
24-
type=cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_HOST,
25-
id=0)
23+
cu_loc.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_HOST
24+
cu_loc.id = 0
2625
elif kind == "host_numa":
27-
return cydriver.CUmemLocation(
28-
type=cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_HOST_NUMA,
29-
id=loc_id)
26+
cu_loc.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_HOST_NUMA
27+
cu_loc.id = loc_id
3028
elif kind == "host_numa_current":
31-
return cydriver.CUmemLocation(
32-
type=cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_HOST_NUMA_CURRENT,
33-
id=0)
29+
cu_loc.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_HOST_NUMA_CURRENT
30+
cu_loc.id = 0
3431
else:
3532
raise ValueError(f"unknown location kind: {kind!r}")
33+
return cu_loc
3634
ELSE:
3735
cdef inline cydriver.CUmemLocation to_cumemlocation(str kind, int loc_id):
3836
raise NotImplementedError(

‎cuda_core/cuda/core/_memory/_managed_memory_ops.pyx‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,8 @@ cdef void _do_single_advise(Buffer buf, object advice_value, object loc, bint al
193193
# Driver ignores location for read_mostly / unset_preferred_location
194194
# advice values but still validates the CUmemLocation; pass a
195195
# host placeholder.
196-
cu_loc = cydriver.CUmemLocation(
197-
type=cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_HOST,
198-
id=0)
196+
cu_loc.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_HOST
197+
cu_loc.id = 0
199198
else:
200199
cu_loc = to_cumemlocation(loc.kind, loc.id)
201200
with nogil:

‎cuda_core/cuda/core/_memory/_memory_pool.pyx‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,9 @@ cdef int MP_init_current_pool(
279279
"""
280280
IF CUDA_CORE_BUILD_MAJOR >= 13:
281281
cdef cydriver.CUmemoryPool pool
282-
cdef cydriver.CUmemLocation loc = cydriver.CUmemLocation(
283-
type=loc_type, id=loc_id)
282+
cdef cydriver.CUmemLocation loc
283+
loc.type = loc_type
284+
loc.id = loc_id
284285
with nogil:
285286
HANDLE_RETURN(cydriver.cuMemGetMemPool(&pool, &loc, alloc_type))
286287
self._h_pool = create_mempool_handle_ref(pool)

‎cuda_core/cuda/core/_memory/_peer_access_utils.pyx‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,9 @@ cdef inline tuple _query_peer_access_ids(DeviceMemoryResource mr):
113113
cdef inline bint _peer_access_includes(DeviceMemoryResource mr, int dev_id):
114114
"""Return True if peer access from ``dev_id`` is currently granted."""
115115
cdef cydriver.CUmemAccess_flags flags
116-
cdef cydriver.CUmemLocation location = cydriver.CUmemLocation(
117-
type=cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE,
118-
id=dev_id,
119-
)
116+
cdef cydriver.CUmemLocation location
117+
location.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE
118+
location.id = dev_id
120119
with nogil:
121120
HANDLE_RETURN(cydriver.cuMemPoolGetAccess(&flags, as_cu(mr._h_pool), &location))
122121
return flags == cydriver.CUmemAccess_flags.CU_MEM_ACCESS_FLAGS_PROT_READWRITE

‎cuda_core/cuda/core/graph/_graph_node.pyx‎

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -827,20 +827,18 @@ cdef inline AllocNode GN_alloc(GraphNode self, size_t size, object device,
827827
num_deps = 1
828828
829829
cdef vector[cydriver.CUmemAccessDesc] access_descs
830+
cdef cydriver.CUmemAccessDesc access_desc
830831
cdef int peer_id
831832
cdef list peer_ids = []
832833
833834
if peer_access is not None:
834835
for peer_dev in peer_access:
835836
peer_id = getattr(peer_dev, 'device_id', peer_dev)
836837
peer_ids.append(peer_id)
837-
access_descs.push_back(cydriver.CUmemAccessDesc_st(
838-
cydriver.CUmemLocation_st(
839-
cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE,
840-
peer_id
841-
),
842-
cydriver.CUmemAccess_flags.CU_MEM_ACCESS_FLAGS_PROT_READWRITE
843-
))
838+
access_desc.location.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE
839+
access_desc.location.id = peer_id
840+
access_desc.flags = cydriver.CUmemAccess_flags.CU_MEM_ACCESS_FLAGS_PROT_READWRITE
841+
access_descs.push_back(access_desc)
844842
845843
cdef str memory_type_str = "device" if memory_type is None else str(memory_type)
846844

0 commit comments

Comments
 (0)