我正在编写一个代码,使用点积的CUBLAS例程计算两个向量的点积,但它返回了主机内存中的值。我只想将点积用于GPGPU上的进一步计算。如何使该值仅驻留在GPGPU上,并在不进行从CPU到GPGPU的显式复制的情况下将其用于进一步的计算?
最佳答案
您不能完全使用CUBLAS。按照talonmies的回答,从CUBLAS V2 api(CUDA 4.0)开始,返回值可以是设备指针。请参阅他的答案。但是,如果您使用的是V1 API,则它是一个单一值,因此将其作为使用该参数的内核传递给它的参数很简单-您不需要显式的cudaMemcpy
(但是有一个隐含含义可以返回主机值)。
从Tesla K20 GPU和CUDA 5开始,您将能够使用CUDA动态并行从设备内核调用CUBLAS例程。这意味着您可以从cublasSdot
内核函数内部调用__global__
(例如),因此您的结果将在GPU上返回。
关于cuda - 使用CUBLAS例程在GPGPU上保留点积,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26993405/