On Tue, Dec 20, 2011 at 9:10 PM, Mark Wiebe <mwwi...@gmail.com> wrote:
> On Tue, Dec 20, 2011 at 6:24 PM, Geoffrey Irving <irv...@naml.us> wrote:
>>
>> Hello,
>>
>> As a followup to the prior thread on bugs in user defined types in
>> numpy, I converted my rational number class from C++ to C and switched
>> to 32 bits to remove the need for unportable 128 bit numbers.  It
>> should be usable as a fairly thorough test case for user defined types
>> now.  It does rather more than a minimal test case would need to do,
>> but that isn't a problem unless you're concerned about code size.  Let
>> me know if any further changes are needed before it's suitable for
>> inclusion in numpy as a test case.  The repository is here:
>>
>>    https://github.com/girving/rational
>>
>> The tests run under either py.test or nose.
>>
>> For completeness, my branch fixing all but one of the bugs I found in
>> numpy user defined types is here:
>>
>>    https://github.com/girving/numpy/tree/fixuserloops
>>
>> The remaining bug is that numpy incorrectly releases the GIL during
>> casts even though NPY_NEEDS_API is set.  The resulting crash goes away
>> if the line defining ACQUIRE_GIL is uncommented.  With the necessary
>> locks in place, all my tests pass with my branch of numpy.  I haven't
>> tracked this one down and fixed it yet, but it shouldn't be hard to do
>> so.
>
>
> Looks great. I've added some comments to the pull request for the
> fixuserloops branch, which is here:
>
> https://github.com/numpy/numpy/pull/175
>
> I would advise anyone with an interest in the low-level aspects of how
> NumPy's handling of the GIL and multi-threading/concurrency should evolve to
> take a look. Prior to anything I contributed, NumPy hardcoded whether to
> release the GIL during ufuncs or not. I added a needs_api flag in a few

So releasing the GIL wasn't something the user could get at? (I'm
curious if this is something that should be mentioned in the ufunc
tutorial on the numpy docs.)

> places to indicate whether the inner loop functions call the CPython API or
> not. Note that for ABI compatibility reasons, this flag is not 100%
> correctly integrated throughout NumPy.

Could you expand a little bit on this ABI compatibility issue?

>
> What Geoffrey is proposing here conflicts with the way I imagined the flag
> would be used, but supporting both of our ways of calling the inner loop
> seems useful to me. Take a look at the pull request for more details.
>
> Cheers,
> Mark
>
>>
>>
>> Geoffrey
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion@scipy.org
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to