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



Reply via email to