Re: [Numpy-discussion] np.dot and 'out' bug

2013-05-23 Thread Matthieu Brucher
Hi,

It's to be expected. You are overwritten one of your input vector while it
is still being used.
So not a numpy bug ;)

Matthieu


2013/5/23 Pierre Haessig pierre.haes...@crans.org

 Hi Nicolas,

 Le 23/05/2013 15:45, Nicolas Rougier a écrit :
  if I use either a or b as output, results are wrong (and nothing in the
 dot documentation prevents me from doing this):
 
  a = np.array([[1, 2], [3, 4]])
  b = np.array([[1, 2], [3, 4]])
  np.dot(a,b,out=a)
 
  - array([[ 6, 20],
[15, 46]])
 
 
  Can anyone confirm this behavior ? (tested using numpy 1.7.1)
 I just reproduced the same weird results with numpy 1.6.2

 best,
 Pierre


 ___
 NumPy-Discussion mailing list
 NumPy-Discussion@scipy.org
 http://mail.scipy.org/mailman/listinfo/numpy-discussion




-- 
Information System Engineer, Ph.D.
Blog: http://matt.eifelle.com
LinkedIn: http://www.linkedin.com/in/matthieubrucher
Music band: http://liliejay.com/
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] np.dot and 'out' bug

2013-05-23 Thread Nathaniel Smith
On Thu, May 23, 2013 at 3:19 PM, Matthieu Brucher
matthieu.bruc...@gmail.com wrote:
 Hi,

 It's to be expected. You are overwritten one of your input vector while it
 is still being used.
 So not a numpy bug ;)

Sure, that's clearly what's going on, but numpy shouldn't let you
silently shoot yourself in the foot like that. Re-using input as
output is a very common operation, and usually supported fine.
Probably we should silently make a copy of any input(s) that overlap
with the output? For high-dimensional dot, buffering temprary
subspaces would still be more memory efficient than anything users
could reasonably accomplish by hand.

-n
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] np.dot and 'out' bug

2013-05-23 Thread Nicolas Rougier

 
 Sure, that's clearly what's going on, but numpy shouldn't let you
 silently shoot yourself in the foot like that. Re-using input as
 output is a very common operation, and usually supported fine.
 Probably we should silently make a copy of any input(s) that overlap
 with the output? For high-dimensional dot, buffering temprary
 subspaces would still be more memory efficient than anything users
 could reasonably accomplish by hand.



Also, from a user point of view it is difficult to sort out which functions 
currently allow 'out=a' or  out=b' since nothing in the 'dot' documentation 
warned me about such problem.


Nicolas



___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] np.dot and 'out' bug

2013-05-23 Thread Matthieu Brucher
In my point of view, you should never use an output argument equal to an
input argument. It can impede a lot of optimizations.

Matthieu


2013/5/23 Nicolas Rougier nicolas.roug...@inria.fr


 
  Sure, that's clearly what's going on, but numpy shouldn't let you
  silently shoot yourself in the foot like that. Re-using input as
  output is a very common operation, and usually supported fine.
  Probably we should silently make a copy of any input(s) that overlap
  with the output? For high-dimensional dot, buffering temprary
  subspaces would still be more memory efficient than anything users
  could reasonably accomplish by hand.



 Also, from a user point of view it is difficult to sort out which
 functions currently allow 'out=a' or  out=b' since nothing in the 'dot'
 documentation warned me about such problem.


 Nicolas



 ___
 NumPy-Discussion mailing list
 NumPy-Discussion@scipy.org
 http://mail.scipy.org/mailman/listinfo/numpy-discussion




-- 
Information System Engineer, Ph.D.
Blog: http://matt.eifelle.com
LinkedIn: http://www.linkedin.com/in/matthieubrucher
Music band: http://liliejay.com/
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] np.dot and 'out' bug

2013-05-23 Thread Nathaniel Smith
On Thu, May 23, 2013 at 3:57 PM, Matthieu Brucher
matthieu.bruc...@gmail.com wrote:
 In my point of view, you should never use an output argument equal to an
 input argument. It can impede a lot of optimizations.

This is a fine philosophy in some cases, but a non-starter in others.
Python doesn't have optimizations in the first place, and in-place
operations are often critical for managing memory usage. '+=' is an
important operator, and in numpy it's just 'np.add(a, b, out=a)' under
the hood.

On Thu, May 23, 2013 at 3:50 PM, Nicolas Rougier
nicolas.roug...@inria.fr wrote:
 Also, from a user point of view it is difficult to sort out which functions 
 currently allow 'out=a' or  out=b' since nothing in the 'dot' documentation 
 warned me about such problem.

That's because AFAIK all functions allow out=a and out=b, except for
those which contain bugs :-).

Can you file a bug in the bug tracker so this won't get lost?

-n
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion


Re: [Numpy-discussion] np.dot and 'out' bug

2013-05-23 Thread Nicolas Rougier


 Can you file a bug in the bug tracker so this won't get lost?

Done.
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion