Hi Ashwin,

I'll add two functions returning the bare CUDA and OpenCL handles.

Best regards,
Karli


On 10/19/2014 03:42 PM, Ashwin Srinath wrote:
Hi everyone

Just wondering what the consensus is. I'm happy to submit a PR if
someone can tell me what goes where!

Thanks
Ashwin

On 18 Oct 2014 01:46, "Karl Rupp" <[email protected]
<mailto:[email protected]>> wrote:

    Hi,

     >> > Why would we want this? The packages themselves
    (CUDA/ViennaCL) only

            expose
            memory using these specific types. What use is it to wrap
            these up in
            a void * if you
            just have to caste back down to use them. Isn't it better to
            maintain
            type-specific, and
            type safe, interfaces for this stuff?

            The biggest problem I faced was that there was no way to
            access device
            memory using petsc4py - since there is no equivalent for
            VecCUSPGetArray. So returning a raw pointer may not be very
            helpful
            for C++/CUSP users (they already have a nice way to access
            device
            memory) but it would definitely make things a lot easier for
            Python users.


        To me it sounds like something that should be dealt with in the
        library
        that does the python bindings, not in PETSc itself. (...)


    Unfortunately, this is not so easy: If the Python wrapper has to
    take care of such a conversion, then it needs to use the *exactly
    same build environment* as PETSc. The reason is that the CUSP and
    ViennaCL types are C++ beasts, not having a defined ABI, so one can
    run into all sorts of hard-to-debug problems when finally linking
    libpetsc.so with the Python wrapper. If, however, PETSc provides
    these low-level memory buffers, the Python wrapper can attach to a
    well-defined ABI.

    Best regards,
    Karli


Reply via email to