Progress toward constructing our own matrix classes

From GlueXWiki
Revision as of 11:30, 18 May 2010 by Staylor (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  • Current tracking code uses TMatrixD, a generic matrix package in root that has substantial overhead
    • Kalman filter code is very matrix heavy
  • Working on our own Matrix classes tailored for the Kalman filter: 1x2, 1x5, 2x2, 2x5, 5x5, 5x2, 5x1
    • SIMD instructions used wherever possible
    • Some operations have been implemented and tested for speed on ifarml6 after generating 10,000,000 "events". In the table below: a(2,2), A(5,5), B(5,5), C(1,5), D(5,1), E(2,5), F(5,2)
Operation      TMatrixD(s)         DMatrix(s)         T/D
----------------------------------------------------------
a^-1              1.493              0.090           16.59
A^-1              6.274              2.274            2.76
A+B               1.470              0.609            2.41
A*B               3.821              0.974            3.82
A^T               1.178              0.393            3.00
A^T*B*A           7.892              1.857            4.25
C*A*D             2.466              0.520            4.74
E*A*F             3.630              0.651            5.58