2016年9月16日 星期五

應用 OpenCL 加速 Blender 的 Cycles Render (算繪) 運算

Blender 在動畫的生成階段需要大量的運算,而現在電腦多有強大的 GPU,當不使用於顯示時,這些運算能力就浪費掉了。因此,若能利用多餘不用 GPU 運算資源,做為 Blender 運算之用,除了分擔 CPU 負載、加快生成速度外,也可避免 CPU 過熱。
  既然 Blender 的 OpenCL 相關程式碼還在開發階段,所以使用它時要多一些步驟。方法有二:

一、以「文字命令列」開啟 Blender 的 OpenCL 運算

如果只是測試或生成動畫時才要用 OpenCL 加速運算,開啟「終端機」先設定環境變數『CYCLES_OPENCL_SPLIT_KERNEL_TEST=1』,接著開啟 Blender 即可,命令如下:
[SiB@Core-i7 ~]$ CYCLES_OPENCL_SPLIT_KERNEL_TEST=1 blender
以上述命令開啟的 Blender 就可以設定使用 OpenCL 程式碼,設定方法參考步驟三

二、以『圖示捷徑』開啟 Blender 的 OpenCL 運算

若每次都要使用 OpenCL,用步驟一的方法開啟 Blender 太麻煩了,直接把它加入『圖示捷徑』,如下圖開啟 Blender 『圖示捷徑』的屬性,在『指令:』那一欄的 blender 前加入『env CYCLES_OPENCL_SPLIT_KERNEL_TEST=1』,
修改後,每次開啟 Blender 都可以使用 OpenCL 程式碼了。

三、設定使用 OpenCL 程式碼

前兩個步驟只是讓 Blender 可以使用 OpenCL 程式碼來加速運算,要實際應用 OpenCL 平台,還需一些設定才行。
  設定 Blender 使用 OpenCL 程式碼以加速運算操作為:從《功能選單》的《File (檔案)》點選《User Preference (使用者偏好設定)》跳出一個『Blender User Preferences (Blender 使用者偏好設定)』視窗。在視窗中選擇《System (系統)》分頁,在右下角有個名為『Compute Device (運算裝置)』的設定項目,如下圖:
由圖中可看出『運算裝置』除了原有的『無』(即 CPU) 外,還有個 OpenCL 分項,點選下拉式選單列出可用的 OpenCL 平台,圖中有
  • GeForce GTX 950M
  • Intel HD Graphics
  • Intel Core i7-4720HQ CPU @ 2.60GHz
  • GeForce GTX 950M + Intel Core i7-4720HQ CPU @ 2.60GHz + Intel HD Graphics
等四項,前三項為使用單項平台,最後一項是使用全部平台。

四、經驗分享

幾個使用經驗,敘述如下:
  • 使用 GPU 的 OpenCL 平台時,最好不要與目前使用的顯示卡相同;否則,在 OpenCL 的大量運算下,螢幕顯示的的反應會降低,甚至停滯。
  • 使用 CPU 的 OpenCL 平台時,運算效能與使用 CPU (非 OpenCL) 相當,除非要同時使用其它 OpenCL 平台,否則不必這麼麻煩。
  • 要暫時停止某單一 OpenCL 平台,而使用其它所有 OpenCL 時,可移除 /etc/OpenCL/vendors 目錄下對應的 ICD 檔。如:上例中不使用 Intel HD Graphics 的 OpenCL 平台,而同時使用另兩個平台。則移除內容為 /opt/intel/opencl/libIntelOpenCL.so 的 ICD 檔。

已測試版本:

  • Blender 2.77a
  • Fedora 24 + MATE Desktop 1.14.1

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)