I am writing a code to compute dot product of two vectors using CUBLAS routine of dot product but it returns the value in host memory. I want to use the dot product for further computation on GPGPU only. How can I make the value reside on GPGPU only and use it for further computations without making an explicit copy from CPU to GPGPU?
Share
You can’t, exactly, using CUBLAS.As per talonmies’ answer, starting with the CUBLAS V2 api (CUDA 4.0) the return value can be a device pointer. Refer to his answer. But if you are using the V1 API it’s a single value, so it’s pretty trivial to pass it as an argument to a kernel that uses it—you don’t need an explicitcudaMemcpy(but there is one implied in order to return a host value).Starting with the Tesla K20 GPU and CUDA 5, you will be able to call CUBLAS routines from device kernels using CUDA Dynamic Parallelism. This means you would be able to call
cublasSdot(for example) from inside a__global__kernel function, and your result would therefore be returned on the GPU.