Skip to content

Parallel solving tridiagonal matrix #1066

@antobazir

Description

@antobazir

Hello,

I'm working on a diffusion reaction problem for modelling and I would ideally like to compute diffusion over a 300x300x300 grid.
Reading on the subject oriented me towards locally one-dimension method which means I have to solve 3 tridiagonal systems back-to-back.

I used LAPACK/OpenBLAS to do that. However, the dgtsv function of the LAPACK package (both the C and Fortran implementation found in the OpenBLAS repositories) are not parallelized. I wish to use a 24 cores machine for acceleration and wondered if there was an OpenMP implementation of the dgtsv that can be parallelized in order to take full advantage of the computing power.

I tried to use dgesv(which is parallelized by OpenBLAS) but it seems the gain from parallellizing is negated by the heavier calculations on the full matrix.

Someone has suggested that I use the GETRF + GETRS combination (as they are parallelized by OpenBLAS) but those take full matrices as arguments and my understanding of it tells me it would essentially be the same as just using dgesv (which I suppose wraps those two steps in one function). Am I correct or can I expect better performance with GETRF+GETRS vs DGESV ?

Thanks a lot

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions