我有一个名为Titan Z的双GPU卡。我有Matlab 2016a,试图求解不同"b
"值的稀疏Ax=b
方程组。Titan Z有两个gpu,每个gpu 有6 GB内存
问题来了。
- 如果我在1个GPU上解决
Ax=b
问题,假设"A
"矩阵大小为2GB,Matlab将此矩阵复制到每个GPU的vram中。GPU-Z报告每个GPU有2 GB的数据,并且只有1个GPU在工作 - 如果我在2个GPU上解决两个
Ax=b
问题,假设"A
"矩阵大小为2GB,Matlab会再次将此矩阵复制到每个GPU的vram两次。现在GPU-Z报告说,每个GPU有4GB的数据,两个GPU同时工作 - 如果我试图同时解决"4GB"问题,Nvidia驱动程序会因Vram不足而崩溃。但我可以在一个GPU上解决它。而不是同时在2个GPU上
问题是Matlab在不需要的时候复制这些矩阵两次,更有趣的是,当两个GPU使用完全相同的"A
"矩阵但不同的"b
"向量时,它会这样做。
我该如何解决这个问题?
回答我自己的问题有点晚,但这里是解决方案。在Nvidia控制面板中禁用多GPU模式解决了这个问题。基本上,它禁用了sli,gpu可以独立运行。就这么简单。