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
..
2021-09-29 18:49:09 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-08-12 14:06:32 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-09-29 18:49:09 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-08-17 04:26:27 -07:00
2021-08-12 14:06:32 -07:00
2021-06-22 03:45:27 -07:00
2021-09-02 09:32:29 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-24 15:56:01 -07:00
2021-06-22 03:45:27 -07:00
2021-09-30 00:48:52 -07:00
2021-09-29 18:49:09 -07:00
2021-06-22 03:45:27 -07:00
2021-07-01 16:08:40 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-10-02 13:40:16 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-28 04:28:06 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-28 06:31:35 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2021-06-22 03:45:27 -07:00
2020-01-23 11:53:46 -08:00