目前,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 的設定方式:



最后再順便提到一個小地方。在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 下都能使用了。