Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
Patrick Roland <patrick.rolande@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: Why is Mata much slower than MATLAB at matrix inversion? |

Date |
Fri, 20 Jul 2012 12:18:15 -0700 |

The matrix formation takes a negligible amount of time. luinv() seems to be (much) faster than cholinv() even for positive definite matrices. Here's the code I used to check: timer_clear() mata m = runiform(2000,2000) j = m*m' timer_on(1) h = cholinv(j) timer_off(1) timer_on(2) p = luinv(j) timer_off(2) timer() On Fri, Jul 20, 2012 at 11:57 AM, Richard Herron <richard.c.herron@gmail.com> wrote: > -cholinv()- would be faster if you met the symmetric, positive > definite requirement. I am also surprised that Mata isn't competitive > with Matlab on matrix inversion (I thought they all used the same > algorithms). > > Have you tried taking the matrix generation step out of the timing > block? Is there a chance that the matrix formation process if > different between the two (Sorry, I don't have Stata and Matlab > installs handy). > > Richard Herron > > > On Fri, Jul 20, 2012 at 2:50 PM, Patrick Roland > <patrick.rolande@gmail.com> wrote: >> luinv() takes about 15 times longer than MATLAB's inverse function. >> Maybe I'm being naive, but why wouldn't all serious matrix languages >> invert matrices at roughly the same speed? Don't they use the same >> linear algebra routines? >> >> Another curiosity is that the luinv() is more general and faster. Why >> would anyone want to use cholinv()? >> >> On Fri, Jul 20, 2012 at 9:17 AM, Richard Herron >> <richard.c.herron@gmail.com> wrote: >>> Patrick, -cholinv()- requires a symmetric positive definite matrix, >>> but I don't think you M matrix is PD. Try -luinv()-. >>> >>> Although for most use cases your matrix will be symmetric, right? Then >>> you should use -invsym()- or a solve function. >>> >>> Richard Herron >>> >>> >>> On Thu, Jul 19, 2012 at 9:22 PM, Patrick Roland >>> <patrick.rolande@gmail.com> >>> wrote: >>>> >>>> I'm comparing two code snippets. In Mata: >>>> >>>> mata >>>> timer_on(1) >>>> M = rnormal(2000,2000,0,1) >>>> J = cholinv(M) >>>> timer_off(1) >>>> timer() >>>> end >>>> >>>> In MATLAB: >>>> >>>> tic; >>>> M = normrnd(0,1,2000,2000); >>>> J = inv(M); >>>> toc; >>>> >>>> I find that MATLAB is about 20 times faster (1.5 seconds vs 30 >>>> seconds). Is there something I'm missing here, or is MATLAB just much >>>> faster at matrix inversion? I'd much prefer to use Mata because of >>>> integration with Stata, but if the speed difference is going to be on >>>> this order then MATLAB is more attractive. >>>> >>>> >>>> Any input here is appreciated. >>>> * >>>> * For searches and help try: >>>> * http://www.stata.com/help.cgi?search >>>> * http://www.stata.com/support/statalist/faq >>>> * http://www.ats.ucla.edu/stat/stata/ >>> * >>> * For searches and help try: >>> * http://www.stata.com/help.cgi?search >>> * http://www.stata.com/support/statalist/faq >>> * http://www.ats.ucla.edu/stat/stata/ >> * >> * For searches and help try: >> * http://www.stata.com/help.cgi?search >> * http://www.stata.com/support/statalist/faq >> * http://www.ats.ucla.edu/stat/stata/ > * > * For searches and help try: > * http://www.stata.com/help.cgi?search > * http://www.stata.com/support/statalist/faq > * http://www.ats.ucla.edu/stat/stata/ * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**Follow-Ups**:**Re: st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Richard Herron <richard.c.herron@gmail.com>

**References**:**st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Patrick Roland <patrick.rolande@gmail.com>

**Re: st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Richard Herron <richard.c.herron@gmail.com>

**Re: st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Patrick Roland <patrick.rolande@gmail.com>

**Re: st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Richard Herron <richard.c.herron@gmail.com>

- Prev by Date:
**Re: st: Why is Mata much slower than MATLAB at matrix inversion?** - Next by Date:
**Re: st: Why is Mata much slower than MATLAB at matrix inversion?** - Previous by thread:
**Re: st: Why is Mata much slower than MATLAB at matrix inversion?** - Next by thread:
**Re: st: Why is Mata much slower than MATLAB at matrix inversion?** - Index(es):