GPU 相对于 CPU 的使用

计算科学 线性求解器 显卡 内存管理
2021-12-09 11:11:06

我有研究工作需要计算矩阵求逆。矩阵有大小31300×31300. 我正在使用通用 java 矩阵包来反转这个矩阵。但是由于矩阵的维度很大,它会将错误内存抛出范围之外。Cpu 无法分配巨大的内存空间。

因此,为了找到解决方案,我开始了解 GPU(图形处理单元)。但是在每次关于 GPU 的搜索中,都描述了 GPU 是用来加速一个进程的。

所以我怀疑CPU无法计算的计算是否可以由GPU计算?或者 GPU 仅用于那些需要时间在 CPU 中计算的进程,它们可以在 GPU 中计算以提高速度。

1个回答

不幸的是,在这种特殊情况下,GPU 对您没有帮助。您的问题在于内存限制;因此,您只是没有足够的 RAM 资源来分配/分解/解决系统。GPU 上的可用内存通常要少得多,因此它们不用于帮助解决内存受限的问题。

尝试的建议:

  1. 看起来您正在尝试分配31300×31300矩阵,这意味着您正在解决一个密集的线性代数问题。确保您使用的矩阵不是稀疏的(在这种情况下,有高效的稀疏线性代数求解器)。
  2. 有核外线性代数求解器(当然,它们的速度要慢得多),这将允许您通过使用硬盘驱动器存储中间/最终结果来解决 RAM 限制内的更大问题。
  3. 使用高效的 LAPACK 线性代数,比如 Intel MKL。
  4. 尝试使用内存更大的机器(Amazon EC2 有便宜的选项可用)。