我有一个涉及使用 Eigen 编写的大量矩阵乘法的应用程序。我想为其制作一个 GPU 计算后端,同时保持仅在 CPU 上运行并在可用时由 MKL 加速的能力。
问题: 以与 CPU 后端共享尽可能多的代码的方式添加 GPU 计算后端。
实现 GPU 加速的最简单方法是使用 Eigen-magma,但这非常有限,因为每次操作都会从主内存到 GPU 内存进行不必要的来回复制,这限制了性能增益可以从 GPU 获取。
知道我必须完全放弃 Eigen 并重写应用程序,但在没有完全独立的 CPU 和 GPU 计算后端代码路径的情况下,最好的方法是什么?
最佳答案
借助 CUDA6 和自动管理内存功能,您可以通过让驱动程序在确实需要时执行这些额外的拷贝来轻松避免这些额外的拷贝。应该很容易适应特征岩浆以利用该功能。这就是我们计划在 Eigen 中原生支持 CUDA 的方式。
关于c++ - 让应用程序拥有 CPU 和 GPU 计算后端的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25993967/