Skip to content

Commit 7bb1297

Browse files
authored
Merge pull request #1648 from Timon-Kruiper/pyverbs_gil
pyverbs: Release Python GIL when calling blocking CMID functions
2 parents 01341ca + 4010460 commit 7bb1297

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

pyverbs/cmid.pyx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,8 @@ cdef class CMID(PyverbsCM):
446446
:return: New CMID representing the connection request.
447447
"""
448448
to_conn = CMID()
449-
ret = cm.rdma_get_request(self.id, &to_conn.id)
449+
with nogil:
450+
ret = cm.rdma_get_request(self.id, &to_conn.id)
450451
if ret != 0:
451452
raise PyverbsRDMAErrno('Failed to get request, no connection established')
452453
self.ctx = Context(cmid=to_conn)
@@ -776,7 +777,8 @@ cdef class CMID(PyverbsCM):
776777
:return: The retrieved WC or None if there is no completions
777778
"""
778779
cdef v.ibv_wc wc
779-
ret = cm.rdma_get_recv_comp(self.id, &wc)
780+
with nogil:
781+
ret = cm.rdma_get_recv_comp(self.id, &wc)
780782
if ret < 0:
781783
raise PyverbsRDMAErrno('Failed to retrieve receive completion')
782784
elif ret == 0:
@@ -794,7 +796,8 @@ cdef class CMID(PyverbsCM):
794796
:return: The retrieved WC or None if there is no completions
795797
"""
796798
cdef v.ibv_wc wc
797-
ret = cm.rdma_get_send_comp(self.id, &wc)
799+
with nogil:
800+
ret = cm.rdma_get_send_comp(self.id, &wc)
798801
if ret < 0:
799802
raise PyverbsRDMAErrno('Failed to retrieve send completion')
800803
elif ret == 0:

pyverbs/librdmacm.pxd

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ cdef extern from '<rdma/rdma_cma.h>':
109109
int rdma_destroy_id(rdma_cm_id *id)
110110
int rdma_get_remote_ece(rdma_cm_id *id, ibv_ece *ece)
111111
int rdma_set_local_ece(rdma_cm_id *id, ibv_ece *ece)
112-
int rdma_get_request(rdma_cm_id *listen, rdma_cm_id **id)
112+
int rdma_get_request(rdma_cm_id *listen, rdma_cm_id **id) nogil
113113
int rdma_bind_addr(rdma_cm_id *id, sockaddr *addr)
114114
int rdma_resolve_addr(rdma_cm_id *id, sockaddr *src_addr,
115115
sockaddr *dst_addr, int timeout_ms)
@@ -149,8 +149,8 @@ cdef extern from '<rdma/rdma_verbs.h>':
149149
int rdma_post_write(rdma_cm_id *id, void *context, void *addr,
150150
size_t length, ibv_mr *mr, int flags,
151151
uint64_t remote_addr, uint32_t rkey)
152-
int rdma_get_send_comp(rdma_cm_id *id, ibv_wc *wc)
153-
int rdma_get_recv_comp(rdma_cm_id *id, ibv_wc *wc)
152+
int rdma_get_send_comp(rdma_cm_id *id, ibv_wc *wc) nogil
153+
int rdma_get_recv_comp(rdma_cm_id *id, ibv_wc *wc) nogil
154154
ibv_mr *rdma_reg_msgs(rdma_cm_id *id, void *addr, size_t length)
155155
ibv_mr *rdma_reg_read(rdma_cm_id *id, void *addr, size_t length)
156156
ibv_mr *rdma_reg_write(rdma_cm_id *id, void *addr, size_t length)

0 commit comments

Comments
 (0)