[petsc-users] BiCGSTAB for general use

Paul Anton Letnes paul.anton.letnes at gmail.com
Fri Aug 12 10:09:13 CDT 2011


On 12. aug. 2011, at 15.51, Jed Brown wrote:
> If by "brute force", you mean volumetric discretizations of the differential equations, then this is indeed the largest user base. But there are many optimal methods in this category, such that I think "brute force" would be a misnomer.
That's what I mean, yes. I'm unfamiliar with the terminology - I certainly do not mean that such methods are inefficient or in any way stupid.

> What sort of problem does your dense equation system come from? E.g. does it come from a boundary element method? Can you give a rough estimate of the condition number? Are the eigen/singular values well-clustered? For many dense problems, a Krylov method alone won't beat a direct solver like LAPACK, but if it has extra structure, and especially if it can be stored/applied in less than O(n^2) work, then iterative methods may be competitive.
The problem is a discretized integral equation. It does not quite fall into the boundary element category, but it's not too far off, in a sense. I did not do any sophisticated analysis of the singular values, but I do know that the condition number (largest over smallest singular value) is not too bad.

The physics of the problem is light scattering from a (weakly, but not extremely weakly) rough surface. The matrix has a big diagonal, as to 0. order the specular (mirror-like) reflection is the same as for a flat interface. This also means I have a decent guess solution  (I think).

Another benefit of the iterative method is that I could possibly avoid building the matrix explicitly. Setting up the matrix currently takes orders of magnitude less time than solving the equation system, and eats enormous amounts of computer memory.

My supervisor has used BiCGSTAB with success on a similar, but harder problem (larger roughness regime).

> How large are these matrices likely to be and about how many processors would you like to run on?
If I explicitly build the matrices, the ones I have done so far are 20 GB. More would give me better resolution, so that would be nice. I would like to run on at least a single node with 24 cores, as that's the machine architecture for the computer I've got CPU time on.

It's possible that, if the method converges after very few iterations, that it could be faster to simply build the matrix on the fly as required.

Cheers
Paul





More information about the petsc-users mailing list