Hi Ashwin,
> After discussion with Lisandro Dalcin, I think that it might be a good
idea for PETSc to provide a routine `VecGetGPUArray` (in place of or in
addition to the current `VecCUSPGetArray`) which returns a raw pointer
to device memory, and lets the user decide what to do with it.
Do you think this can fit in to PETSc? If so, I already have an
implementation, but can use help with the interface.
If this should be provided, then the right names were
VecCUDAGetArray()
VecOpenCLGetArray()
The former returns an object of type PetscScalar* and the latter an
object of type cl_mem. Because one is stuck with two incompatible
pointer types here, I'd suggest not to provide a single interface at the
expense of giving up type safety. Also, even if one gives up type
safety, one would immediately have to switch-case into a
backend-specific implementation again, so there's little value in a
common interface.
Best regards,
Karli