
我有一台裝有 Ubuntu 10.10 的雙 Xeon 機器和 Nvidia GTX 480 顯示卡,我想在 CPU 和 GPU 上使用 OpenCL。
我使用 apt-get 安裝了最新的 Nvidia 驅動程式 (nvidia-current),並從 Nvidia 頁面下載並安裝了最新的 CUDA Toolkit (3.2)。
但這只允許我在 Nvidia GPU 上運行 OpenCL 程式碼,而不能在 CPU 上運行。
然後我在網路上看到一些文章說ATI SDK能夠在CPU上運行OpenCL程式碼。
我安裝了最新版本的 ATI 驅動程序,然後嘗試編譯 SDK。
然後我就可以在 CPU 上運行程式碼,但我不能再在 GPU 上運行了。
有沒有辦法在 Nvidia GPU 和 Xeon CPU 上執行 OpenCL 程式碼?
答案1
Nvidia CUDA 和 ATI Stream OpenCL 實作都支援 Khronos ICD 擴展,因此當您呼叫 clGetPlatformIDs 時,您將獲得兩個不同的平台,因此您可以在這些平台上查詢 CPU/GPU 設備,當然 ATI 平台將返回 CPU device 和Nvidia 平台將返回GPU 裝置。
然後您可以在這些裝置上建立命令佇列並啟動核心。當然,這意味著在 GPU 和 CPU 之間共享任務並不是一件容易的事,但至少在您的應用程式中擁有一個從 CPU 切換到 GPU 的按鈕會很容易做到。