PCA computation speedup by switching to Eigen #2473
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Replace VNL eigensystem with Eigen SVD for PCA computation
Switch ParticleShapeStatistics::compute_modes() from VNL's vnl_symmetric_eigensystem to Eigen's BDCSVD algorithm. This provides:
The SVD singular values squared equal the eigenvalues, and the left singular vectors (U) correspond to the eigenvectors in particle space. Results are reversed to maintain ascending eigenvalue order for backward compatibility.
Also add profiling instrumentation to compute_modes() and Studio main.
Profiling with a large dataset (1024 particles X 5,000 shapes) reduced PCA computation from 90 seconds to 19, about 4-5 times faster.