Skip to content

Commit 0bb129e

Browse files
rwgkcursoragent
andcommitted
Fix peer access test synchronization issue
Add missing device synchronization calls to ensure resident device operations are complete before peer device accesses memory. The test was failing because when dev0 accesses peer memory from dev1, PatternGen only syncs dev0 (the accessing device) but not dev1 (the resident device). This can cause synchronization issues where dev0 reads peer memory before dev1 has completed all operations. Changes: - Sync dev1 after IPC import (Test 1) to ensure import operations complete - Sync dev1 after granting peer access (Test 3) before dev0 accesses peer memory This follows CUDA best practices: when accessing peer memory, sync the resident device to ensure its operations are complete before the peer device reads the memory. Fixes test failures on ARM64 with CUDA 13.2 RC025. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 6bdcda0 commit 0bb129e

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

cuda_core/tests/memory_ipc/test_peer_access.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ def child_main(self, mr, buffer):
9494
# Test 1: Buffer accessible from resident device (dev1) - should always work
9595
dev1 = Device(1)
9696
dev1.set_current()
97+
# Sync dev1 to ensure IPC import operations are complete
98+
dev1.sync()
9799
PatternGen(dev1, NBYTES).verify_buffer(buffer, seed=False)
98100

99101
# Test 2: Buffer NOT accessible from dev0 initially (peer access not preserved)
@@ -106,6 +108,9 @@ def child_main(self, mr, buffer):
106108
dev1.set_current()
107109
mr.peer_accessible_by = [0]
108110
assert mr.peer_accessible_by == (0,)
111+
# Sync dev1 to ensure peer access setup and any pending operations are complete
112+
# before dev0 accesses the peer memory
113+
dev1.sync()
109114
dev0.set_current()
110115
PatternGen(dev0, NBYTES).verify_buffer(buffer, seed=False)
111116

0 commit comments

Comments
 (0)