<br><br><div class="gmail_quote">On Mon, Dec 6, 2010 at 11:56 PM, Fernando Perez <span dir="ltr">&lt;<a href="http://fperez.net">fperez.net</a>@<a href="http://gmail.com">gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi Skipper,<br>
<div class="im"><br>
On Mon, Dec 6, 2010 at 2:34 PM, Skipper Seabold &lt;<a href="mailto:jsseabold@gmail.com">jsseabold@gmail.com</a>&gt; wrote:<br>
</div><div class="im">&gt; I&#39;m wondering if anyone might have a look at my cython code that does<br>
&gt; matrix multiplication and see where I can speed it up or offer some<br>
&gt; pointers/reading.  I&#39;m new to Cython and my knowledge of C is pretty<br>
&gt; basic based on trial and (mostly) error, so I am sure the code is<br>
&gt; still very naive.<br>
<br>
</div>a few years ago I had a similar problem, and I ended up getting a very<br>
significant speedup by hand-coding a very unsafe, but very fast pure C<br>
extension just to compute these inner products.  This was basically a<br>
replacement for dot() that would only work with double precision<br>
inputs of compatible dimensions and would happily segfault with<br>
anything else, but it ran very fast.  The inner loop is implemented<br>
completely naively, but it still beats calls to BLAS (even linked with<br>
ATLAS) for small matrix dimensions (my case was also up to ~ 15x15).<br>
<br>
I&#39;m attaching the code in case you find it useful, please keep in mind<br>
I haven&#39;t compiled it in years, so it may have bit-rotted a little.<br>
<br></blockquote><div><br>Blas adds quite a bit of overhead for multiplying small matrices, but so does calling from python. For implementing Kalman filters it might be better to write a whole Kalman class so that operations can be combined at the c level.<br>
<br>Skipper, what kind of Kalman filter are you trying to implement?<br><br>Chuck <br></div></div>