在Windows下使用OpenCL
在Windows下使用OpenCL
目前,VIDIA 和 AMD 的 Windows driver 均有支援 OpenCL(VIDIA 的正式版 driver 是從 195.62 版开始,而 AMD 则是从 9.11 版开始)。VIDIA 的正式版 driver 中包含 OpenCL.dll,因此可以直接使用。AMD 到目前为止,则仍需要安装其 SDK 才有 OpenCL.dll 。不过,在最新的 SDK 中,VIDIA 和 AMD 使用的 calling convention 是相同的。也就是说,使用 AMD 的 SDK 编译的 OpenCL 程式,可以直接在 VIDIA 的 driver 下运作。反过来也是一样。
AMD 的 OpenCL SDK 是在 AMD Stream SDK 2.0 里面,目前是 beta 4。VIDIA 的 OpenCL SDK 则包括在最新的 CUDA .0 SDK beta 中。两个 SDK 可以同時安装在同一部电脑中,基本上不会有冲突的问题。
由于 OpenCL SDK 的重点只是在 header file 和程式库,因此设定上是很单纯的。在 AMD 的 SDK 中,会建立一个环境变数 ATISTREAMSDKROOT。Header files 就在 include 目录中,而程式库档案则在 lib 里面。VIDIA 的 SDK 也是类似,有一个环境变数 VSDKCOMPUTE_ROOT。不过,因为 VIDIA 的 SDK 同时包括 CUDA 及 OpenCL,因此它的 header files 是在 OpenCL\common\inc 目录里,而程式库则是在 OpenCL\common\lib 里面。
关于程式库的部份,还有一点特別需要注意的是,AMD 和 VIDIA 都有提供 2 bits 及 64 bits 的程式库,供 2 bits 及 64 bits 的程式使用。VIDIA 的 SDK 中,2 bits 的程式库是在 lib 目录下的 Win2 目录里,而 64 bits 的则是在 x64 目录里。AMD 的 SDK 中,则分別是在 x86 及 x86_64 目录里。
以下是使用 Visual Studio 2008 Express 设定的范例:
VIDIA 的 CUDA SDK:
特別注意的是,因为 VIDIA 的 SDK 在区分 2 bits 及 64 bits 版本程式库所使用的目录名称(Win2 及 x64)和 Visual Studio 2008 內建的 $(Platformame) 是一致的,因此可以直接使用。AMD 的 SDK 就要分別设定了。另外,如果使用的是 2 bits 的 SDK,則不包括 64 bits 的 library,因此路律就不需要再加上 $(Platformame)。
以下是 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 下都能使用了。
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 18 条评论) |
本站网友 藤黄健骨片 | 19分钟前 发表 |
在 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 下都能使用了 | |
本站网友 蝙蝠是鸟吗 | 0秒前 发表 |
VIDIA 的 SDK 中,2 bits 的程式库是在 lib 目录下的 Win2 目录里,而 64 bits 的则是在 x64 目录里 | |
本站网友 网卡驱动精灵 | 24分钟前 发表 |
不过,因为 VIDIA 的 SDK 同时包括 CUDA 及 OpenCL,因此它的 header files 是在 OpenCL\common\inc 目录里,而程式库则是在 OpenCL\common\lib 里面 | |
本站网友 变形金刚3上映时间 | 1分钟前 发表 |
两个 SDK 可以同時安装在同一部电脑中,基本上不会有冲突的问题 | |
本站网友 家政小时工 | 5分钟前 发表 |
以下是 AMD SDK 的设定方式: 最后,把 OpenCL.lib 加到程式库里面就可以了(这点对两个 SDK 都是一样的): 最后再顺便提到一個小地方 | |
本站网友 药膳食谱 | 21分钟前 发表 |
不过,在最新的 SDK 中,VIDIA 和 AMD 使用的 calling convention 是相同的 | |
本站网友 灵芝的吃法 | 3分钟前 发表 |
VIDIA 的正式版 driver 中包含 OpenCL.dll,因此可以直接使用 | |
本站网友 减肥排行榜 | 6分钟前 发表 |
另外,如果使用的是 2 bits 的 SDK,則不包括 64 bits 的 library,因此路律就不需要再加上 $(Platformame) | |
本站网友 牛奶十大品牌 | 24分钟前 发表 |
VIDIA 的 SDK 也是类似,有一个环境变数 VSDKCOMPUTE_ROOT | |
本站网友 刘强东和章泽天 | 23分钟前 发表 |
也就是说,使用 AMD 的 SDK 编译的 OpenCL 程式,可以直接在 VIDIA 的 driver 下运作 | |
本站网友 陈怀德 | 24分钟前 发表 |
本站网友 米兰春天婚纱摄影 | 18分钟前 发表 |
VIDIA 的正式版 driver 中包含 OpenCL.dll,因此可以直接使用 | |
本站网友 佛影峡 | 26分钟前 发表 |
也就是说,使用 AMD 的 SDK 编译的 OpenCL 程式,可以直接在 VIDIA 的 driver 下运作 | |
本站网友 斑蟊 | 26分钟前 发表 |
反过来也是一样 | |
本站网友 高桥租房网 | 25分钟前 发表 |
也就是说,使用 AMD 的 SDK 编译的 OpenCL 程式,可以直接在 VIDIA 的 driver 下运作 | |
本站网友 女兵要求 | 2分钟前 发表 |
AMD 到目前为止,则仍需要安装其 SDK 才有 OpenCL.dll | |
本站网友 阿拉伯挤奶法视频 | 22分钟前 发表 |
也就是说,使用 AMD 的 SDK 编译的 OpenCL 程式,可以直接在 VIDIA 的 driver 下运作 |