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:[email protected]] On Behalf Of
Nathan Goldbaum
Sent: Friday, August 31, 2018 4:51 PM
To: Core developer mailing list of the Cython compiler <[email protected]>
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
_______________________________________________
cython-devel mailing list
[email protected]
https://mail.python.org/mailman/listinfo/cython-devel