Closed BaptisteLamic closed 1 year ago
Hi Baptiste, thanks for contributing! I must admit HssMatrices.jl
was written in quite a rush as I needed something to work with.
I will try to have a look soon so we can merge it :)
You are welcome! That’s a nice library. The test failed, but they were passing on my lab computer. It may due to the use of MKL instead of OpenBLAS, I will try to get them pass with the latter.
Base: 71.38% // Head: 76.15% // Increases project coverage by +4.76%
:tada:
Coverage data is based on head (
3c80110
) compared to base (980bce6
). Patch coverage: 100.00% of modified lines in pull request are covered.
:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.
I have tried running the tests without the use of eps(real(T)). When I remove it from the line that defines HssMatrix rtol and atol, the tests still pass. But if I remove it from test line 41, the test fails for ComplexF32, the error magnitude is 1E-8, which is close to eps(Float32).
Hi, this last version seems ready to be integrated for me. It would be nice that you could have a look.
Hi Baptiste, apologies for the slow replies. I have been quite busy with some other projects.
I just had a look, the code looks mostly good to me - please have a look at the comment I made.
Hi, I just push a commit to add tests for random access. I will quickly have a look for performance regression.
I just run the benchmarks on an Apple Silicon. There are no notable differences.
New results Benchmarking full... 13.976 ms (738 allocations: 70.91 MiB) Benchmarking getindex... 101.208 μs (1100 allocations: 711.03 KiB) Benchmarking compression... 124.240 ms (7775 allocations: 438.17 MiB) Benchmarking randomized compression... 34.689 ms (9514 allocations: 65.64 MiB) Benchmarking re-compression... 2.274 ms (9150 allocations: 4.82 MiB) Benchmarking proper... 3.309 ms (3946 allocations: 6.40 MiB) Benchmarking addition... 199.000 μs (545 allocations: 4.90 MiB) Benchmarking matvec... 340.625 μs (581 allocations: 1.47 MiB) Benchmarking ulvfactsolve... 8.547 ms (3259 allocations: 22.62 MiB) Benchmarking hssldivide... 32.619 ms (43121 allocations: 72.04 MiB)
Old results Benchmarking full... 14.281 ms (738 allocations: 70.91 MiB) Benchmarking getindex... 106.583 μs (1100 allocations: 711.03 KiB) Benchmarking compression... 135.512 ms (7775 allocations: 438.17 MiB) Benchmarking randomized compression... 34.507 ms (9514 allocations: 65.64 MiB) Benchmarking re-compression... 2.213 ms (9150 allocations: 4.82 MiB) Benchmarking proper... 3.282 ms (3946 allocations: 6.40 MiB) Benchmarking addition... 198.875 μs (545 allocations: 4.90 MiB) Benchmarking matvec... 345.667 μs (581 allocations: 1.47 MiB) Benchmarking ulvfactsolve... 8.623 ms (3259 allocations: 22.62 MiB) Benchmarking hssldivide... 32.173 ms (43121 allocations: 72.04 MiB)
Thank you for testing the perf regression and all your work. I currently am quite busy and won't have time to check. Once you address my comment let us merge this :)
thank you for taking care of this and apologies for the slow review. it's merged :)
Several functions were generating errors when called with HssMatrix{T} where T was not a Float64. These include: \ , / and compress_adatative.
This commit solves this problem and adds a test for it.