On Tue, 12 Aug 2014 14:26:31, Sturla Molden wrote: > Cython does not do an error here:[... > - i is recognized as private > - r is recognized as reduction > - w is (correctly) recognized as shared
Not according to the documentation. http://docs.cython.org/src/userguide/parallelism.html documentation for cython.parallel.parallel says "A contained prange will be a worksharing loop that is not parallel, so any variable assigned to in the parallel section is also private to the prange. Variables that are private in the parallel block are unavailable after the parallel block.". Variable w is such a variable. Furthermore, if cython is correct, why does GCC report an error on the cython generated C code? My point here is that there is a bug because (a) cython does not behave as documented, and (b) it generates invalid C code despite not reporting an error. > Personally I prefer to avoid OpenMP and just use Python threads and an > internal function (closure) or an internal class. If you start to use OpenMP, > Apple's libdispatch ("GCD"), Intel TBB, or Intel clikplus, you will soon discover > that they are all variations over the same theme: a thread pool and a closure. I am making heavy uses of OpenBlas which also uses OpenMP. Using the same queue manager prevents lots of CPU provisioning problem. Using multiple queue managers in the same code does not work as well because they are not aware of what the other one is doing. - L. _______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel