On 5 April 2011 09:21, Dag Sverre Seljebotn <d.s.seljeb...@astro.uio.no> wrote: > There's a (much shorter) proposal for a more explicit parallelism construct > at > > http://wiki.cython.org/enhancements/parallelblock > > This is a little more verbose for the simplest case, but makes the > medium-cases that needs work buffers much simpler, and is also more explicit > and difficult to get wrong.
I actually think your else block really complicates matters. In this example even your index variable is not well-defined right after the loop, because it's not "declared lastprivate through the else block". There is really no reason to make variables private instead of lastprivate (and additionally firstprivate if needed) by default. I think we should allow at least both options, so if the variables are declared in the parallel nogil block they can only be used inside that block (but are still lastprivate, as the first loop may be followed by other code). But the user will also still be able to declare and define stuff outside of the block and omit the with parallel block entirely. And again, you will want something like cython.parallel.range instead of just range, as you will want to pass scheduling parameters to the range(), and not the parallel. So e.g. you can still write something like this: cdef Py_ssize_t i for i in cython.parallel.range(..., schedule='dynamic', nogil=True): do something print i # i is well-defined here My point is, implicit first- and lastprivate can be implicit because it works the exact same way as the sequential python version does. The only remaining pitfall is the in-place operator which declares a reduction. > I am not sure myself which one I prefer of this and prange. > > Justification for Cython-specific syntax: This is something that is really > only useful if you can release the GIL *outside* of the loop. So I feel this > is an area where a custom Cython solution is natural, sort of like "cdef > extern", and the buffer access. > > Since a similar pure-Python solution is rather useless, I also think there's > less incentive for making something that works well in pure-Python mode. Which feature is Cython specific here? The 'with a, b as c:' thing? > Dag Sverre > _______________________________________________ > cython-devel mailing list > cython-devel@python.org > http://mail.python.org/mailman/listinfo/cython-devel > _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel