From 1892b77a46e1b65979777ae625a0c03565785495 Mon Sep 17 00:00:00 2001 From: Pierre Chanial Date: Wed, 20 May 2015 10:46:48 +0200 Subject: [PATCH] Compatibility with mpi4py <= 1.3.1. --- .gitignore | 1 + python/libsharp/libsharp.pyx | 3 ++- python/libsharp/libsharp_mpi.pyx | 10 ++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 python/libsharp/libsharp_mpi.pyx diff --git a/.gitignore b/.gitignore index b555caa..4cde3de 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ /sharp_oracle.inc /python/libsharp/libsharp.c +/python/libsharp/libsharp_mpi.c diff --git a/python/libsharp/libsharp.pyx b/python/libsharp/libsharp.pyx index ddfcd98..1c783fe 100644 --- a/python/libsharp/libsharp.pyx +++ b/python/libsharp/libsharp.pyx @@ -105,7 +105,8 @@ def sht(jobtype, geom_info ginfo, alm_info ainfo, double[:, :, ::1] input, from mpi4py import MPI if not isinstance(comm, MPI.Comm): raise TypeError('comm must be an mpi4py communicator') - comm_ptr = MPI._addressof(comm) + from .libsharp_mpi import _addressof + comm_ptr = _addressof(comm) with nogil: r = sharp_execute_mpi_maybe ( comm_ptr, jobtype_i, diff --git a/python/libsharp/libsharp_mpi.pyx b/python/libsharp/libsharp_mpi.pyx new file mode 100644 index 0000000..402b4f6 --- /dev/null +++ b/python/libsharp/libsharp_mpi.pyx @@ -0,0 +1,10 @@ +from mpi4py.MPI cimport Comm +cdef extern from "Python.h": + object PyLong_FromVoidPtr(void*) + +# For compatibility with mpi4py <= 1.3.1 +# Newer versions could use the MPI._addressof function +def _addressof(comm): + cdef void *ptr = NULL + ptr = &(comm).ob_mpi + return PyLong_FromVoidPtr(ptr)