![如何从笔记本电脑 GPU 获得最大 CUDA 性能](https://linux22.com/image/1335944/%E5%A6%82%E4%BD%95%E4%BB%8E%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91%20GPU%20%E8%8E%B7%E5%BE%97%E6%9C%80%E5%A4%A7%20CUDA%20%E6%80%A7%E8%83%BD.png)
我有一台 ASUSN56V 笔记本电脑,配备 GeForce GT 650M 和 i7-3610QM,我想使用该卡进行 CUDA 计算。从我的扩展测试中我得到的印象是,在运行具有多个线程的分子动力学程序时,我的 GPU 没有得到最大利用。具体来说,如果我使用 1 个线程,我可以获得 3 倍的速度,性能增益逐渐下降,并且随着线程数超过 4 个而变得更糟。所以我的问题是:
为什么 nvidia-smi 命令仅打印 TEMP、MEMORY 和 Compute M.?其余部分则打印 N/A。是不是因为该 GPU 不支持其他功能?
我尝试通过给出以下命令来利用 GPU 的所有计算能力,但没有任何性能提升:
nvidia-smi -i 0 -c 3 nvidia-smi -i 0 -pm 1 nvidia-smi -i 0 --gom=1
最后一个返回:
GPU 0000:01:00.0 不支持 GOM 功能。视为警告并继续。全部完成。
在 CUDA 计算期间,我还能做些什么来最大限度地利用 GPU?不幸的是,我的 BIOS 菜单不支持关闭板载显卡,而华硕支持人员表示他们对此无能为力。
我将非常感激任何建议!
答案1
gpu 是单线程设备,因此使用多个线程只会减慢整个过程。如果您想利用所有 cpu 核心,请使用 1 个线程向 gpu 发送命令,并在其他线程上执行其他操作(非 gpu 操作)。如果您的集成 gpu 支持 opencl,您也可以使用该组件。因此,这将是 2 个线程与 2 个 gpu 通信,其余线程执行其他操作。