[Cython] OpenMP support
Sturla Molden
sturla at molden.no
Tue Mar 8 16:10:35 CET 2011
Den 08.03.2011 11:34, skrev mark florisson:
> However, considering that OpenMP has quite a few constructs,
No, OpenMP has very few contructs, not quite a few. And most of them are
not needed, nor wanted, because the functionality is covered by the
Python language (such as scoping rules).
I.e. we do not need -- nor want -- things like private, shared,
firstprivate or lastprivate in Cython, because the scope of variables
inside closures are already covered by Python syntax. OpenMP is just
making up for the lack of closures in C here.
We don't need to implement #pragma omp critical, because we have
threading.Lock.
We don't need to implement #pragma omp atomic, because we have the GIL
(as well as OS and compiler support for atomic operations).
#pragma omp barrier becomes a butterfly of threading.Event.
Etc.
There is not really much left to implement. We need a decorator to
launch closures as parallel blocks (trivial) and classes to do static,
dynamic and guided load balancing (trivial as well).
It is hardly a page of code to write, just a handful of small classes,
once Cython has closures working properly.
Sturla
More information about the cython-devel
mailing list