[Numpy-discussion] Documentation question.

Travis Oliphant travis at continuum.io
Wed Feb 1 22:45:18 EST 2012


I believe I sent the wrong link to PDL, threading, earlier....

http://www.johnlapeyre.com/pdl/pdldoc/newbook/node5.html#SECTION005100000000000000000

Is the explanation of threading in Perl that I was reading about.   I have read about Threading earlier and really liked it's generality.   I would be interested to see what we can support in NumPy.   I think there is overlap with generalized functions but they are not the same thing.  

I had sent the other link awhile ago to a different set of people :-) but I guess my Ctrl-V didn't quite work....  Sorry about that noise. 

-Travis




On Feb 1, 2012, at 8:31 PM, Mark Wiebe wrote:

> On Wed, Feb 1, 2012 at 6:14 PM, Travis Oliphant <travis at continuum.io> wrote:
> 
> On Feb 1, 2012, at 7:04 PM, Mark Wiebe wrote:
> 
>> On Wed, Feb 1, 2012 at 3:29 PM, Charles R Harris <charlesr.harris at gmail.com> wrote:
>> The macro PyArray_RemoveLargest has been replaced by PyArray_RemoveSmallest (which seems strange), but I wonder if this documentation still makes sense.
>> 
>> My impression about this code is that it went through a number of rounds trying to choose an iteration order heuristic that has improved performance over C-order. The change of Largest to Smallest probably reflects one of these heuristic changes. I think it's safe to say that the nditer introduced in 1.6 completely removes the need for this functionality. I did a grep for this function in the master branch, and it is no longer used by NumPy internally.
> 
> There is a common need to iterate over all but one dimension of a NumPy array.   The final dimension is iterated over in an "internal" loop.   This is the essence of how ufuncs work and avoid the possibly expensive overhead of a C-call during each iteration.
> 
> This use-case is handled by the flag NPY_ITER_EXTERNAL_LOOP (http://docs.scipy.org/doc/numpy/reference/c-api.iterator.html#NPY_ITER_EXTERNAL_LOOP) in the nditer.
>  
> Initially, it seemed prudent to remove the dimension that had the largest size (so that the final inner-iteration was the largest number).   Later, timings revealed that that the 'inner' dimension should be the one with the smallest *striding*.   I have not looked at nditer in detail, but would appreciate seeing an explanation of how the nditer approach removes the need for this macro.   When that is clear, then this macro can and should be deprecated. 
> 
> To see the full list of what to use in the nditer versus the older iterators, I created a table:
> 
> http://docs.scipy.org/doc/numpy/reference/c-api.iterator.html#converting-from-previous-numpy-iterators
> 
> Only PyArray_BroadcastToShape and PyArray_MultiIter_NEXTi don't have a nice correspondence, because they refer to implementation details in the previous iterators which are done differently in the nditer.
> 
> -Mark
>  
> 
> -Travis
> 
> 
> 
> 
>> 
>> -Mark
>>  
>> diff --git a/doc/source/user/c-info.beyond-basics.rst b/doc/source/user/c-info.beyond-basics.rs
>> index 9ed2ab3..3437985 100644
>> --- a/doc/source/user/c-info.beyond-basics.rst
>> +++ b/doc/source/user/c-info.beyond-basics.rst
>> @@ -189,7 +189,7 @@ feature follows.
>>          PyArray_MultiIter_NEXT(mobj);
>>      }
>>  
>> -The function :cfunc:`PyArray_RemoveLargest` ( ``multi`` ) can be used to
>> +The function :cfunc:`PyArray_RemoveSmallest` ( ``multi`` ) can be used to
>>  take a multi-iterator object and adjust all the iterators so that
>>  iteration does not take place over the largest dimension (it makes
>>  that dimension of size 1). The code being looped over that makes use
>> 
>> Chuck
>> 
>> 
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion at scipy.org
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>> 
>> 
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion at scipy.org
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
> 
> 
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
> 
> 
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20120201/8bfeccb4/attachment.html>


More information about the NumPy-Discussion mailing list