Re: [eigen] Divide & conquer SVD algorithm |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: Eigen mailinglist <eigen@xxxxxxxxxxxxxxxxxxx>
- Subject: Re: [eigen] Divide & conquer SVD algorithm
- From: Jitse Niesen <jitseniesen@xxxxxxxxx>
- Date: Tue, 27 May 2014 10:23:07 +0100 (BST)
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1401182577; bh=wiynTr2Rv0nSosqJiXwR2E/dcB4KPCreU5PResSQ+oM=; h=X-Yahoo-Newman-Id:X-Yahoo-Newman-Property:X-YMail-OSG:X-Yahoo-SMTP:X-Rocket-Received:Date:From:X-X-Sender:To:Subject:In-Reply-To:Message-ID:References:User-Agent:MIME-Version:Content-Type; b=PSth9OXL2D+464qc4X/AIJH2pbVr/30PuxfjvOGsb4Jxh/ryRzDz7OxXRG+vtyTmwpyV0tYmDjoVS8/jjDRk9Bwq0sMZMKjj0fq2eWxAddzOOMci8Fc1d9xu7hgpbAjrobiidPbcy6hb30dK+ne7LKkEe769RV072erlSJbvIi4=
On Tue, 27 May 2014, Tristan Sahel wrote:
First, we would need to get used to the code and the specific array
functionalities, so we thought we would try and develop the "shift" or
"rotate" functions of the Array Module. We saw that the todo list was not
up-to-date though, so we would require your confirmation that the job is
still needed before getting down to it. We are hoping that the implementation
of these functions will not be too hard or long.
These functions have not been implemented yet. You should however read
yesterdag's message by Wenzel Jakob on this mailing list. My reply might
also be useful.
Then, we are planning to continue the work of our fellow students of the
Ensimag from last year, who were trying to improve the SVD by developping a
divide & conquer algorithm. Their work was very promising and their algorithm
was slightly faster than the Jocobi SVD algorithm. However, they did not have
time to finish the implementation of their divide & conquer: they were
missing one step, the last one, which they explained step by step in their
todoBDcsvd.txt document. If we manage to finish the job, the calculation time
should become o(n^2).
I hate to scupper your plan, but this is already done. At the moment we
have a complete but basic implementation of the divide and conquer
algorithm in the experimental section. It does need some improvements
(there seems to be at least one bug and several inefficiencies).
I do not know exactly what is required for your project, but here are some
ideas along similar lines. What I would consider the standard algorithm
for the SVD based on Golub and Kahan using bi-diagonalization is not
implemented in Eigen (we did have an implementation in the past but we
removed it as we were not happy with it), so you could do that. You could
also try implementing a divide-and-conquer algorithm for computing
eigenvalues. Another idea is to implement an method for the polar
decomposition.
All the best,
Jitse