[Numpy-discussion] Numexpr giving randomized results on arrays larger than 2047 elements

John Salvatier jsalvati at u.washington.edu
Mon Jan 24 14:53:14 EST 2011


You're right, I got the same behavior. Interesting.

On Mon, Jan 24, 2011 at 11:35 AM, Warren Weckesser <
warren.weckesser at enthought.com> wrote:

>
>
> On Mon, Jan 24, 2011 at 1:13 PM, John Salvatier <jsalvati at u.washington.edu
> > wrote:
>
>> Looks like this is related to issue 41 (
>> http://code.google.com/p/numexpr/issues/detail?id=41&can=1).
>
>
>
> That might not be the same issue.
>
> You can fix the "randomness" by setting the number of threads to 1, as in
> input [6] here:
>
> In [1]: import numexpr as ne
>
> In [2]: x = zeros(8192)+0.01
>
> In [3]: ne.evaluate('sum(x, axis=0)')
> Out[3]: array(71.119999999999479)
>
> In [4]: ne.evaluate('sum(x, axis=0)')
> Out[4]: array(81.920000000005004)
>
> In [5]: ne.evaluate('sum(x, axis=0)')
> Out[5]: array(68.379999999998077)
>
> In [6]: ne.set_num_threads(1)
>
> In [7]: ne.evaluate('sum(x, axis=0)')
> Out[7]: array(81.920000000005004)
>
> In [8]: ne.evaluate('sum(x, axis=0)')
> Out[8]: array(81.920000000005004)
>
> In [9]: ne.evaluate('sum(x, axis=0)')
> Out[9]: array(81.920000000005004)
>
>
> Warren
>
>
>
>>
>>
>> On Mon, Jan 24, 2011 at 10:29 AM, John Salvatier <
>> jsalvati at u.washington.edu> wrote:
>>
>>> I also get the same issue with prod()
>>>
>>>
>>> On Mon, Jan 24, 2011 at 10:23 AM, Warren Weckesser <
>>> warren.weckesser at enthought.com> wrote:
>>>
>>>> I see the same "randomness", but at a different array size:
>>>>
>>>> In [23]: numpy.__version__
>>>> Out[23]: '1.4.0'
>>>>
>>>> In [24]: import numexpr
>>>>
>>>> In [25]: numexpr.__version__
>>>> Out[25]: '1.4.1'
>>>>
>>>> In [26]: x = zeros(8192)+0.01
>>>>
>>>> In [27]: print evaluate('sum(x, axis=0)')
>>>> 72.97
>>>>
>>>> In [28]: print evaluate('sum(x, axis=0)')
>>>> 66.92
>>>>
>>>> In [29]: print evaluate('sum(x, axis=0)')
>>>> 67.9
>>>>
>>>> In [30]: x = zeros(8193)+0.01
>>>>
>>>> In [31]: print evaluate('sum(x, axis=0)')
>>>> 72.63
>>>>
>>>> In [32]: print evaluate('sum(x, axis=0)')
>>>> 71.74
>>>>
>>>> In [33]: print evaluate('sum(x, axis=0)')
>>>> 81.93
>>>>
>>>> In [34]: x = zeros(8191)+0.01
>>>>
>>>> In [35]: print evaluate('sum(x, axis=0)')
>>>> 81.91
>>>>
>>>> In [36]: print evaluate('sum(x, axis=0)')
>>>> 81.91
>>>>
>>>>
>>>> Warren
>>>>
>>>>
>>>>
>>>> On Mon, Jan 24, 2011 at 12:19 PM, John Salvatier <
>>>> jsalvati at u.washington.edu> wrote:
>>>>
>>>>>  Forgot to mention that I am using numexpr 1.4.1 and numpy 1.5.1
>>>>>
>>>>>
>>>>> On Mon, Jan 24, 2011 at 9:47 AM, John Salvatier <
>>>>> jsalvati at u.washington.edu> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I have discovered a strange bug with numexpr. numexpr.evaluate gives
>>>>>> randomized results on arrays larger than 2047 elements. The following
>>>>>> program demonstrates this:
>>>>>>
>>>>>> from numpy import *
>>>>>> from numexpr import evaluate
>>>>>>
>>>>>> def func(x):
>>>>>>
>>>>>>     return evaluate("sum(x, axis = 0)")
>>>>>>
>>>>>>
>>>>>> x = zeros(2048)+.01
>>>>>>
>>>>>> print evaluate("sum(x, axis = 0)")
>>>>>> print evaluate("sum(x, axis = 0)")
>>>>>>
>>>>>> For me this prints different results each time, for example:
>>>>>>
>>>>>> 11.67
>>>>>> 14.84
>>>>>>
>>>>>> If we set the size to 2047 I get consistent results.
>>>>>>
>>>>>> 20.47
>>>>>> 20.47
>>>>>>
>>>>>> Interestingly, if I do not add .01 to x, it consistently sums to 0.
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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/20110124/63c56fee/attachment.html>


More information about the NumPy-Discussion mailing list