Discussion Overview
The discussion revolves around the performance of the Singular Value Decomposition (SVD) algorithm implemented in C compared to MATLAB's SVD. Participants explore the algorithms used by MATLAB, specifically DGESVD from LAPACK, and discuss potential optimizations for improving the performance of SVD implementations.
Discussion Character
- Debate/contested
- Technical explanation
- Exploratory
Main Points Raised
- One participant expresses disappointment in their C implementation of the GR SVD algorithm, noting it performs worse than MATLAB's SVD.
- Another participant points out that MATLAB uses the DGESVD routine from LAPACK for real-valued matrices and suggests checking the documentation for more information.
- A participant indicates they have found the source code for DGESVD but seeks to understand the reasons behind its speed.
- Some participants criticize others for not utilizing MATLAB's documentation effectively and for asking questions that have already been answered in the documentation.
- There are suggestions for optimizing SVD implementations through processor-specific techniques, such as vectorization, blocking, and loop unrolling.
- Participants mention the existence of optimized libraries like Intel's hand-tuned BLAS, ATLAS BLAS, and GOTO BLAS, which can significantly outperform naive implementations.
- One participant recommends exploring C++ template metaprogramming with Eigen2 as a potential solution for efficient SVD implementations.
Areas of Agreement / Disagreement
Participants exhibit disagreement regarding the effectiveness of documentation usage and the necessity of asking questions that may already have answers. There is no consensus on the best approach to optimize SVD implementations, as various strategies and libraries are suggested.
Contextual Notes
Participants express varying levels of familiarity with MATLAB and its documentation, leading to misunderstandings about the information available. The discussion also highlights the complexity of optimizing algorithms beyond just the mathematical implementation.
Who May Find This Useful
Individuals interested in algorithm optimization, particularly in the context of SVD and numerical computing, as well as those looking to implement efficient algorithms in C or C++.