在Windows下使用OpenCL

來源:互聯網
上載者:User

轉自 http://www.kimicat.com

在Windows下使用OpenCL

目前,NVIDIA 和 AMD 的 Windows driver 均有支援 OpenCL(NVIDIA 的正式版 driver 是從 195.62 版開始,而 AMD 則是從 9.11 版開始)。NVIDIA 的正式版 driver 中包含 OpenCL.dll,因此可以直接使用。AMD 到目前為止,則仍需要安裝其 SDK 才有 OpenCL.dll 。不過,在最新的 SDK 中,NVIDIA 和 AMD 使用的 calling convention 是相同的。也就是說,使用 AMD 的 SDK 編譯的 OpenCL
程式,可以直接在 NVIDIA 的 driver 下運作。反過來也是一樣。

AMD 的 OpenCL SDK 是在 AMD Stream SDK 2.0 裡面,目前是 beta 4。NVIDIA 的 OpenCL SDK 則包括在最新的 CUDA 3.0 SDK beta 中。兩個 SDK 可以同時安裝在同一部電腦中,基本上不會有衝突的問題。

由於 OpenCL SDK 的重點只是在 header file 和程式庫,因此設定上是很單純的。在 AMD 的 SDK 中,會建立一個環境變數 ATISTREAMSDKROOT。Header files 就在 include 目錄中,而程式庫檔案則在 lib 裡面。NVIDIA
的 SDK 也是類似,有一個環境變數 NVSDKCOMPUTE_ROOT。不過,因為 NVIDIA 的 SDK 同時包括 CUDA 及 OpenCL,因此它的 header files 是在 OpenCL\common\inc 目錄裡,而程式庫則是在OpenCL\common\lib 裡面。

關於程式庫的部份,還有一點特別需要注意的是,AMD 和 NVIDIA 都有提供 32 bits 及 64 bits 的程式庫,供 32 bits 及 64 bits 的程式使用。NVIDIA 的 SDK 中,32 bits 的程式庫是在 lib 目錄下的 Win32 目錄裡,而 64 bits 的則是在 x64 目錄裡。AMD 的 SDK 中,則分別是在 x86 及 x86_64 目錄裡。

以下是使用 Visual Studio 2008 Express 設定的範例:

NVIDIA 的 CUDA SDK:

 

特別注意的是,因為 NVIDIA 的 SDK 在區分 32 bits 及 64 bits 版本程式庫所使用的目錄名稱(Win32 及 x64)和 Visual Studio 2008 內建的 $(PlatformName) 是一致的,因此可以直接使用。AMD 的 SDK 就要分別設定了。另外,如果使用的是 32 bits 的 SDK,則不包括 64 bits 的 library,因此路律就不需要再加上$(PlatformName)。

以下是 AMD SDK 的設定方式:

 

 

最後,把 OpenCL.lib 加到程式庫裡面就可以了(這點對兩個 SDK 都是一樣的):

 

 

最後再順便提到一個小地方。在 MacOS X 10.6 中,OpenCL 的 header 當是存在 OpenCL 目錄中,也就是

#include <OpenCL/opencl.h>

但是在 Windows 下(以及可能所有其它的 OS 下),都是

#include <CL/cl.h>

因此,如果想要讓同一個程式碼,可以同時在各種 OS 下都能編譯的話,在 include 檔案時,建議寫成:

#ifdef __APPLE__

#include <OpenCL/opencl.h>

#else

#include <CL/cl.h>

#endif

這樣就可以同時在 MacOS X 10.6 下,以及其它的 OS 下都能使用了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.