On 3 August 2011 14:18, Francesc Alted <fal...@pytables.org> wrote: > Hi, > > I'm trying to take advantage of the exciting new parallelizing > capabilities recently introduced in forthcoming 0.15 version, but I'm > having a small difficulty. When I try to compile a small demo routing > (attached), I'm getting this error: > > $ cython -a mandel.pyx > > Error compiling Cython file: > ------------------------------------------------------------ > ... > for pix in prange(num_pixels, nogil=True, schedule="dynamic"): > x = pix % width > y = pix // width > cr = begin_r + (x * span_r / (width + 1.0)) > ci = begin_i + (y * span_i / (height + 1.0)) > n = MandelbrotCalculate(cr, ci, maxiter) > ^ > ------------------------------------------------------------ > > mandel.pyx:50:31: Calling gil-requiring function not allowed without gil > > While trying to figure out why MandelbrotCalculate does require GIL, I > replaced the "for prange", by a trivial "for range", and the > annotated HTML source reveals that the only line in (light) yellow in > this function is > > return n > > which is translated as: > > /* "mandel.pyx":22 > * ti = 2*zr*zi + ci > * zr, zi = tr, ti > * return n # <<<<<<<<<<<<<< > * > * @cython.boundscheck(False) > */ > __pyx_r = __pyx_v_n; > goto __pyx_L0; > > __pyx_r = 0; > __pyx_L0:; > __Pyx_RefNannyFinishContext(); > return __pyx_r; > } > > My guess is that this __Pyx_RefNannyFinishContext() call is preventing > to call the routing from the parallel loop. Is that a bug, a > limitation of current implementation or it is just that I'm missing > something? > > Thanks, > > -- > Francesc Alted > > _______________________________________________ > cython-devel mailing list > cython-devel@python.org > http://mail.python.org/mailman/listinfo/cython-devel > >
Hey Francesc! The problem is that you didn't declare MandelbrotCalculate 'nogil'. You have to write cdef long MandelbrotCalculate(double cr, double ci, long maxiter) nogil: ... That's all, and it will compile :) Cheers, Mark _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel