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 build issues with recent Cython versions. #15

Merged
merged 2 commits into from
Oct 9, 2023
Merged
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ main: main.c libmpsort-omp.a libradixsort.a
$(CC) $(CFLAGS) -o main $^
main-mpi: main-mpi.c libmpsort-mpi.a libradixsort.a
$(MPICC) $(CFLAGS) -o main-mpi $^
bench-mpi: bench-mpi.c libmpsort-mpi.a libradixsort.a mp-mpiu.h
rainwoodman marked this conversation as resolved.
Show resolved Hide resolved
bench-mpi: bench-mpi.c libmpsort-mpi.a libradixsort.a
$(MPICC) $(CFLAGS) -o bench-mpi $^
test-issue7: test-issue7.c libmpsort-mpi.a libradixsort.a
$(MPICC) $(CFLAGS) -o test-issue7 $^
Expand Down
2 changes: 1 addition & 1 deletion bench-mpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

#include <mpi.h>
#include "mpsort.h"
#include "mpiu.h"
#include "mp-mpiu.h"
rainwoodman marked this conversation as resolved.
Show resolved Hide resolved

static void radix_int(const void * ptr, void * radix, void * arg) {
*(uint64_t*)radix = *(const int64_t*) ptr + INT64_MIN;
Expand Down
18 changes: 9 additions & 9 deletions mpsort/binding.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,21 @@ cdef extern from "mpsort.h":
# Use the Python memory allocator for large allocations.
#
cdef extern from "mp-mpiu.h":
ctypedef void * (*mpiu_malloc_func)(char * name, size_t size, char * file, int line, void * userdata)
ctypedef void (*mpiu_free_func)(void * ptr, const char * file, int line, void * userdata)
ctypedef void * (*mpiu_malloc_func)(char * name, size_t size, char * file, int line, void * userdata) except? NULL
ctypedef void (*mpiu_free_func)(void * ptr, const char * file, int line, void * userdata) except*
void MPIU_SetMalloc(mpiu_malloc_func malloc, mpiu_free_func free, void * userdata)

cdef void * pymalloc(char * name, size_t size, char * file, int line, void * userdata):
cdef void * pymalloc(char * name, size_t size, char * file, int line, void * userdata) except? NULL:
return PyMem_Malloc(size)

cdef void pyfree(void * ptr, char * file, int line, void * userdata):
cdef void pyfree(void * ptr, char * file, int line, void * userdata) except*:
PyMem_Free(ptr)

MPIU_SetMalloc(pymalloc, pyfree, NULL)

# how to build the radix:
cdef struct RadixData:
void (*radix_func)(const void * ptr, void * radix, void * arg) nogil
void (*radix_func)(const void * ptr, void * radix, void * arg) noexcept nogil
ptrdiff_t radix_offset
int elsize
int radix_nmemb
Expand Down Expand Up @@ -78,7 +78,7 @@ cdef radix_data_init(RadixData * self, numpy.dtype dtype, radixkey):
else:
raise TypeError("data[%s] is not u8 or i8" % (radixkey))

cdef void radix_func_u8(const void * ptr, void * radix, void * arg) nogil:
cdef void radix_func_u8(const void * ptr, void * radix, void * arg) noexcept nogil:
cdef RadixData *radixdata = <RadixData*> arg
cdef char * rptr = <char*>radix
cdef char * cptr = <char*> ptr
Expand All @@ -88,7 +88,7 @@ cdef void radix_func_u8(const void * ptr, void * radix, void * arg) nogil:
memcpy(rptr, &value, 8)
rptr += 8

cdef void radix_func_i8(const void * ptr, void * radix, void * arg) nogil:
cdef void radix_func_i8(const void * ptr, void * radix, void * arg) noexcept nogil:
cdef RadixData *radixdata = <RadixData*> arg
cdef char * rptr = <char*>radix
cdef char * cptr = <char*> ptr
Expand All @@ -99,7 +99,7 @@ cdef void radix_func_i8(const void * ptr, void * radix, void * arg) nogil:
memcpy(rptr, &value, 8)
rptr += 8

cdef void radix_func_u4(const void * ptr, void * radix, void * arg) nogil:
cdef void radix_func_u4(const void * ptr, void * radix, void * arg) noexcept nogil:
cdef RadixData *radixdata = <RadixData*> arg
cdef char * rptr = <char*>radix
cdef char * cptr = <char*> ptr
Expand All @@ -109,7 +109,7 @@ cdef void radix_func_u4(const void * ptr, void * radix, void * arg) nogil:
memcpy(rptr, &value, 8)
rptr += 8

cdef void radix_func_i4(const void * ptr, void * radix, void * arg) nogil:
cdef void radix_func_i4(const void * ptr, void * radix, void * arg) noexcept nogil:
cdef RadixData *radixdata = <RadixData*> arg
cdef char * rptr = <char*>radix
cdef char * cptr = <char*> ptr
Expand Down
2 changes: 1 addition & 1 deletion mpsort/tests/test_mpsort.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def test_sort_i8(comm):

@MPITest(commsize=(1, 2, 3, 4))
def test_sort_u8(comm):
s = numpy.uint64(numpy.random.random(size=1000) * 1000 - 400)
s = numpy.uint64(numpy.random.uniform(size=1000, low=-1000000, high=1000000) * 1000 - 400)

local = split(s, comm)
s = heal(local, comm)
Expand Down