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 <[email protected] <mailto:[email protected]>> 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
    <[email protected] <mailto:[email protected]>
     > <mailto:[email protected] <mailto:[email protected]>>> 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
     >     <[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>>
    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
     >         <[email protected] <mailto:[email protected]>
    <mailto:[email protected] <mailto:[email protected]>>> 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
    [email protected] <mailto:[email protected]>
    Princeton Plasma Physics Laboratory
    100 Stellarator Rd, Princeton NJ 08540, USA


--
Chang Liu
Staff Research Physicist
+1 609 243 3438
[email protected]
Princeton Plasma Physics Laboratory
100 Stellarator Rd, Princeton NJ 08540, USA

Reply via email to