[petsc-users] [External] Re: MatVec on GPUs

Chang Liu cliu at pppl.gov
Mon Oct 18 20:04:27 CDT 2021


Hi Junchao,

Thank you for your answer. I tried MatConvert and it works. I didn't 
make it before because I forgot to convert a vector from mpi to mpicuda 
previously.

For vector, there is no VecConvert to use, so I have to do VecDuplicate, 
VecSetType and VecCopy. Is there an easier option?

Chang

On 10/18/21 5:23 PM, Junchao Zhang wrote:
> 
> 
> On Mon, Oct 18, 2021 at 3:42 PM Chang Liu via petsc-users 
> <petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>> wrote:
> 
>     Hi Matt,
> 
>     I have a related question. In my code I have many matrices and I only
>     want to have one living on GPU, the others still staying on CPU mem.
> 
>     I wonder if there is an easier way to copy a mpiaij matrix to
>     mpiaijcusparse (in other words, copy data to GPUs). I can think of
>     creating a new mpiaijcusparse matrix, and copying the data line by
>     line.
>     But I wonder if there is a better option.
> 
>     I have tried MatCopy and MatConvert but neither work.
> 
> Did you use MatConvert(mat,matype,MAT_INPLACE_MATRIX,&mat)?
> 
> 
>     Chang
> 
>     On 10/17/21 7:50 PM, Matthew Knepley wrote:
>      > On Sun, Oct 17, 2021 at 7:12 PM Swarnava Ghosh
>     <swarnava89 at gmail.com <mailto:swarnava89 at gmail.com>
>      > <mailto:swarnava89 at gmail.com <mailto:swarnava89 at gmail.com>>> wrote:
>      >
>      >     Do I need convert the MATSEQBAIJ to a cuda matrix in code?
>      >
>      >
>      > You would need a call to MatSetFromOptions() to take that type
>     from the
>      > command line, and not have
>      > the type hard-coded in your application. It is generally a bad
>     idea to
>      > hard code the implementation type.
>      >
>      >     If I do it from command line, then are the other MatVec calls are
>      >     ported onto CUDA? I have many MatVec calls in my code, but I
>      >     specifically want to port just one call.
>      >
>      >
>      > You can give that one matrix an options prefix to isolate it.
>      >
>      >    Thanks,
>      >
>      >       Matt
>      >
>      >     Sincerely,
>      >     Swarnava
>      >
>      >     On Sun, Oct 17, 2021 at 7:07 PM Junchao Zhang
>      >     <junchao.zhang at gmail.com <mailto:junchao.zhang at gmail.com>
>     <mailto:junchao.zhang at gmail.com <mailto:junchao.zhang at gmail.com>>>
>     wrote:
>      >
>      >         You can do that with command line options -mat_type
>     aijcusparse
>      >         -vec_type cuda
>      >
>      >         On Sun, Oct 17, 2021, 5:32 PM Swarnava Ghosh
>      >         <swarnava89 at gmail.com <mailto:swarnava89 at gmail.com>
>     <mailto:swarnava89 at gmail.com <mailto:swarnava89 at gmail.com>>> wrote:
>      >
>      >             Dear Petsc team,
>      >
>      >             I had a query regarding using CUDA to accelerate a matrix
>      >             vector product.
>      >             I have a sequential sparse matrix (MATSEQBAIJ type).
>     I want
>      >             to port a MatVec call onto GPUs. Is there any
>     code/example I
>      >             can look at?
>      >
>      >             Sincerely,
>      >             SG
>      >
>      >
>      >
>      > --
>      > What most experimenters take for granted before they begin their
>      > experiments is infinitely more interesting than any results to which
>      > their experiments lead.
>      > -- Norbert Wiener
>      >
>      > https://www.cse.buffalo.edu/~knepley/
>     <https://www.cse.buffalo.edu/~knepley/>
>     <http://www.cse.buffalo.edu/~knepley/
>     <http://www.cse.buffalo.edu/~knepley/>>
> 
>     -- 
>     Chang Liu
>     Staff Research Physicist
>     +1 609 243 3438
>     cliu at pppl.gov <mailto:cliu at pppl.gov>
>     Princeton Plasma Physics Laboratory
>     100 Stellarator Rd, Princeton NJ 08540, USA
> 

-- 
Chang Liu
Staff Research Physicist
+1 609 243 3438
cliu at pppl.gov
Princeton Plasma Physics Laboratory
100 Stellarator Rd, Princeton NJ 08540, USA


More information about the petsc-users mailing list