本文受到這篇文章的啓發,謝謝在 Grab C4D 討論區的 saikafu。
感覺上 CUDA 的架構簡單些。根據 Wiki 的 CUDA 架構圖,CPU 的功能就只是分配工作,主要的運算都交給 GPU 負責。換句話說,CPU 就很像工廠領班或單位主管,隨時盯著員工手上的工做作完了沒有,以指派新的工作。因此,隨著員工的能力愈強、數量愈多,主管的能力也要愈強、或加派人手才行。因為如果 CPU 無法及時分配工作給閒置的 GPU 核心,整個效能也就拖慢下來了。
至於 OpenCL,應該就是一個整合架構,試圖把系統裡所有具有運算能力的單元都投入生產工作。也許可以這樣說,這時主管的工作不只是監督跟分配工作,如果有餘力,也要負擔一部分的作業。顯然,如果協調的好的話,OpenCL 的效能應該會比 CUDA 好,但相對地也複雜許多,提高了程式寫作的難度。這或許是 Blender Cycles 目前的 OpenCL 支援還是實驗版的原因。
感覺上 CUDA 的架構簡單些。根據 Wiki 的 CUDA 架構圖,CPU 的功能就只是分配工作,主要的運算都交給 GPU 負責。換句話說,CPU 就很像工廠領班或單位主管,隨時盯著員工手上的工做作完了沒有,以指派新的工作。因此,隨著員工的能力愈強、數量愈多,主管的能力也要愈強、或加派人手才行。因為如果 CPU 無法及時分配工作給閒置的 GPU 核心,整個效能也就拖慢下來了。
至於 OpenCL,應該就是一個整合架構,試圖把系統裡所有具有運算能力的單元都投入生產工作。也許可以這樣說,這時主管的工作不只是監督跟分配工作,如果有餘力,也要負擔一部分的作業。顯然,如果協調的好的話,OpenCL 的效能應該會比 CUDA 好,但相對地也複雜許多,提高了程式寫作的難度。這或許是 Blender Cycles 目前的 OpenCL 支援還是實驗版的原因。
留言
張貼留言