[eigen] GSoC 2018 Project "Faster Matrix Algebra for ATLAS" - Multiplication of Hermitian Matrices in Eigen |

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: [eigen] GSoC 2018 Project "Faster Matrix Algebra for ATLAS" - Multiplication of Hermitian Matrices in Eigen*From*: David Tellenbach <datell@xxxxxxxxxxxxx>*Date*: Mon, 6 Aug 2018 03:05:19 +0200*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1533517521; s=strato-dkim-0002; d=tellnotes.org; h=To:Date:Message-Id:Subject:From:X-RZG-CLASS-ID:X-RZG-AUTH:From: Subject:Sender; bh=w3QBHMK3gOiklqW+49Ig1viGjwW6DoBLO/6+jJc22Kw=; b=JRmvYHMNEtglgc/ZwvMBZ4CNZUCYQjqmmM89u6EKJmt4/0hJR5h4lpGnRLV2ZaqUcA wmpBSpJSECjIeiPO3WxbUlRaRigN4SapL2WMPbV+cLb3Q7XJJgUnDl/EPqFJN76whp7L 2nPxSZND5M8gPyx3BCJwet9CjF/b7LKuU0zsVdQZr1OBYCrlMWtf+OcPL3gokEeQgm04 KppZL8f2t92sRGWwrDAO/zrd/anVzAeoIFUSehLIwZotGOBlYGK843H7ZAUENFJDhVQa X7ExXIOmNAj1njmDJKSjXf+8HByGIHxEhHl0/+YYZWYKG7Iusj3IavCmkAukkvazoRwU l7JA==

Hello together, I am writing you to share some new results of our Google Summer of Code 2018 project that aims to implement support for hermitian matrices in Eigen. We are currently in the third and last phase of the Summer of Code and managed to implement the most important and most complicated part: Matrix multiplication. Generally we distinguish four different cases for building a product of the form Lhs * Rhs that involves hermitian matrices: 1. Lhs is dense, Rhs is hermitian -> Assignment to dense matrix 2. Lhs is dense, Rhs is hermitian -> Assignment to dense matrix 3. Lhs is hermitian, Rhs is hermitian -> Assignment to dense matrix 4. Lhs is hermitian, Rhs is hermitian -> Assignment to hermitian matrix Case 4. is useful when you know in advance that the resulting product will be again hermitian. This is the case if and only if the matrix product commutates, i.e., if Lhs * Rhs = Rhs * Lhs. 3. covers the more general case of the product of two hermitian matrices. Implementation: The cases 1.-3. basically work by assigning the hermitian matrix to a dense matrix and performing dense multiplication. Case 4. works differently. As suggested by members of this mailing list, we store hermitian matrices in so called Rectangular Full Packed Format (RFPF). See for further information about this storage scheme. Benchmarks: Now the interesting part: How do the four cases above perform compared to their dense counterparts? Attached to this email you find two graphics that show four different benchmarks using Google's benchmark suite (https://github.com/google/benchmark) The first one shows the following operations for fixed sized matrices: 1. hermitian * dense = dense 2. dense * hermitian = dense 3. dense * dense = dense The second one shows the above operations for dynamically sized matrices. The next benchmark shows a comparison of the following operations 1. hermitian * hermitian = dense 2. hermitian * hermitian = hermitian The last benchmark shows the above operations for dynamically sized matrices. The implementation detail can be found here: As always we would be very happy about some feedback. All the best, David |

**Messages sorted by:**[ date | thread ]- Prev by Date:
**AW: Eigen 3.3 vs 3.2 Performance (was RE: [eigen] 3.3-beta2 released!)** - Next by Date:
**Fwd: [eigen] request to add Lancroz and LOBPCG methods** - Previous by thread:
**RE: Eigen 3.3 vs 3.2 Performance (was RE: [eigen] 3.3-beta2 released!)** - Next by thread:
**Fwd: [eigen] request to add Lancroz and LOBPCG methods**

Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |