[petsc-users] [External] Re: MatVec on GPUs
Swarnava Ghosh
swarnava89 at gmail.com
Mon Oct 18 21:13:31 CDT 2021
Thanks for the clarification, Junchao.
Sincerely,
Swarnava
On Mon, Oct 18, 2021 at 10:08 PM Junchao Zhang <junchao.zhang at gmail.com>
wrote:
>
>
>
> On Mon, Oct 18, 2021 at 8:47 PM Swarnava Ghosh <swarnava89 at gmail.com>
> wrote:
>
>> Hi Junchao,
>>
>> If I want to pass command line options as -mymat_mat_type aijcusparse,
>> should it be MatSetOptionsPrefix(A,"mymat"); or
>> MatSetOptionsPrefix(A,"mymat_"); ? Could you please clarify?
>>
> my fault, it should be MatSetOptionsPrefix(A,"mymat_"), as seen in
> mat/tests/ex62.c
> Thanks
>
>
>>
>> Sincerely,
>> Swarnava
>>
>> On Mon, Oct 18, 2021 at 9:23 PM Junchao Zhang <junchao.zhang at gmail.com>
>> wrote:
>>
>>> MatSetOptionsPrefix(A,"mymat")
>>> VecSetOptionsPrefix(v,"myvec")
>>>
>>> --Junchao Zhang
>>>
>>>
>>> On Mon, Oct 18, 2021 at 8:04 PM Chang Liu <cliu at pppl.gov> wrote:
>>>
>>>> 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?
>>>>
>>> As Matt suggested, you could single out the matrix and vector with
>>> options prefix and set their type on command line
>>>
>>> MatSetOptionsPrefix(A,"mymat");
>>> VecSetOptionsPrefix(v,"myvec");
>>>
>>> Then, -mymat_mat_type aijcusparse -myvec_vec_type cuda
>>>
>>> A simpler code is to have the vector type automatically set by
>>> MatCreateVecs(A,&v,NULL)
>>>
>>>
>>>> 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
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20211018/45526f73/attachment.html>
More information about the petsc-users
mailing list