Nikita Smetanin
|
d7d740abe9
|
Symmetric eigen 3x3 implementation + benchmark & tests
Summary:
Symmetric eigenvalues 3x3 implementation from https://github.com/fairinternal/denseposeslim/blob/roman_c3dpo/tools/functions.py#L612
based on https://en.wikipedia.org/wiki/Eigenvalue_algorithm#3.C3.973_matrices and https://www.geometrictools.com/Documentation/RobustEigenSymmetric3x3.pdf
Benchmarks show significant outperformance of symeig3x3 in comparison with torch implementations (torch.symeig and torch.linalg.eigh) on GPU (P100), especially for large batches: 70-280ns per sample vs 3400ns per sample for torch_linalg_eigh_1048576_cpu
It's worth mentioning that torch.linalg.eigh is still comparably fast for batches up to 8192 on CPU.
Some tests are still failing as the error thresholds need to be adjusted appropriately.
Reviewed By: patricklabatut
Differential Revision: D29915453
fbshipit-source-id: 7c1b062da631c57c4e22a42dd0027ea5e205f1b5
|
2021-10-06 10:57:07 -07:00 |
|