[petsc-dev] Not possible to do a VecPlaceArray for veccusp
Karl Rupp
rupp at iue.tuwien.ac.at
Fri Feb 26 07:49:39 CST 2016
>> The alternative would be to use raw cuda pointers instead of cusp
>> arrays for GPU memory in VecCUSP. That would be a fairly
>> significant undertaking (certainly more than the 2-3 weeks Karli
>> is estimating for getting the ViennaCL cuda backend in).
>
> Do you mean creating a new class VECCUDA in addition to VECCUSP and VECVIENNACL? This could be a solution for us. It would mean maybe refactoring MATAIJCUSPARSE to work with these new Vecs?
I prefer to replace VECCUSP with e.g. VECCUDA (and eventually also
rename VECCUSPARSE to VECCUDA to have a unified naming for all the
things provided natively with the CUDA SDK) in order to reduce external
dependencies. CUSP will provide matrices, preconditioners, etc. as
before, but is only optional and thus less likely to cause installation
troubles. Supporting VECCUSP and VECCUDA next to each other is going to
be too much code duplication without any benefit.
Even if we do provide VECCUDA, I still dislike the fact that we would
have to maintain essentially the same code twice: One for CUDA, one for
OpenCL/ViennaCL. With the ViennaCL bindings providing OpenMP and CUDA
support soon, this also duplicates functionality. A possible 'fix' is to
just use ViennaCL for CUDA+OpenCL+OpenMP and thus only maintain a single
PETSc plugin for all three. However, I'm certainly too biased to be
taken seriously here.
>
> If there is interest we can help in adding this stuff.
What are your time constraints?
Best regards,
Karli
More information about the petsc-dev
mailing list