[Cython] CEP: prange for parallel loops
Robert Bradshaw
robertwb at math.washington.edu
Tue Apr 5 16:53:33 CEST 2011
On Tue, Apr 5, 2011 at 3:51 AM, Stefan Behnel <stefan_ml at behnel.de> wrote:
> mark florisson, 04.04.2011 21:26:
>>
>> For clarity, I'll add an example:
>>
>> def f(np.ndarray[double] x, double alpha):
>> cdef double s = 0
>> cdef double tmp = 2
>> cdef double other = 6.6
>>
>> with nogil:
>> for i in prange(x.shape[0]):
>> # reading 'tmp' makes it firstprivate in addition to
>> lastprivate
>> # 'other' is only ever read, so it's shared
>> printf("%lf %lf %lf\n", tmp, s, other)
>
> So, adding a printf() to your code can change the semantics of your
> variables? That sounds like a really bad design to me.
That's what I was thinking. Basically, if you do an inlace operation,
then it's a reduction variable, no matter what else you do to it
(including possibly a direct assignment, though we could make that a
compile-time error).
- Robert
More information about the cython-devel
mailing list