|
目前,据我的个人了解,这应该是个坑:
以配置好的 bumblebee + bbswitch 为例,需要先加载独显模块, BOINC 才能正确识别显卡;而且必须保证计算程序执行时独显开启,才能正确计算(否则在独显关闭时会因为找不到GPU而计算错误)。BOINC 应该是没有自动调用 bbswitch 或 NVIDIA 驱动的机制,这样的话,目前唯一一种比较简单的方法就是用 bumblebee 的 optirun 运行 BOINC。但这明显有点因噎废食,就算在 BOINC 中暂时禁用 GPU,其实独显也还在运转,失掉了 bumblebee 的作用。
在 Windows 下,opencl/cuda程序不需要在optimus设置中单独配置,也可以正确调用独显。但 Linux 目前好像还是不行的。
有点想研究一下这个问题,先来问一下,看看论坛的 linux 用户有没有什么解决方案或是想法?
目前我能想到的(自己能大概够实现的)解决方案:
1、给 BOINC 加个 wrapper,用来控制 GPU 计算。功能是:在 BOINC 启动前加载一下 nvidia 驱动,让 BOINC 客户端正确识别显卡;如果用户启动要求显卡计算暂停,就让 BOINC 停掉 GPU 计算,然后卸掉驱动关闭独显;如果要求继续计算,就打开独显然后让 BOINC 继续计算。
这样的缺点是,不能让用户自己通过 boinc manager 什么的控制显卡计算了,否则万一用户在没有打开独显时启动了计算,就会出错。
2、给计算程序加个wrapper(就相当于改计算程序加 app_info)。让它们自己调用 optirun 启动。当然,还是要在 BOINC 启动前加载一下 nvidia 驱动,保证 BOINC 客户端正确识别显卡才行。
这个倒是按我的思想挺漂亮的方案,但真做起来有点麻烦……
|
评分
-
查看全部评分
|