Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(freelist): use uintptr_t for pointer arithmetic #560

Merged
merged 1 commit into from
Sep 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions include/nccl_ofi_freelist.h
Original file line number Diff line number Diff line change
@@ -207,20 +207,20 @@ static inline void nccl_ofi_freelist_entry_set_undefined(nccl_ofi_freelist_t *fr
size_t redzone_offset = offsetof(struct nccl_ofi_freelist_reginfo_t, redzone);

/* Entry after reginfo structure is accessible but undefined */
nccl_net_ofi_mem_undefined_unaligned(entry_p + reginfo_offset + reginfo_size,
nccl_net_ofi_mem_undefined_unaligned((void*)((uintptr_t)entry_p + reginfo_offset + reginfo_size),
user_entry_size - reginfo_offset - reginfo_size);
/* Redzone at the end of the reginfo structure is
* marked as not accessible */
nccl_net_ofi_mem_noaccess_unaligned(entry_p + reginfo_offset + redzone_offset,
nccl_net_ofi_mem_noaccess_unaligned((void*)((uintptr_t)entry_p + reginfo_offset + redzone_offset),
MEMCHECK_REDZONE_SIZE);
/* Members of reginfo structure except first and last
* member are accessible and defined */
nccl_net_ofi_mem_defined_unaligned(entry_p + reginfo_offset + elem_size,
nccl_net_ofi_mem_defined_unaligned((void*)((uintptr_t)entry_p + reginfo_offset + elem_size),
redzone_offset - elem_size);
/* First member of reginfo structure, i.e.,
* nccl_ofi_freelist_elem_t structure, is marked as
* not accessible */
nccl_net_ofi_mem_noaccess_unaligned(entry_p + reginfo_offset, elem_size);
nccl_net_ofi_mem_noaccess_unaligned((void*)((uintptr_t)entry_p + reginfo_offset), elem_size);
/* First part of entry until reginfo structure is
* accessible but undefined */
nccl_net_ofi_mem_undefined(entry_p, reginfo_offset);
18 changes: 9 additions & 9 deletions include/nccl_ofi_memcheck.h
Original file line number Diff line number Diff line change
@@ -85,9 +85,9 @@ static inline void nccl_net_ofi_mem_noaccess(void *data, size_t size);
*/
static inline void nccl_net_ofi_mem_defined_unaligned(void *data, size_t size)
{
void *aligned = (void *)NCCL_OFI_ROUND_DOWN((uintptr_t)data, MEMCHECK_GRANULARITY);
size_t offset = data - aligned;
nccl_net_ofi_mem_defined(data - offset, size + offset);
uintptr_t aligned = NCCL_OFI_ROUND_DOWN((uintptr_t)data, MEMCHECK_GRANULARITY);
size_t offset = (uintptr_t)data - aligned;
nccl_net_ofi_mem_defined((void*)((uintptr_t)data - offset), size + offset);
}

/**
@@ -96,9 +96,9 @@ static inline void nccl_net_ofi_mem_defined_unaligned(void *data, size_t size)
*/
static inline void nccl_net_ofi_mem_undefined_unaligned(void *data, size_t size)
{
void *aligned = (void *)NCCL_OFI_ROUND_DOWN((uintptr_t)data, MEMCHECK_GRANULARITY);
size_t offset = data - aligned;
nccl_net_ofi_mem_undefined(data - offset, size + offset);
uintptr_t aligned = NCCL_OFI_ROUND_DOWN((uintptr_t)data, MEMCHECK_GRANULARITY);
size_t offset = (uintptr_t)data - aligned;
nccl_net_ofi_mem_undefined((void*)((uintptr_t)data - offset), size + offset);
}

/**
@@ -107,9 +107,9 @@ static inline void nccl_net_ofi_mem_undefined_unaligned(void *data, size_t size)
*/
static inline void nccl_net_ofi_mem_noaccess_unaligned(void *data, size_t size)
{
void *aligned = (void *)NCCL_OFI_ROUND_DOWN((uintptr_t)data, MEMCHECK_GRANULARITY);
size_t offset = data - aligned;
nccl_net_ofi_mem_noaccess(data - offset, size + offset);
uintptr_t aligned = NCCL_OFI_ROUND_DOWN((uintptr_t)data, MEMCHECK_GRANULARITY);
size_t offset = (uintptr_t)data - aligned;
nccl_net_ofi_mem_noaccess((void*)((uintptr_t)data - offset), size + offset);
}

/**