在JCublas2.cublasSdot的源代码注释中,它被评论为'result'参数可以是'主机或设备指针'。JCuda的JCublas2.cublasSdot:未能使用设备指针作为结果指针参数
public static int cublasSdot(
cublasHandle handle,
int n,
Pointer x,
int incx,
Pointer y,
int incy,
Pointer result)/** host or device pointer */
{
return checkResult(cublasSdotNative(handle, n, x, incx, y, incy, result));
}
但是,我只能使用像Pointer.to(fs)与float [] fs = {0}的主机指针。如果我使用设备指针,如'CUdeviceptr devicePtr = new CUdeviceptr(); JCudaDriver.cuMemAlloc(devicePtr,100 * Sizeof.FLOAT);”,程序崩溃与像控制台消息:主机和设备之间的数据传输的
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000007fed93af2a3, pid=9376, tid=0x0000000000003a7c
# .....
最小化节省了时间。如何使用设备指针作为此方法的'result'参数,以及其他JCuda方法,结果指针用/ **主机或设备指针** /?注释。
非常感谢,马可。我稍后再试。 – Tom
这完全解决了这个问题。 – Tom