在Windows 下使用OpenCL

2021-09-07 00:15:53 字數 2003 閱讀 3936

目前,

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
但是在windows 下(以及可能所有其它的os 下),都是

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

#include

#else

#include

#endif

這樣就可以同時在macos x 10.6 下,以及其它的os 下都能使用了。

windows下VS2017使用openssl庫

openssl開發環境配置教程分享給大家,具體內容如下 環境資訊 windows 10 enterprise version 10.0.15063 visual studio enterprise 2017 version 15.2 26430.12 openssl v1.1.0f 提醒事項 具體步...

在Windows下使用GCC

如何安裝 mingw gcc 編譯器套件 1 使用圖形化的自動安裝程式 2 使用命令列工具 mingw get 3 手動安裝 binutils mingw runtime dev and dll w32api mpc dev and dll mpfr dev and dll gmp dev and ...

在windows下使用ocilib

1.編譯客戶程式時,用法,詳見原始碼中readme文件。add ocilib include folder to your compiler includes path add ocilib lib folder to your linker library path for mingw only,...