[petsc-dev] Multigrid is confusing

Barry Smith bsmith at mcs.anl.gov
Thu May 24 21:17:51 CDT 2012


On May 24, 2012, at 6:45 PM, Jed Brown wrote:

> On Thu, May 24, 2012 at 6:26 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> > So do we manage blocks using internal C++ templates, "templates in C", C generated using some other system (m4 anyone?), or something else entirely?
> >
> > Yes! Finally, we acknowledge that this a problem.
> >
> > 1) C++ templates are not a solution to anything. ANYTHING.
> >
> > 2) I am assuming "templates in C" would work somewhat like a templating engine.
> >     I tried this for the last TOMS paper with Andy. Its was just not a big payoff for
> >     the work put in, and definitely did not justify incorporating another package.
> >
> > 3) I prefer C generated from another system, like the one I use for FEM (which I am
> >     not attached to). We will definitely need this for GPU kernels, and I am guessing
> >     thread kernels if they are going to be worth something.
> >
> 
>    For this particular example (and perhaps many others for sparse matrices) it is a matter of writing "the same algorithm" for a different data structure (the split storage). Perhaps what is needed is a "sparse matrix/graph/mesh" language, for which one can write kernels/code fragments "independent of the data structure"  from which C/whatever is generated? But I don't have a clue what the language would look like.  I think a general purpose tool (for example templates) is unlikely to be useful for us.
> 
> Haven't we already identified most of these primitives? Doesn't it generally come down to selecting a (block) row (upper, lower, or the entire thing) and applying a blocked sparse-dense-{minus,plus}-dot?

   Sarcasm on --
   Yes, of course. It is essentially done, write it up and I want it on my desk by 8 AM Friday.
  -- Sarcasm off

   So what if we know the primatives. How does it give us the "language" to express these kernels and the tools to do the processing?

   Barry





More information about the petsc-dev mailing list