dposv, only triangular part of the matrix stored

Open forum for general discussions relating to PLASMA.

dposv, only triangular part of the matrix stored

Postby mkordy » Wed Jul 24, 2013 5:25 pm

Hello

I want to use subroutine Plasma_dposv to solve a symmetric, positive definite linear system in Fortran.
As the matrix is symmetric and large, I want to store only opper or lower triangular part of the matrix.
Yet in the example example_dposv_f.f the memory for the whole matrix is allocated, even though only half of it is used.
How to call a tiled version of dposv supplying only upper or lower triangular part of the matrix?

Thanks for your help!

Michal Kordy
mkordy
 
Posts: 4
Joined: Wed Jul 24, 2013 5:15 pm

Re: dposv, only triangular part of the matrix stored

Postby admin » Wed Jul 24, 2013 7:26 pm

You cannot.
PLASMA does not support what is referred to as "packed storage" for symmetric matrices.
We have no plans to support it any time soon.
How big is your problem?
Do you actually run out of memory?
Jakub
admin
Site Admin
 
Posts: 79
Joined: Wed May 13, 2009 1:27 pm

Re: dposv, only triangular part of the matrix stored

Postby Julien Langou » Thu Jul 25, 2013 6:34 am

Coding a rectangular full packed based on PLASMA subroutines: POTRF+TRSM+SYRK should be relatively easy. See: Fred G. Gustavson, Jerzy Waśniewski, Jack J. Dongarra, and Julien Langou. Rectangular full packed format for Cholesky's algorithm: Factorization, solution and inversion. ACM Trans. Math. Software, 37(2):1-21, 2010. And LAPACK codes DPFTRF for an example. Cheers, Julien.
Julien Langou
 
Posts: 4
Joined: Mon Apr 18, 2011 8:35 pm

Re: dposv, only triangular part of the matrix stored

Postby mkordy » Thu Jul 25, 2013 1:34 pm

Jakub,
Thanks for a fast reply.
The problems we currently consider have 200,000 variables, which results in 300GB of RAM, if a whole matrix is stored.
Our machine has 512GB of RAM.
Soon we want to increase the size of the problem, so the memory is a serious limitation.

Cheers
Michal
mkordy
 
Posts: 4
Joined: Wed Jul 24, 2013 5:15 pm

Re: dposv, only triangular part of the matrix stored

Postby mkordy » Thu Jul 25, 2013 1:34 pm

Julien,
Thanks for this suggestion. I will look into the details of this approach and will post the results.
I am wondeting if the tiled PLASMA subroutines will work.

Michal
mkordy
 
Posts: 4
Joined: Wed Jul 24, 2013 5:15 pm

Re: dposv, only triangular part of the matrix stored

Postby mkordy » Fri Jul 26, 2013 5:29 pm

Hi Julien
I have implemented the procedure you desribed.
For the tiled storage, one needs to have additional (n/2)*(nb-2) numbers stored, where n is the matrix dimension and nb is the tile width.
This is needed as L11 and L22 need to be separated by a diagonal of width nb-2, as both of those matrices have a meaningful diagonal, and this diagonal has to coincide with the diagonal of a tile in PLASMA tiled format.
Practicaly this additional space is nothing compared with the memory needed for the matrix.

This implementation takes 10% more time for a very small matrix with n = 3,200.
For n = 16,000 there is no difference in time.
I tested it on a machine with 8 cores.

Thanks for the suggestion!!
Cheers
Michal
mkordy
 
Posts: 4
Joined: Wed Jul 24, 2013 5:15 pm

Re: dposv, only triangular part of the matrix stored

Postby Julien Langou » Sun Jul 28, 2013 11:33 am

Hi Michal,

Well that was fast!

First of, great! Very happy to read that you have managed to successfully use the Rectangular Full Packed format in your application. Well one more success story for the format! First one with PLASMA, though.

What you are writing is interesting, indeed it is "subtle" to have perfect storage space (i.e., "n*(n+1)/2") using tiles. I understand what you are doing and why you have (n/2)*(nb-2) extra storage. Well, good enough. Maybe we could do better one day.

Cheers,
Julien.
Julien Langou
 
Posts: 4
Joined: Mon Apr 18, 2011 8:35 pm


Return to User discussion

Who is online

Users browsing this forum: Yahoo [Bot] and 0 guests

cron