Python 基于GPU的PyTorch/CuPy基本矩阵运算

Python 基于GPU的PyTorch/CuPy基本矩阵运算,python,numpy,matrix,pytorch,cupy,Python,Numpy,Matrix,Pytorch,Cupy,我有一个numpy脚本,其中我使用大矩阵执行以下操作(可以使用float值遍历10000x1000): 我第一次在CPU上使用Pytork张量(i7-8750H),它的运行速度快了2倍: tensorQ = torch.from_numpy(Q) tensorR = torch.from_numpy(R) sub= torch.eye(a * d, dtype=float) - tensorQ inv= torch.inverse(sub) tensorF = torch.mm(inv, ten

我有一个numpy脚本,其中我使用大矩阵执行以下操作(可以使用
float
值遍历
10000x1000
):

我第一次在CPU上使用Pytork张量(i7-8750H),它的运行速度快了2倍:

tensorQ = torch.from_numpy(Q)
tensorR = torch.from_numpy(R)
sub= torch.eye(a * d, dtype=float) - tensorQ
inv= torch.inverse(sub)
tensorF = torch.mm(inv, tensorR)
F = tensorF.numpy()
现在我尝试在GPU(1050Ti Max-Q)上执行它,看看是否可以获得另一个加速,但代码运行速度比numpy版本慢(我已经安装了CUDA和cuDNN)。也许Pytork它甚至不是做这类事情的最佳图书馆,但我现在正在学习它,我认为它可以帮助我:

dev = torch.device('cuda')

tensorQ = torch.from_numpy(Q).to(dev)
tensorR = torch.from_numpy(R).to(dev)
sub= torch.eye(a * d, dtype=float).to(dev) - tensorQ
inv= torch.inverse(sub).to(dev)
tensorF = torch.mm(inv, tensorR).cpu()
F = tensorF.numpy()
我错过什么了吗

编辑: 我也尝试过使用CuPy,但速度仍然很慢:

Q = cp.array(matrixQ)
R = cp.array(matrixR)
sub = cp.identity(attacker * defender) - matrixQ
inv = cp.linalg.inv(sub)
F = cp.matmul(inv, matrixR)
F = cp.asnumpy(matrixF)

与少数操作的计算相比,内存分配的开销可能太大。

您能否提供一个可复制的示例,包括生成代表性/示例数据?你是说我是如何创建矩阵的?我没有把它贴出来,因为它又长又复杂。我的回答实际上更一般,我是问我写的东西是否足以在GPU上运行。我还查看了windows任务管理器,GPU只有一些峰值,我不知道它是否以正确的方式运行。
Q = cp.array(matrixQ)
R = cp.array(matrixR)
sub = cp.identity(attacker * defender) - matrixQ
inv = cp.linalg.inv(sub)
F = cp.matmul(inv, matrixR)
F = cp.asnumpy(matrixF)