#3498: [with patch, needs review] make numpy the backend for matrices over CDF 
and
RDF
----------------------------+-----------------------------------------------
 Reporter:  jason           |        Owner:  was       
     Type:  defect          |       Status:  new       
 Priority:  major           |    Milestone:  sage-3.1.3
Component:  linear algebra  |   Resolution:            
 Keywords:                  |  
----------------------------+-----------------------------------------------
Comment (by jason):

 Some more timings from respectably-sized matrices show that numpy is
 indeed way faster most of the time and neck-and-neck the rest of the time.
 The GSL determinant speed below is most likely from from caching the LU
 decomposition that had been computed for something before and using that
 to compute the determinant.

 Before patch
 {{{
 sage: # Before patches: GSL
 sage: m=random_matrix(RDF,500,min=-2^32,max=2^32)
 sage: timeit('m+m')
 125 loops, best of 3: 7.2 ms per loop
 sage: timeit('m*m')
 5 loops, best of 3: 90.6 ms per loop
 sage: timeit('~m')
 5 loops, best of 3: 639 ms per loop
 sage: timeit('m.det()')
 625 loops, best of 3: 19.1 µs per loop
 sage: timeit('m.transpose()')
 125 loops, best of 3: 5.76 ms per loop
 sage: timeit('m.LU()')
 5 loops, best of 3: 97.6 ms per loop
 sage: %time m.SVD()
 CPU times: user 8.26 s, sys: 0.09 s, total: 8.35 s
 Wall time: 9.16 s

 (500 x 500 dense matrix over Real Double Field,
  500 x 500 dense matrix over Real Double Field,
  500 x 500 dense matrix over Real Double Field)
 sage: %time m.QR()
 CPU times: user 2.37 s, sys: 0.05 s, total: 2.42 s
 Wall time: 2.68 s

 (500 x 500 dense matrix over Real Double Field,
  500 x 500 dense matrix over Real Double Field)
 sage: b=vector(RDF,range(500))
 sage: timeit('m.solve_left(b)')
 5 loops, best of 3: 72 ms per loop
 sage: %time a=m.eigenspaces()
 CPU times: user 26.61 s, sys: 0.42 s, total: 27.03 s
 Wall time: 30.09 s
 }}}

 After patches
 {{{
 sage: # After patches: numpy
 sage: m=random_matrix(RDF,500,min=-2^32,max=2^32)
 sage: timeit('m+m')
 125 loops, best of 3: 2.78 ms per loop
 sage: timeit('m*m')
 5 loops, best of 3: 89.2 ms per loop
 sage: timeit('~m')
 5 loops, best of 3: 224 ms per loop
 sage: timeit('m.det()')
 5 loops, best of 3: 62 ms per loop
 sage: timeit('m.transpose()')
 625 loops, best of 3: 32.9 µs per loop
 sage: timeit('m.LU()')
 5 loops, best of 3: 15.1 ms per loop
 sage: timeit('m.SVD()')
 5 loops, best of 3: 1.42 s per loop
 sage: %time m.SVD()
 CPU times: user 1.19 s, sys: 0.06 s, total: 1.25 s
 Wall time: 1.42 s

 (500 x 500 dense matrix over Real Double Field,
  500 x 500 dense matrix over Real Double Field,
  500 x 500 dense matrix over Real Double Field)
 sage: %time m.QR()
 CPU times: user 0.26 s, sys: 0.03 s, total: 0.28 s
 Wall time: 0.32 s

 (500 x 500 dense matrix over Real Double Field,
  500 x 500 dense matrix over Real Double Field)
 sage: b=vector(RDF,range(500))
 sage: timeit('m.solve_left(b)')
 5 loops, best of 3: 68.6 ms per loop
 sage: %time a=m.eigenspaces()
 CPU times: user 27.52 s, sys: 0.31 s, total: 27.83 s
 Wall time: 30.00 s
 sage:
 }}}

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/3498#comment:9>
Sage <http://sagemath.org/>
Sage - Open Source Mathematical Software: Building the Car Instead of 
Reinventing the Wheel
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to