在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