• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Have experience with linear algebra libraries for large sparse SPD systems?

eLiu

Diamond Member
Hi all,
I need to solve a large linear system, often in parallel since the number of unknowns won't fit on one computer. The code should also work in serial on smaller systems. So if the I ask for cholesky on 1 processor, the performance should be like in LAPACK... if not, let me know and I'll call out to LAPACK instead.

**The matrix is SPD.** (It's from a linear elasticity problem discretized with CG finite elements.)
**I'm coding in C.** (The rest of the project is in C; this is not negotiable.)
**This is a temporary solution, so it needs to work correctly & not be horribly slow. But I don't have long to set it up, so ease of implementation is a plus.**

I would like a linear algebra library/package (or set of of libraries/packages) that can cover the following capabilities:
1) reasonable speed in parallel AND serial*
2) iterative solver (Conjugate Gradients) AND preconditioners (at least ILU(0))
3) Cholesky with the option of reordering for sparsity (e.g. nested dissection)
4) Easy to interface with C (i.e. written in like F77 or C).

Could you guys suggest/share experiences with libraries/packages that provide my desired features? I'd prefer only dealing with 1 'jack-of-all-trades' package, but if picking up a few specialized ones is better, that's fine too.

I've been searching around, and it seems like the most comprehensive package is going to be PETSc. I have 0 experience with PETSc but people in my group don't like it, claiming that it carries around a lot of overhead. Anyone have experience working with PETSc (in terms of performance & ease of use)?

Thanks,
-Eric
 
I have some limited experience with PETSc from a Wavelet Transformations class I took a year ago. I used the matrix structure/interface from PETSc to implement some transformations for a plugin to Mathematica. It's been a while, but I remember the documentation to be very easy to follow, the interfaces are clean and consistent, and it comes with all sorts of examples. It's a huge library, so it's kind of overwhelming.

Personally, I didn't like it. Immediately after that project, I switched to J-Link to integrate Mathematica with Java, then did all my implementation in Java. Performance took a huge hit, but I could actually finish my work on time...

I haven't gotten to your level of computational mathematics, so I can't make a direct recommendation for you. I've only been here for 2 years...

Good luck!
 
Back
Top