File: TODO_Algorithms.txt

package info (click to toggle)
libejml-java 0.38%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 6,336 kB
  • sloc: java: 73,523; python: 81; xml: 60; makefile: 58
file content (67 lines) | stat: -rw-r--r-- 1,982 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

- Block bidiagonal
- Explore having the various implementations of MatrixMult_* internally invoke an interface that can be swapped
  * Performance hit for small matrices?
  *

-------------------

- Unroll symmetric inverse by minor
- Unroll multiplication for square matrices
- Make QrUpdate more friendly and accessible

For some future Release
- Block SVD
- Block Hessenberg
- Adapt QR-tran into LQ
- Remove QRDecompositionHouseholder?
- Remove chol-block for dense with chol-block64?
  * reduce cache misses in invert and see if its faster
- Merge inner triangular solver code
- Require LinearSolverFactory to take in a matrix so it can figure out alg to use?
- Improve cholesky block inverse by taking advantage of symmetry
- Add a function for sorting eigenvalues.

----------------------------------------------------------

- Sparse
  - Look into supernodal methods. Apparently they are faster since they expoit dense matrix kernels

- LU
  - block

- Cholesky
  - unwrap for small matrices.  improve accuracy
  - improve stability

- Linear Solver
  * Iterative
  * Add condition(), use Hager's method? pg 132
  * Put this new condition into NormOps since it should be much faster

- SVD
  - Save up rotators, multiply against each other, then multiply against U and V
  - Divide and conquer algorithm
  - An implementation that just finds zero singular values
  - Bidiagonal decompositions have a lot of inefficient code

- Incremental SVD

- Eigen decomposition
  - Divide and conquer algorithm.

- Accurate version of symmetric eigenvalue for 2 by 2
  - SVD
  - SymmEig

- Fast Matrix Multiply

- hard code cholesky decomposition for small matrices
- hard code symmetric inverse for small matrices

- Matrix Multiplication:
  - Try a variant on mult_aux that does the vector mult up to block size then goes down a row.
  - Finish vector vector multiply
  - Code generator for matrix vector ops
  - Add matrix vector multiply
  - Auto switch to all of above in CommonOps