ここに、解決策を示す例があります。
整数の2つのベクトルの積は、現在実装されていません。
library(gpuR)
A <- seq.int(from=0, to=999)
B <- seq.int(from=1000, to=1)
gpuA <- gpuVector(A)
gpuB <- gpuVector(B)
gpuC <- gpuA %*% gpuB
エラーをgpuVecInnerProd(x、y)の中で:整数は現在
を実装していない。しかし、我々はから
A
と
B
を変換することができます整数を数値に変換し、内部製品は
gpuR
の下でうまく動作します。
A <- as.numeric(seq.int(from=0, to=999))
B <- as.numeric(seq.int(from=1000, to=1))
gpuA <- gpuVector(A)
gpuB <- gpuVector(B)
gpuC <- gpuA %*% gpuB
all(A%*%B == gpuC)
[1] TRUE
例:
a <- gpuVector(c(5,4,3,6,7)*1.0)
d <- a/2
d[,]
[1] 2.5 2.0 1.5 3.0 3.5
興味深いメモ。我々はgpuMatrix
オブジェクトに整数のA
とB
行列を変換する場合、我々はgpuA %*% gpuB
からのエラーメッセージを得ることはありませんが、結果は間違っている:
A <- matrix(seq.int(from=0, to=999),nrow=1)
B <- matrix(seq.int(from=1000, to=1),ncol=1)
gpuA <- gpuMatrix(A)
gpuB <- gpuMatrix(B)
print(gpuA)
Source: gpuR Matrix [1 x 1,000]
[,1] [,2] [,3] [,4] [,5]
[1,] 0 1 2 3 4
print(gpuB)
Source: gpuR Matrix [1,000 x 1]
[,1]
[1,] 1000
[2,] 999
[3,] 998
[4,] 997
[5,] 996
gpuC <- gpuA %*% gpuB
print(gpuA %*% gpuB)
Source: gpuR Matrix [1 x 1]
[,1]
[1,] 0
print(A%*%B)
[,1]
[1,] 166666500
ホープこれはあなたを助けることができます。
github [ここ](https://github.com/cdeterman/gpuR/issues)でリクエストを行うことは大歓迎です。そうすれば、私は確かにこれを可能にすることができます。 Rの整数除算も '%/%'演算子で行われます。 – cdeterman