<div dir="ltr">FWIW, I've heard that CUSPARSE is going to provide integer matrix-matrix products for indexing applications, and that it should be easy to extend that to double, etc.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Oct 2, 2019 at 6:00 PM Mills, Richard Tran via petsc-dev <<a href="mailto:petsc-dev@mcs.anl.gov">petsc-dev@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div bgcolor="#FFFFFF">
Fellow PETSc developers,<br>
<br>
I am wondering why the AIJCUSPARSE and AIJVIENNACL matrix types do not support the sparse matrix-matrix multiplication (SpGEMM, or MatMatMult() in PETSc parlance) routines provided by cuSPARSE and ViennaCL, respectively. Is there a good reason that I shouldn't
 add those? My guess is that support was not added because SpGEMM is hard to do well on a GPU compared to many CPUs (it is hard to compete with, say, Intel Xeon CPUs with their huge caches) and it has been the case that one would generally be better off doing
 these operations on the CPU. Since the trend at the big supercomputing centers seems to be to put more and more of the computational power into GPUs, I'm thinking that I should add the option to use the GPU library routines for SpGEMM, though. Is there some
 good reason to *not* do this that I am not aware of? (Maybe the CPUs are better for this even on a machine like Summit, but I think we're at the point that we should at least be able to experimentally verify this.)<br>
<br>
--Richard<br>
</div>

</blockquote></div>