[Cython] OpenMP 4.5 array reductions

Klemm, Michael michael.klemm at intel.com
Sun Sep 2 07:41:14 EDT 2018


Hi,

You could solve this by specializing the code according to the version of the OpenMP specification supported:

#if _OPENMP >= 201511
// OpenMP 4.5 and newer
#else
// features up to OpenMP 3.1
#endif

It’s more work in the compiler, but the auto-generated code does not have to be pretty. ☺

Kind regards,
        -michael

From: cython-devel [mailto:cython-devel-bounces+michael.klemm=intel.com at python.org] On Behalf Of Nathan Goldbaum
Sent: Friday, August 31, 2018 4:51 PM
To: Core developer mailing list of the Cython compiler <cython-devel at python.org>
Subject: [Cython] OpenMP 4.5 array reductions

Hi all,

I'm curious if there would be any interest in adding support for OpenMP 4.5 array reduction in the cython compiler or alternatively detecting these cases and raising a cython compiler error.

Currently cython is generating code that will compile but might lead to race conditions. See:

https://github.com/cython/cython/issues/2316
https://github.com/cython/cython/issues/1504

The trouble with fixing this in the cython compiler is that adding the appropriate OpenMP pragmas might generate code that will no longer compile on compilers that don't support OpenMP 4.5. However perhaps that's a better alternative than the status quo, which is generating code that might produce random results.

I'd very much appreciate any feedback or advice here as this is currently blocking our ability to easily add OpenMP to our cython code in places where we'd like threads to do parallel reductions on large arrays. I would also not be surprised if there is code in the wild that is racy and silently producing incorrect results.

-Nathan
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cython-devel/attachments/20180902/c0d88533/attachment.html>


More information about the cython-devel mailing list