[Cython] OpenMP support
Sturla Molden
sturla at molden.no
Fri Mar 11 12:13:28 CET 2011
Den 11.03.2011 01:46, skrev Robert Bradshaw:
> On a slightly higher level, are we just trying to use OpenMP from
> Cython, or are we trying to build it into the language?
OpenMP is a specification, not a particular implementation.
Implementation for Cython should either be compiler pragmas or a library.
I'd like it to be a library, as it should also be usable from Python. I
have made some progress on the library route, depending on Cython's
closures.
nogil makes things feel a bit awkward, though.
We could for example imagine code like this:
with openmp.ordered(i):
<suite>
Context managers are forbidden in nogil AFAIK. So we end up with ugly
hacks like this:
with nogil:
if openmp._ordered(i): # always returns 1, but will synchronize
<suite>
Would it be possible to:
- Make context managers that are allowed without the GIL? We don't need
to worry about exceptions, but it should be possible to short-circuit
from __enter__ to __exit__.
- Have cpdefs that are callable without the GIL?
This would certainly make OpenMP syntax look cleaner.
Sturla
More information about the cython-devel
mailing list