我正在尝试从gpuR的软件包文档中复制示例。对于第一个示例,我得到了预期的结果(true),第二个示例返回了false。
MWE:
# first example
A <- seq.int(from=0, to=999)
B <- seq.int(from=1000, to=1)
gpuA <- gpuVector(A)
gpuB <- gpuVector(B)
C <- A + B
gpuC <- gpuA + gpuB
all(C == gpuC[])
rm(list = ls())
[1] TRUE
# second example
order <- 1000
A <- matrix(rnorm(order^2), nrow=order)
B <- matrix(rnorm(order^2), nrow=order)
gpuA <- gpuMatrix(A, type="double")
gpuB <- gpuMatrix(B, type="double")
C = A %*% B
gpuC <- gpuA %*% gpuB
all(C == gpuC[])
[1] FALSE
以下GPU上的某些信息。 (在这种情况下,将gpuR(OpenCL)与支持GPU的CUDA一起使用的原因是,它是CRAN当前支持的少数GPU软件包之一。)
> gpuInfo()
$`deviceName`
[1] "GeForce GTX 1050"
$deviceVendor
[1] "NVIDIA Corporation"
$numberOfCores
[1] 5
$maxWorkGroupSize
[1] 1024
$maxWorkItemDim
[1] 3
$maxWorkItemSizes
[1] 1024 1024 64
$deviceMemory
[1] 2147483648
$clockFreq
[1] 1455
$localMem
[1] 49152
$maxAllocatableMem
[1] 536870912
$available
[1] "yes"
$double_support
[1] TRUE