sarah-quinones / faer-rs

Linear algebra foundation for the Rust programming language
https://faer-rs.github.io
MIT License
1.82k stars 61 forks source link

faer-bench fails with size mismatch #39

Closed EdorianDark closed 1 year ago

EdorianDark commented 1 year ago

I ran cargo run in the faer-bench dir and the result was a panic. The system is a Arm MacOS with the newest nichtly.

leifeld@MacStudovonDirk faer-bench % cargo +nightly run --release --no-default-features Finished release [optimized] target(s) in 0.08s Running target/release/faer-bench f32

Matrix multiplication

Multiplication of two square matrices of dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       33ns       32ns      142ns          -          -
    8       57ns       60ns      122ns          -          -
   16      206ns      211ns      303ns          -          -
   32      1.1µs      1.1µs      996ns          -          -
   64      8.1µs      8.1µs      6.7µs          -          -
   96     24.8µs     30.9µs      1.3ms          -          -
  128     59.8µs     39.1µs      1.2ms          -          -
  192    195.1µs     93.3µs      1.7ms          -          -
  256    479.7µs    202.1µs      1.9ms          -          -
  384      1.6ms    448.6µs      2.3ms          -          -
  512      3.7ms        1ms      2.6ms          -          -
  640      7.3ms      1.7ms        3ms          -          -
  768     12.5ms        3ms      5.1ms          -          -
  896     19.7ms      4.4ms      6.8ms          -          -
 1024     29.8ms      6.7ms      9.2ms          -          -

Triangular solve

Solving AX = B in place where A and B are two square matrices of dimension n, and A is a triangular matrix.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       14ns       14ns     26.3µs          -          -
    8       90ns       90ns       27µs          -          -
   16      378ns      380ns     29.9µs          -          -
   32      1.4µs      1.4µs     35.9µs          -          -
   64      7.2µs      7.2µs     54.1µs          -          -
   96     20.4µs     27.2µs     93.5µs          -          -
  128     44.9µs     40.6µs    131.9µs          -          -
  192    131.7µs    117.5µs    290.3µs          -          -
  256    301.3µs    152.8µs    487.1µs          -          -
  384    913.6µs    450.8µs    996.1µs          -          -
  512      2.2ms      966µs      2.6ms          -          -
  640      4.1ms      1.8ms      2.7ms          -          -
  768      6.7ms      2.6ms      3.9ms          -          -
  896     10.8ms      3.6ms      5.3ms          -          -
 1024     17.7ms      5.5ms     12.6ms          -          -

Triangular inverse

Computing A^-1 where A is a square triangular matrix with dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      160ns      9.3µs     26.3µs          -          -
    8      468ns       12µs     27.1µs          -          -
   16      1.2µs     16.4µs     29.9µs          -          -
   32      3.4µs     24.1µs     35.9µs          -          -
   64      9.9µs     31.6µs     54.1µs          -          -
   96     23.2µs     39.9µs     89.1µs          -          -
  128     33.9µs     49.9µs    133.3µs          -          -
  192     86.4µs     94.7µs    310.4µs          -          -
  256    153.1µs    143.9µs    507.7µs          -          -
  384    421.7µs    281.3µs        1ms          -          -
  512    907.5µs    492.6µs      2.7ms          -          -
  640      1.6ms    816.2µs      2.7ms          -          -
  768      2.6ms        1ms      3.9ms          -          -
  896      4.1ms      1.5ms      5.4ms          -          -
 1024      6.8ms      2.4ms     12.5ms          -          -

Cholesky decomposition

Factorizing a square matrix with dimension n as L×L.T, where L is lower triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       43ns       43ns      120ns          -          -
    8      154ns      154ns      354ns          -          -
   16      767ns      766ns      1.2µs          -          -
   32      2.1µs      2.1µs      4.8µs          -          -
   64      6.3µs      6.3µs       15µs          -          -
   96     15.8µs     15.8µs     34.2µs          -          -
  128     22.2µs     22.3µs    428.7µs          -          -
  192     59.7µs       87µs     12.5ms          -          -
  256    106.1µs    126.4µs      3.2ms          -          -
  384    292.4µs    331.5µs      5.3ms          -          -
  512    651.6µs    483.6µs        7ms          -          -
  640      1.1ms      1.1ms     11.4ms          -          -
  768        2ms      1.5ms     19.6ms          -          -
  896        3ms        2ms      1.82s          -          -
 1024      4.7ms      2.5ms     22.3ms          -          -

LU decomposition with partial pivoting

Factorizing a square matrix with dimension n as P×L×U, where P is a permutation matrix, L is unit lower triangular and U is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       92ns       89ns      154ns          -          -
    8      263ns      238ns      456ns          -          -
   16      895ns      905ns        2µs          -          -
   32      2.9µs      2.9µs        7µs          -          -
   64     11.9µs     12.2µs     22.8µs          -          -
   96     27.2µs     28.2µs     46.3µs          -          -
  128       54µs     53.7µs     88.3µs          -          -
  192    141.9µs    215.8µs    206.9µs          -          -
  256    285.8µs    384.5µs    749.8µs          -          -
  384    801.3µs    919.1µs      1.6ms          -          -
  512      1.8ms      1.7ms      2.4ms          -          -
  640      3.2ms      3.1ms      4.2ms          -          -
  768      5.3ms      4.2ms      5.8ms          -          -
  896      8.2ms      5.8ms      7.7ms          -          -
 1024     12.8ms      7.9ms      9.8ms          -          -

LU decomposition with full pivoting

Factorizing a square matrix with dimension n as P×L×U×Q.T, where P and Q are permutation matrices, L is unit lower triangular and U is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      160ns      160ns          -          -          -
    8      388ns      403ns          -          -          -
   16      1.5µs      1.5µs          -          -          -
   32      7.9µs      7.8µs          -          -          -
   64     53.4µs       53µs          -          -          -
   96    174.2µs    173.9µs          -          -          -
  128    417.9µs      417µs          -          -          -
  192      1.5ms      1.5ms          -          -          -
  256      3.5ms      3.5ms          -          -          -
  384     11.8ms     11.3ms          -          -          -
  512     28.9ms     21.8ms          -          -          -
  640     55.6ms     33.2ms          -          -          -
  768       98ms     49.2ms          -          -          -
  896    158.7ms     72.1ms          -          -          -
 1024    242.3ms    103.1ms          -          -          -

QR decomposition with no pivoting

Factorizing a square matrix with dimension n as QR, where Q is unitary and R is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      102ns      100ns      729ns          -          -
    8      294ns      293ns      1.5µs          -          -
   16      1.1µs      1.2µs      4.7µs          -          -
   32      4.6µs      4.7µs     17.2µs          -          -
   64     25.3µs     25.6µs     65.4µs          -          -
   96     57.7µs     59.4µs    454.9µs          -          -
  128    110.2µs    109.9µs      4.4ms          -          -
  192    298.2µs    297.7µs     37.8ms          -          -
  256    615.9µs    796.9µs       59ms          -          -
  384      1.8ms      2.1ms    118.2ms          -          -
  512        4ms      3.7ms    197.2ms          -          -
  640      6.7ms      5.1ms    301.4ms          -          -
  768     11.2ms        8ms    429.2ms          -          -
  896     17.3ms     11.9ms    523.8ms          -          -
 1024     25.6ms     16.5ms    632.4ms          -          -

QR decomposition with column pivoting

Factorizing a square matrix with dimension n as QRP, where P is a permutation matrix, Q is unitary and R is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      153ns      140ns          -          -          -
    8      414ns      410ns          -          -          -
   16      1.5µs      1.6µs          -          -          -
   32      6.5µs      6.5µs          -          -          -
   64     40.7µs     66.3µs          -          -          -
   96    123.3µs    167.8µs          -          -          -
  128    266.4µs    327.5µs          -          -          -
  192    802.5µs    862.3µs          -          -          -
  256      1.8ms      2.3ms          -          -          -
  384      5.6ms      6.8ms          -          -          -
  512     12.5ms     12.8ms          -          -          -
  640     24.6ms     19.9ms          -          -          -
  768     41.3ms     28.1ms          -          -          -
  896     65.1ms     38.3ms          -          -          -
 1024     94.5ms     51.7ms          -          -          -

Matrix inverse

Computing the inverse of a square matrix with dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      726ns     14.3µs      412ns          -          -
    8      1.7µs     17.4µs      907ns          -          -
   16      4.4µs     25.3µs      3.9µs          -          -
   32       13µs     51.3µs     12.6µs          -          -
   64       42µs     84.9µs     49.4µs          -          -
   96    100.1µs      141µs    443.4µs          -          -
  128    168.5µs    209.1µs      2.8ms          -          -
  192      430µs    454.3µs      3.1ms          -          -
  256    837.1µs    711.4µs      7.3ms          -          -
  384      2.3ms      1.6ms     17.9ms          -          -
  512      5.3ms        3ms     19.4ms          -          -
  640      9.6ms        5ms     31.4ms          -          -
  768     15.2ms        7ms     34.6ms          -          -
  896       24ms      9.7ms     43.1ms          -          -
 1024     37.6ms     14.3ms     50.6ms          -          -

Square matrix singular value decomposition

Computing the SVD of a square matrix with dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      1.1µs      1.1µs        2µs          -          -
    8      5.8µs     21.5µs      5.8µs          -          -
   16     20.3µs       54µs     19.5µs          -          -
   32       72µs    116.1µs     71.6µs          -          -
   64    270.6µs    360.5µs      3.9ms          -          -
   96    664.6µs    971.7µs      6.7ms          -          -
  128      1.3ms      1.7ms     44.4ms          -          -
  192      3.5ms      5.1ms    108.8ms          -          -
  256      7.3ms      9.3ms    173.6ms          -          -
  384     21.4ms     20.8ms    310.9ms          -          -
  512     47.5ms     35.9ms    466.5ms          -          -
  640     85.2ms     54.2ms    616.3ms          -          -
  768      143ms       80ms    830.5ms          -          -
  896    225.4ms    115.2ms      1.07s          -          -
 1024    327.3ms    160.4ms      1.23s          -          -

Thin matrix singular value decomposition

Computing the SVD of a rectangular matrix with shape (4096, n).

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4     32.8µs     32.4µs    644.1µs          -          -
    8      112µs    150.6µs      1.4ms          -          -
   16    318.9µs    456.7µs      8.4ms          -          -
   32    947.4µs      1.2ms     15.5ms          -          -
   64      2.9ms      3.5ms     45.5ms          -          -
   96      5.3ms      5.8ms       61ms          -          -
  128      8.9ms        9ms    100.3ms          -          -
  192     18.7ms     17.5ms    248.2ms          -          -
  256     33.7ms     29.3ms    380.9ms          -          -
  384     75.2ms     54.5ms    657.6ms          -          -
  512    138.8ms       94ms      1.15s          -          -
  640    224.2ms    136.4ms      1.63s          -          -
  768    336.6ms    182.1ms      1.97s          -          -
  896    478.8ms    240.6ms      2.45s          -          -
 1024      656ms    327.2ms      2.68s          -          -

Hermitian matrix eigenvalue decomposition

Computing the EVD of a hermitian matrix with shape (n, n).

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      992ns      890ns        1µs          -          -
    8      2.5µs      2.4µs      3.5µs          -          -
   16      9.2µs      8.7µs     12.1µs          -          -
   32     36.5µs     34.8µs     55.5µs          -          -
   64    161.4µs    194.4µs    421.2µs          -          -
   96    391.3µs    499.3µs      1.1ms          -          -
  128    725.3µs    841.1µs      4.3ms          -          -
  192      1.9ms      2.2ms     22.6ms          -          -
  256      3.7ms        4ms     45.9ms          -          -
  384     10.7ms     12.4ms    114.5ms          -          -
  512     23.2ms     22.7ms    206.6ms          -          -
  640     41.9ms     34.5ms    330.7ms          -          -
  768     69.5ms       51ms      471ms          -          -
  896    107.4ms     70.9ms      657ms          -          -
 1024    156.6ms     92.4ms    888.3ms          -          -

Non Hermitian matrix eigenvalue decomposition

Computing the EVD of a matrix with shape (n, n).

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      3.9µs      4.2µs      2.4µs          -          -
    8     11.6µs       13µs      6.9µs          -          -
   16     43.7µs     42.8µs     27.4µs          -          -
   32    174.2µs    188.9µs    123.3µs          -          -
   64    806.5µs    834.3µs    658.5µs          -          -
   96      1.9ms        2ms      4.4ms          -          -
  128      3.2ms      3.4ms     31.6ms          -          -
  192      8.5ms        9ms    100.3ms          -          -
  256     16.4ms       17ms    228.4ms          -          -
  384     38.3ms     47.9ms    592.5ms          -          -
  512     82.8ms     96.1ms    798.3ms          -          -
  640    146.3ms    164.9ms      1.12s          -          -
  768    230.3ms    243.3ms      1.46s          -          -
  896    340.3ms    341.4ms      1.69s          -          -
 1024    540.2ms    539.9ms      2.45s          -          -

f64

Matrix multiplication

Multiplication of two square matrices of dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       32ns       32ns      128ns          -          -
    8       80ns       84ns      171ns          -          -
   16      311ns      315ns      345ns          -          -
   32      2.1µs      2.2µs      1.8µs          -          -
   64     14.8µs     14.8µs     12.1µs          -          -
   96     50.3µs     41.3µs      1.2ms          -          -
  128    124.1µs     69.5µs      1.4ms          -          -
  192    392.9µs    173.1µs      1.5ms          -          -
  256    943.6µs    315.2µs      1.3ms          -          -
  384      3.2ms    889.3µs      2.3ms          -          -
  512      7.5ms      1.9ms      3.7ms          -          -
  640     14.5ms      3.4ms      4.9ms          -          -
  768     25.7ms      5.8ms      8.5ms          -          -
  896       30ms      7.3ms     13.1ms          -          -
 1024     45.1ms       11ms     17.4ms          -          -

Triangular solve

Solving AX = B in place where A and B are two square matrices of dimension n, and A is a triangular matrix.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       14ns       14ns     27.9µs          -          -
    8       89ns       90ns     27.7µs          -          -
   16      429ns      431ns     29.8µs          -          -
   32      1.9µs      1.9µs     35.5µs          -          -
   64     11.3µs     11.3µs       54µs          -          -
   96     33.9µs     35.3µs     81.9µs          -          -
  128     75.4µs     63.5µs      126µs          -          -
  192      235µs    149.1µs    264.2µs          -          -
  256    555.4µs    254.1µs    759.9µs          -          -
  384      1.7ms    841.4µs      1.2ms          -          -
  512      4.5ms      1.6ms      3.5ms          -          -
  640      7.8ms      2.8ms      3.4ms          -          -
  768     13.1ms      4.5ms      7.3ms          -          -
  896     20.9ms      6.5ms        7ms          -          -
 1024     35.4ms       10ms     18.3ms          -          -

Triangular inverse

Computing A^-1 where A is a square triangular matrix with dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      156ns     12.4µs       28µs          -          -
    8      479ns     11.4µs     27.7µs          -          -
   16      1.3µs       17µs     29.9µs          -          -
   32      3.7µs     24.1µs     34.2µs          -          -
   64     11.4µs       33µs     52.2µs          -          -
   96     28.8µs     45.4µs    212.9µs          -          -
  128     45.8µs     65.2µs    334.2µs          -          -
  192    124.9µs    130.4µs    405.3µs          -          -
  256      247µs      226µs      765µs          -          -
  384    712.3µs    395.6µs      1.2ms          -          -
  512      1.8ms    736.7µs      3.4ms          -          -
  640      2.9ms      1.3ms      3.3ms          -          -
  768      4.8ms        2ms      7.2ms          -          -
  896      7.6ms      2.6ms      7.1ms          -          -
 1024     13.5ms      3.9ms       18ms          -          -

Cholesky decomposition

Factorizing a square matrix with dimension n as L×L.T, where L is lower triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       46ns       46ns      121ns          -          -
    8      146ns      145ns      393ns          -          -
   16      631ns      625ns      1.3µs          -          -
   32        2µs        2µs      5.1µs          -          -
   64      7.3µs      7.3µs      187µs          -          -
   96     18.3µs     18.3µs      1.4ms          -          -
  128     32.2µs     32.4µs      1.3ms          -          -
  192     88.2µs    100.1µs        6ms          -          -
  256    186.8µs    188.5µs      4.8ms          -          -
  384    520.7µs      465µs      8.8ms          -          -
  512      1.3ms    935.6µs     10.4ms          -          -
  640      2.2ms      1.6ms     12.7ms          -          -
  768      3.8ms      2.2ms     20.5ms          -          -
  896      5.7ms        3ms     24.7ms          -          -
 1024      9.5ms      4.6ms     26.2ms          -          -

LU decomposition with partial pivoting

Factorizing a square matrix with dimension n as P×L×U, where P is a permutation matrix, L is unit lower triangular and U is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       76ns       93ns      150ns          -          -
    8      225ns      213ns      493ns          -          -
   16      740ns      771ns      2.2µs          -          -
   32        3µs      2.9µs      6.6µs          -          -
   64     14.7µs     14.8µs     21.1µs          -          -
   96     37.7µs     37.7µs     46.5µs          -          -
  128     75.7µs     76.2µs    302.8µs          -          -
  192    218.3µs    276.5µs    620.6µs          -          -
  256    474.4µs      524µs    810.8µs          -          -
  384      1.4ms      1.3ms      1.5ms          -          -
  512      3.4ms      2.6ms        3ms          -          -
  640      5.9ms      4.4ms      4.6ms          -          -
  768      9.9ms      6.2ms      6.5ms          -          -
  896     15.5ms      8.5ms      8.7ms          -          -
 1024     24.8ms     12.8ms     11.3ms          -          -

LU decomposition with full pivoting

Factorizing a square matrix with dimension n as P×L×U×Q.T, where P and Q are permutation matrices, L is unit lower triangular and U is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      119ns      132ns          -          -          -
    8      371ns      369ns          -          -          -
   16      1.4µs      1.4µs          -          -          -
   32      7.7µs      7.7µs          -          -          -
   64     53.4µs     53.4µs          -          -          -
   96    185.1µs    184.7µs          -          -          -
  128    460.1µs      459µs          -          -          -
  192      1.7ms      1.7ms          -          -          -
  256      4.3ms      4.3ms          -          -          -
  384     14.8ms       14ms          -          -          -
  512     38.2ms     25.8ms          -          -          -
  640     73.1ms       38ms          -          -          -
  768    128.8ms     56.5ms          -          -          -
  896    207.4ms     80.4ms          -          -          -
 1024    306.1ms    119.3ms          -          -          -

QR decomposition with no pivoting

Factorizing a square matrix with dimension n as QR, where Q is unitary and R is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      106ns      106ns      658ns          -          -
    8      295ns      296ns      1.6µs          -          -
   16        1µs        1µs      4.7µs          -          -
   32        5µs        5µs       18µs          -          -
   64     31.9µs     31.8µs     75.6µs          -          -
   96     79.7µs     79.7µs    526.7µs          -          -
  128    158.8µs    157.9µs      4.7ms          -          -
  192    451.3µs    450.1µs     49.9ms          -          -
  256    963.8µs      1.1ms     72.8ms          -          -
  384      2.9ms      2.9ms    148.4ms          -          -
  512      6.6ms      5.4ms    291.2ms          -          -
  640     12.4ms      8.9ms    337.5ms          -          -
  768     20.8ms     13.7ms    413.4ms          -          -
  896     31.6ms     20.7ms    546.6ms          -          -
 1024     45.6ms     28.3ms    734.9ms          -          -

QR decomposition with column pivoting

Factorizing a square matrix with dimension n as QRP, where P is a permutation matrix, Q is unitary and R is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      175ns      162ns          -          -          -
    8      422ns      436ns          -          -          -
   16      1.6µs      1.6µs          -          -          -
   32        8µs      7.9µs          -          -          -
   64     58.7µs     93.9µs          -          -          -
   96      169µs    213.4µs          -          -          -
  128    358.2µs    422.9µs          -          -          -
  192      1.2ms      1.2ms          -          -          -
  256      2.7ms        3ms          -          -          -
  384      8.8ms      8.5ms          -          -          -
  512     20.5ms     16.5ms          -          -          -
  640     39.9ms     27.4ms          -          -          -
  768     67.8ms     43.4ms          -          -          -
  896    107.9ms     59.4ms          -          -          -
 1024    159.2ms       77ms          -          -          -

Matrix inverse

Computing the inverse of a square matrix with dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      715ns     12.4µs      406ns          -          -
    8      1.6µs     16.7µs      991ns          -          -
   16      4.2µs     25.4µs      4.1µs          -          -
   32     13.6µs     53.5µs     12.8µs          -          -
   64     51.3µs     96.7µs     56.2µs          -          -
   96      130µs      169µs    450.3µs          -          -
  128    240.2µs    260.5µs      3.3ms          -          -
  192    659.7µs    589.3µs      6.1ms          -          -
  256      1.4ms      1.1ms      7.2ms          -          -
  384      4.1ms      2.4ms     15.8ms          -          -
  512      9.8ms      4.5ms     21.3ms          -          -
  640     17.3ms      7.5ms     28.9ms          -          -
  768     28.7ms     10.8ms       40ms          -          -
  896     44.9ms     15.3ms     52.6ms          -          -
 1024     74.2ms     23.2ms     70.7ms          -          -

Square matrix singular value decomposition

Computing the SVD of a square matrix with dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      1.4µs      1.3µs      2.4µs          -          -
    8      7.4µs     23.1µs      7.4µs          -          -
   16     23.3µs     56.8µs     24.9µs          -          -
   32     85.2µs    130.1µs     86.7µs          -          -
   64      374µs    464.2µs      4.1ms          -          -
   96      953µs      1.3ms        7ms          -          -
  128      1.9ms      2.2ms     51.7ms          -          -
  192      5.3ms      6.3ms    135.2ms          -          -
  256     11.4ms       11ms    204.5ms          -          -
  384     34.1ms     27.3ms    312.2ms          -          -
  512     77.3ms     48.9ms      516ms          -          -
  640    144.7ms     78.2ms    688.1ms          -          -
  768    248.5ms    119.6ms    912.3ms          -          -
  896    384.6ms    176.2ms      1.16s          -          -
 1024    560.5ms    249.6ms      1.64s          -          -

Thin matrix singular value decomposition

Computing the SVD of a rectangular matrix with shape (4096, n).

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4     43.6µs     43.7µs    578.8µs          -          -
    8    165.7µs    180.3µs      1.5ms          -          -
   16    471.3µs    573.1µs      7.8ms          -          -
   32      1.4ms      1.5ms     15.2ms          -          -
   64      4.6ms      4.5ms     58.3ms          -          -
   96      9.3ms      8.2ms     62.8ms          -          -
  128     16.1ms     12.8ms    103.5ms          -          -
  192       34ms     24.8ms    237.3ms          -          -
  256     60.9ms     41.3ms    383.9ms          -          -
  384    134.4ms     83.4ms    663.6ms          -          -
  512      248ms    142.1ms      1.05s          -          -
  640    402.7ms    204.7ms      1.52s          -          -
  768    616.6ms    298.7ms      1.81s          -          -
  896    874.1ms    399.3ms      2.44s          -          -
 1024      1.19s    532.8ms      2.87s          -          -

Hermitian matrix eigenvalue decomposition

Computing the EVD of a hermitian matrix with shape (n, n).

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      1.1µs        1µs      1.2µs          -          -
    8        3µs      3.6µs      4.2µs          -          -
   16       12µs     11.8µs     15.5µs          -          -
   32     50.4µs     53.6µs       68µs          -          -
   64    224.6µs    245.4µs    437.8µs          -          -
   96    519.9µs    615.6µs      1.4ms          -          -
  128    989.7µs      1.1ms        6ms          -          -
  192      2.5ms      2.8ms     25.6ms          -          -
  256      5.1ms      4.8ms     51.1ms          -          -
  384     14.5ms     14.8ms    122.3ms          -          -
  512     31.6ms     27.8ms    232.1ms          -          -
  640     58.5ms     44.6ms    370.5ms          -          -
  768       97ms     65.1ms      554ms          -          -
  896    148.8ms     92.1ms    769.1ms          -          -
 1024    218.1ms    122.4ms      1.09s          -          -

Non Hermitian matrix eigenvalue decomposition

Computing the EVD of a matrix with shape (n, n).

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      4.2µs      4.3µs      2.5µs          -          -
    8     14.7µs       14µs      8.6µs          -          -
   16     51.5µs       49µs     31.3µs          -          -
   32    228.1µs    225.8µs    146.1µs          -          -
   64        1ms        1ms    822.7µs          -          -
   96      2.8ms        3ms      5.1ms          -          -
  128      5.2ms      5.2ms     25.1ms          -          -
  192     14.2ms     14.4ms    121.7ms          -          -
  256     26.9ms     26.7ms    312.8ms          -          -
  384     69.1ms     78.5ms    624.7ms          -          -
  512    159.2ms    177.8ms      1.02s          -          -
  640    256.7ms    259.4ms      1.17s          -          -
  768    407.6ms    382.6ms      1.69s          -          -
  896    588.6ms    531.4ms      2.03s          -          -
 1024      1.03s    931.6ms      2.75s          -          -

f128

Matrix multiplication

Multiplication of two square matrices of dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      150ns      151ns          -          -          -
    8      1.3µs     16.2µs          -          -          -
   16      8.1µs     25.4µs          -          -          -
   32     60.4µs     40.6µs          -          -          -
   64    474.6µs    162.2µs          -          -          -
   96      1.6ms    519.4µs          -          -          -
  128      3.8ms    961.5µs          -          -          -
  192     12.8ms      2.6ms          -          -          -
  256     30.7ms      5.5ms          -          -          -
  384    103.2ms     16.5ms          -          -          -
  512    254.1ms     39.6ms          -          -          -
  640    481.4ms     70.9ms          -          -          -
  768    866.7ms    133.5ms          -          -          -
  896      1.34s      185ms          -          -          -
 1024      2.25s    311.7ms          -          -          -

Triangular solve

Solving AX = B in place where A and B are two square matrices of dimension n, and A is a triangular matrix.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       73ns       73ns          -          -          -
    8      670ns      669ns          -          -          -
   16      5.1µs     24.7µs          -          -          -
   32     37.8µs    179.7µs          -          -          -
   64    269.6µs    471.8µs          -          -          -
   96    892.4µs    568.2µs          -          -          -
  128      2.1ms    926.1µs          -          -          -
  192      6.9ms      2.3ms          -          -          -
  256       16ms      4.4ms          -          -          -
  384     53.9ms       12ms          -          -          -
  512    126.2ms     25.5ms          -          -          -
  640    243.8ms     47.3ms          -          -          -
  768    419.6ms     71.8ms          -          -          -
  896    662.1ms    118.7ms          -          -          -
 1024      1.03s    170.5ms          -          -          -

Triangular inverse

Computing A^-1 where A is a square triangular matrix with dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      271ns       16µs          -          -          -
    8      965ns     13.8µs          -          -          -
   16      4.2µs     35.5µs          -          -          -
   32       22µs     85.3µs          -          -          -
   64    132.6µs    330.6µs          -          -          -
   96      389µs    566.4µs          -          -          -
  128    862.3µs        1ms          -          -          -
  192      2.7ms        2ms          -          -          -
  256      6.1ms        3ms          -          -          -
  384     19.6ms      7.6ms          -          -          -
  512       46ms       13ms          -          -          -
  640     96.4ms     25.3ms          -          -          -
  768      155ms     35.2ms          -          -          -
  896    235.6ms       54ms          -          -          -
 1024    349.3ms     75.2ms          -          -          -

Cholesky decomposition

Factorizing a square matrix with dimension n as L×L.T, where L is lower triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      289ns      286ns          -          -          -
    8      692ns      696ns          -          -          -
   16      2.4µs      2.4µs          -          -          -
   32     18.9µs     58.2µs          -          -          -
   64    128.9µs    393.8µs          -          -          -
   96    368.2µs      844µs          -          -          -
  128    858.1µs      1.6ms          -          -          -
  192      2.7ms      3.6ms          -          -          -
  256      6.1ms      5.2ms          -          -          -
  384     20.1ms     12.8ms          -          -          -
  512     45.8ms       19ms          -          -          -
  640     88.4ms     36.8ms          -          -          -
  768    147.9ms     50.1ms          -          -          -
  896    231.4ms     69.7ms          -          -          -
 1024    348.7ms     89.7ms          -          -          -

LU decomposition with partial pivoting

Factorizing a square matrix with dimension n as P×L×U, where P is a permutation matrix, L is unit lower triangular and U is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      214ns      186ns          -          -          -
    8      580ns      596ns          -          -          -
   16      2.4µs      2.5µs          -          -          -
   32     21.7µs     64.4µs          -          -          -
   64    173.7µs    369.3µs          -          -          -
   96    581.2µs    889.6µs          -          -          -
  128      1.3ms      1.5ms          -          -          -
  192      4.8ms      3.7ms          -          -          -
  256     10.9ms      6.4ms          -          -          -
  384     36.4ms     16.3ms          -          -          -
  512     85.5ms     33.5ms          -          -          -
  640    165.6ms       54ms          -          -          -
  768    284.5ms     80.2ms          -          -          -
  896    450.1ms      125ms          -          -          -
 1024    684.1ms    173.6ms          -          -          -

LU decomposition with full pivoting

Factorizing a square matrix with dimension n as P×L×U×Q.T, where P and Q are permutation matrices, L is unit lower triangular and U is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      310ns      314ns          -          -          -
    8      1.2µs      1.1µs          -          -          -
   16      5.4µs      5.5µs          -          -          -
   32     35.5µs     35.6µs          -          -          -
   64    255.5µs      256µs          -          -          -
   96    843.7µs    840.9µs          -          -          -
  128        2ms        2ms          -          -          -
  192      6.7ms      6.7ms          -          -          -
  256     16.2ms     16.2ms          -          -          -
  384     52.2ms     47.8ms          -          -          -
  512    125.9ms     76.2ms          -          -          -
  640    241.1ms    114.2ms          -          -          -
  768    417.1ms    166.8ms          -          -          -
  896    661.6ms    232.6ms          -          -          -
 1024    996.3ms    326.2ms          -          -          -

QR decomposition with no pivoting

Factorizing a square matrix with dimension n as QR, where Q is unitary and R is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      698ns      699ns          -          -          -
    8      2.3µs      2.3µs          -          -          -
   16     10.9µs     10.7µs          -          -          -
   32     56.8µs     56.6µs          -          -          -
   64    519.8µs    518.4µs          -          -          -
   96      1.5ms      1.5ms          -          -          -
  128      3.4ms      3.5ms          -          -          -
  192     10.7ms     10.8ms          -          -          -
  256     24.7ms     18.5ms          -          -          -
  384     80.8ms       52ms          -          -          -
  512    198.4ms     97.7ms          -          -          -
  640    368.2ms    146.3ms          -          -          -
  768      624ms    219.9ms          -          -          -
  896    980.1ms    318.4ms          -          -          -
 1024      1.46s    422.8ms          -          -          -

QR decomposition with column pivoting

Factorizing a square matrix with dimension n as QRP, where P is a permutation matrix, Q is unitary and R is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      947ns      939ns          -          -          -
    8      3.6µs      3.6µs          -          -          -
   16     16.8µs     16.8µs          -          -          -
   32       97µs     97.4µs          -          -          -
   64    684.6µs    714.8µs          -          -          -
   96        2ms      1.9ms          -          -          -
  128      4.4ms      4.2ms          -          -          -
  192     13.7ms     13.1ms          -          -          -
  256     30.7ms     25.1ms          -          -          -
  384     99.1ms     49.1ms          -          -          -
  512    231.4ms       90ms          -          -          -
  640    449.1ms    151.6ms          -          -          -
  768    764.5ms    230.5ms          -          -          -
  896      1.21s    332.2ms          -          -          -
 1024      1.79s      462ms          -          -          -

Matrix inverse

Computing the inverse of a square matrix with dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      1.4µs     15.1µs          -          -          -
    8      4.5µs     36.1µs          -          -          -
   16     20.4µs     63.4µs          -          -          -
   32    110.3µs    196.8µs          -          -          -
   64    694.5µs    777.2µs          -          -          -
   96      2.1ms      1.7ms          -          -          -
  128      4.7ms      3.1ms          -          -          -
  192     15.1ms      7.8ms          -          -          -
  256       35ms     13.6ms          -          -          -
  384    117.1ms     35.4ms          -          -          -
  512    267.1ms     64.2ms          -          -          -
  640    524.5ms    120.4ms          -          -          -
  768    899.5ms    179.5ms          -          -          -
  896       1.4s    273.8ms          -          -          -
 1024      2.17s    405.6ms          -          -          -

Square matrix singular value decomposition

Computing the SVD of a square matrix with dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4     11.6µs     11.7µs          -          -          -
    8     60.4µs     96.7µs          -          -          -
   16    259.8µs    333.2µs          -          -          -
   32      1.1ms      1.1ms          -          -          -
   64      5.9ms      5.6ms          -          -          -
   96     16.4ms     12.4ms          -          -          -
  128     31.5ms     22.2ms          -          -          -
  192     89.6ms       51ms          -          -          -
  256    194.7ms     89.3ms          -          -          -
  384    581.4ms    243.3ms          -          -          -
  512      1.32s    464.9ms          -          -          -
  640      2.48s      758ms          -          -          -
  768      4.13s      1.16s          -          -          -
  896      6.45s      1.72s          -          -          -
 1024      9.51s      2.27s          -          -          -

Thin matrix singular value decomposition

Computing the SVD of a rectangular matrix with shape (4096, n).

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      1.1ms      2.1ms          -          -          -
    8      3.6ms      4.6ms          -          -          -
   16     10.2ms     13.2ms          -          -          -
   32     32.3ms     33.1ms          -          -          -
   64    120.3ms     86.5ms          -          -          -
   96    253.1ms    142.4ms          -          -          -
  128    444.6ms    216.4ms          -          -          -
  192    996.1ms    399.4ms          -          -          -
  256       1.8s    645.6ms          -          -          -
  384      4.05s      1.24s          -          -          -
  512      7.37s       2.1s          -          -          -
  640     11.67s      3.04s          -          -          -
  768     17.43s       4.6s          -          -          -
  896     23.81s      6.02s          -          -          -
 1024     32.59s      7.85s          -          -          -

Hermitian matrix eigenvalue decomposition

Computing the EVD of a hermitian matrix with shape (n, n).

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      5.4µs      5.8µs          -          -          -
    8     21.9µs     25.7µs          -          -          -
   16      102µs     99.5µs          -          -          -
   32    515.3µs    497.8µs          -          -          -
   64      3.1ms      3.1ms          -          -          -
   96      8.6ms      7.2ms          -          -          -
  128     17.5ms     13.1ms          -          -          -
  192     51.1ms     33.1ms          -          -          -
  256    108.3ms     65.1ms          -          -          -
  384    339.3ms    152.3ms          -          -          -
  512    745.4ms    283.9ms          -          -          -
  640       1.4s    457.2ms          -          -          -
  768      2.36s    702.8ms          -          -          -
  896      3.72s      1.03s          -          -          -
 1024      5.45s      1.37s          -          -          -

Non Hermitian matrix eigenvalue decomposition

Computing the EVD of a matrix with shape (n, n).

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4     16.2µs     14.7µs          -          -          -
    8     68.3µs    101.5µs          -          -          -
   16    349.1µs      388µs          -          -          -
   32      1.8ms      1.8ms          -          -          -
   64     11.4ms     12.8ms          -          -          -
   96     46.5ms     60.2ms          -          -          -
  128     92.9ms    104.8ms          -          -          -
  192    299.1ms    221.5ms          -          -          -
  256    593.9ms    418.8ms          -          -          -
  384      1.61s    978.8ms          -          -          -
  512      3.46s         2s          -          -          -
  640      6.26s      3.63s          -          -          -
  768     10.17s      5.24s          -          -          -
  896     15.31s      7.25s          -          -          -
 1024     22.59s      9.99s          -          -          -

c32

Matrix multiplication

Multiplication of two square matrices of dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       61ns       61ns       97ns          -          -
    8      317ns      319ns      208ns          -          -
   16        2µs        2µs      659ns          -          -
   32     14.1µs     14.1µs        4µs          -          -
   64    107.4µs    107.4µs    837.1µs          -          -
   96      356µs    123.6µs      1.1ms          -          -
  128    834.9µs    285.1µs      1.3ms          -          -
  192      2.8ms    675.1µs      1.5ms          -          -
  256      6.6ms      1.4ms        2ms          -          -
  384     22.3ms      4.6ms      3.1ms          -          -
  512     52.6ms     10.6ms      6.7ms          -          -
  640    103.6ms     19.3ms      9.9ms          -          -
  768    178.3ms     32.5ms     16.9ms          -          -
  896    282.8ms     50.6ms     23.1ms          -          -
 1024    422.1ms     74.6ms     33.5ms          -          -

Triangular solve

Solving AX = B in place where A and B are two square matrices of dimension n, and A is a triangular matrix.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       22ns       22ns     26.8µs          -          -
    8      203ns      202ns     27.6µs          -          -
   16      1.3µs      1.3µs     30.5µs          -          -
   32      8.8µs      8.8µs     40.6µs          -          -
   64     62.7µs     62.7µs     59.5µs          -          -
   96      206µs      132µs    332.9µs          -          -
  128    466.5µs      272µs    432.2µs          -          -
  192      1.5ms    558.7µs    602.8µs          -          -
  256      3.5ms      1.1ms    919.3µs          -          -
  384     11.7ms      2.9ms      1.8ms          -          -
  512     27.4ms      6.2ms      4.5ms          -          -
  640     53.3ms     11.7ms        5ms          -          -
  768     91.6ms     19.5ms     10.2ms          -          -
  896    144.6ms     29.4ms       12ms          -          -
 1024    215.7ms     43.6ms     25.1ms          -          -

Triangular inverse

Computing A^-1 where A is a square triangular matrix with dimension n.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      186ns     15.9µs     27.5µs          -          -
    8      534ns     12.7µs     27.6µs          -          -
   16      1.8µs     16.5µs     30.5µs          -          -
   32      7.1µs     27.2µs     40.7µs          -          -
   64     35.2µs     56.5µs     59.6µs          -          -
   96    101.2µs    146.3µs     85.4µs          -          -
  128    208.8µs    251.4µs    454.6µs          -          -
  192      636µs    576.1µs    597.7µs          -          -
  256      1.4ms        1ms      1.1ms          -          -
  384      4.4ms      1.8ms      1.8ms          -          -
  512     10.1ms      3.1ms      4.5ms          -          -
  640     19.3ms      5.3ms        5ms          -          -
  768     32.8ms      7.9ms     10.2ms          -          -
  896     51.7ms     11.2ms       12ms          -          -
 1024     76.5ms     16.3ms       25ms          -          -

Cholesky decomposition

Factorizing a square matrix with dimension n as L×L.T, where L is lower triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4       45ns       45ns      124ns          -          -
    8      172ns      172ns      397ns          -          -
   16      925ns      925ns      1.3µs          -          -
   32      5.1µs      5.2µs      6.6µs          -          -
   64     30.3µs     30.4µs    176.3µs          -          -
   96     85.9µs       86µs      1.7ms          -          -
  128    192.3µs    192.3µs      1.5ms          -          -
  192    583.1µs    541.4µs        4ms          -          -
  256      1.3ms    934.9µs        5ms          -          -
  384      4.2ms      2.3ms       10ms          -          -
  512      9.8ms      3.8ms     11.5ms          -          -
  640     18.9ms      6.5ms     26.6ms          -          -
  768     32.2ms      9.9ms     20.1ms          -          -
  896     50.8ms     13.8ms     18.9ms          -          -
 1024     76.1ms     19.1ms     28.1ms          -          -

LU decomposition with partial pivoting

Factorizing a square matrix with dimension n as P×L×U, where P is a permutation matrix, L is unit lower triangular and U is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      105ns       91ns      176ns          -          -
    8      266ns      273ns      566ns          -          -
   16        1µs      1.1µs      2.3µs          -          -
   32      6.5µs      6.6µs      7.8µs          -          -
   64     45.5µs     45.4µs     30.9µs          -          -
   96    145.9µs    145.5µs       74µs          -          -
  128    327.9µs    326.5µs    360.5µs          -          -
  192      1.1ms    863.8µs      756µs          -          -
  256      2.4ms      1.7ms        1ms          -          -
  384        8ms      4.2ms      2.6ms          -          -
  512     18.7ms        8ms      4.7ms          -          -
  640     36.3ms     13.9ms      7.6ms          -          -
  768     62.6ms     20.9ms     10.8ms          -          -
  896     98.6ms     29.8ms     14.7ms          -          -
 1024    146.5ms       43ms       24ms          -          -

LU decomposition with full pivoting

Factorizing a square matrix with dimension n as P×L×U×Q.T, where P and Q are permutation matrices, L is unit lower triangular and U is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      191ns      185ns          -          -          -
    8      573ns      516ns          -          -          -
   16      2.2µs      2.3µs          -          -          -
   32     12.4µs     12.3µs          -          -          -
   64     82.7µs     82.4µs          -          -          -
   96    262.9µs    262.7µs          -          -          -
  128    609.8µs    609.7µs          -          -          -
  192        2ms        2ms          -          -          -
  256      4.9ms      4.9ms          -          -          -
  384     16.4ms     15.6ms          -          -          -
  512     40.7ms     29.4ms          -          -          -
  640     77.3ms       41ms          -          -          -
  768    134.2ms     63.2ms          -          -          -
  896    215.1ms     99.3ms          -          -          -
 1024    316.8ms    136.3ms          -          -          -

QR decomposition with no pivoting

Factorizing a square matrix with dimension n as QR, where Q is unitary and R is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      164ns      164ns      879ns          -          -
    8      487ns      487ns      2.1µs          -          -
   16      2.5µs      2.5µs      6.9µs          -          -
   32     16.1µs     16.1µs     29.1µs          -          -
   64    132.5µs    132.5µs        1ms          -          -
   96    377.1µs    377.3µs      5.2ms          -          -
  128    815.1µs    815.2µs      9.7ms          -          -
  192      2.5ms      2.5ms     47.7ms          -          -
  256      5.7ms      4.7ms     68.9ms          -          -
  384     18.2ms     11.3ms    132.7ms          -          -
  512     41.9ms     21.9ms    176.6ms          -          -
  640     78.9ms     34.2ms      266ms          -          -
  768    134.3ms     52.8ms    350.6ms          -          -
  896    210.9ms     77.2ms    453.1ms          -          -
 1024    313.2ms    109.5ms    544.3ms          -          -

QR decomposition with column pivoting

Factorizing a square matrix with dimension n as QRP, where P is a permutation matrix, Q is unitary and R is upper triangular.

thread 'main' panicked at 'cast>SizeMismatch', /Users/leifeld/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bytemuck-1.13.1/src/internal.rs:32:3
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
leifeld@MacStudovonDirk faer-bench %  77.3ms       41ms          -          -          -
  768    134.2ms     63.2ms          -          -          -
  896    215.1ms     99.3ms          -          -          -
 1024    316.8ms    136.3ms          -          -          -

QR decomposition with no pivoting

Factorizing a square matrix with dimension n as QR, where Q is unitary and R is upper triangular.

    n       faer  faer(par)    ndarray   nalgebra      eigen
    4      164ns      164ns      879ns          -          -
    8      487ns      487ns      2.1µs          -          -
   16      2.5µs      2.5µs      6.9µs          -          -
   32     16.1µs     16.1µs     29.1µs          -          -
   64    132.5µs    132.5µs        1ms          -          -
   96    377.1µs    377.3µs      5.2ms          -          -
  128    815.1µs    815.2µs      9.7ms          -          -
  192      2.5ms      2.5ms     47.7ms          -          -
  256      5.7ms      4.7ms     68.9ms          -          -
  384     18.2ms     11.3ms    132.7ms          -          -
  512     41.9ms     21.9ms    176.6ms          -          -
  640     78.9ms     34.2ms      266ms          -          -
  768    134.3ms     52.8ms    350.6ms          -          -
  896    210.9ms     77.2ms    453.1ms          -          -
 1024    313.2ms    109.5ms    544.3ms          -          -

QR decomposition with column pivoting

Factorizing a square matrix with dimension n as QRP, where P is a permutation matrix, Q is unitary and R is upper triangular.


thread 'main' panicked at 'cast>SizeMismatch', /Users/leifeld/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bytemuck-1.13.1/src/internal.rs:32:3
sarah-quinones commented 1 year ago

should be fixed with the latest commit, i believe

sarah-quinones commented 1 year ago

thanks for finding this