在Windows 下使用OpenCL - Hotball's Hive

文章推薦指數: 80 %
投票人數:10人

NVIDIA 的正式版driver 中包含OpenCL.dll,因此可以直接使用。

AMD 到目前為止,則仍需要安裝其SDK 才有OpenCL.dll 檔。

不過,在最新的SDK 中,NVIDIA 和AMD 使用 ... Hotball'sHiveSearchthissite NavigationHomeSitemapOpenCL 連結BlogMail OpenCL‎>‎ 在Windows下使用OpenCL 目前,NVIDIA和AMD的Windowsdriver均有支援OpenCL(NVIDIA的正式版driver是從195.62版開始,而AMD則是從9.11版開始)。

NVIDIA的正式版driver中包含OpenCL.dll,因此可以直接使用。

AMD到目前為止,則仍需要安裝其SDK才有OpenCL.dll檔。

不過,在最新的SDK中,NVIDIA和AMD使用的callingconvention是相同的。

也就是說,使用AMD的SDK編譯的OpenCL程式,可以直接在NVIDIA的driver下運作。

反過來也是一樣。

AMD的OpenCLSDK是在AMDStreamSDK2.0裡面,目前是beta4。

NVIDIA的OpenCLSDK則包括在最新的CUDA3.0SDKbeta中。

兩個SDK可以同時安裝在同一部電腦中,基本上不會有衝突的問題。

由於OpenCLSDK的重點只是在headerfile和程式庫,因此設定上是很單純的。

在AMD的SDK中,會建立一個環境變數 ATISTREAMSDKROOT。

Headerfiles就在include目錄中,而程式庫檔案則在lib裡面。

NVIDIA的SDK也是類似,有一個環境變數 NVSDKCOMPUTE_ROOT。

不過,因為NVIDIA的SDK同時包括CUDA及OpenCL,因此它的headerfiles是在OpenCL\common\inc目錄裡,而程式庫則是在OpenCL\common\lib裡面。

關於程式庫的部份,還有一點特別需要注意的是,AMD和NVIDIA都有提供32bits及64bits的程式庫,供32bits及64bits的程式使用。

NVIDIA的SDK中,32bits的程式庫是在lib目錄下的Win32目錄裡,而64bits的則是在x64目錄裡。

AMD的SDK中,則分別是在x86及x86_64目錄裡。

以下是使用VisualStudio2008Express設定的範例:NVIDIA的CUDASDK:特別注意的是,因為NVIDIA的SDK在區分32bits及64bits版本程式庫所使用的目錄名稱(Win32及x64)和VisualStudio2008內建的$(PlatformName)是一致的,因此可以直接使用。

AMD的SDK就要分別設定了。

另外,如果使用的是32bits的SDK,則不包括64bits的library,因此路律就不需要再加上$(PlatformName)。

以下是AMDSDK的設定方式:最後,把OpenCL.lib加到程式庫裡面就可以了(這點對兩個SDK都是一樣的):最後再順便提到一個小地方。

在MacOSX10.6中,OpenCL的header檔是存在OpenCL目錄中,也就是#include但是在Windows下(以及可能所有其它的OS下),都是#include因此,如果想要讓同一個程式碼,可以同時在各種OS下都能編譯的話,在include檔案時,建議寫成:#ifdef__APPLE__#include#else#include#endif這樣就可以同時在MacOSX10.6下,以及其它的OS下都能使用了。

Comments Signin|RecentSiteActivity|ReportAbuse|PrintPage|PoweredByGoogleSites



請為這篇文章評分?