前言

目前,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.8.1里面。NVIDIA 的OpenCL SDK 則包括在最新的 CUDA 5.5 SDK 中。两个 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 设定。

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 中,OpenCL 的 header是存在 OpenCL 目录中,也就是

  1. #include <OpenCL/opencl.h>

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

  1. #include <CL/cl.h>

因此,如果想要让同一个程序,可以同时在各 OS 下都能编译的话,在 include ,写成:

  1. #ifdef __APPLE__
  2. #include <OpenCL/opencl.h>
  3. #else
  4. #include <CL/cl.h>
  5. #endif

这样就可以同时在 MacOS X  下,以及其它的 OS 下都能使用了。

===========================================================
转载请注明出处:http://blog.csdn.net/songzitea/article/details/11096453
===========================================================

【异构计算】在Windows下使用OpenCL配置的更多相关文章

  1. 关于windows下的libtorch配置

    关于windows下的libtorch配置 1.环境 Windows service 2012 R2/Windows10 Cuda 9.0 OpenCV3.4.1 Libtorch1.0 VS2017 ...

  2. Windows下python的配置

    Windows下python的配置 希望这是最后一次写关于python的配置博客了,已经被python的安装烦的不行了.一开始我希望安装python.手动配置pip并使用pip安装numpy,然而发现 ...

  3. Windows 下用 gogs 配置局域网 git server

    大道曙光 Windows 下用 gogs 配置局域网 git server 最近要用 C# 开发一个新的项目,所以需要在 Windows 局域网环境下构建一个 git server. 在 Window ...

  4. Windows 下如何安装配置Snort视频教程

    Windows 下如何安装配置Snort视频教程: 第一步: http://www.tudou.com/programs/view/UUbIQCng360/ 第二部: http://www.tudou ...

  5. PHP学习之-Mongodb在Windows下安装及配置

    Mongodb在Windows下安装及配置 1.下载 下载地址:http://www.mongodb.org/ 建议下载zip版本. 2.安装 下载windows版本安装就和普通的软件一样,直接下一步 ...

  6. Windows下caffe的配置和调用caffe库(一)

    一.Windows下caffe的配置: 1. 下载caffe官网提供的开发包,https://github.com/microsoft/caffe 2. 将caffe-master目录下的Window ...

  7. windows下安装和配置redis

    1.windows下安装和配置redis 1.1 下载: 官网(linux下载地址):https://redis.io/ Windows系统下载地址:https://github.com/MSOpen ...

  8. Windows下为 Eclipse 配置 C/C++ 编译环境(转)

    1.Eclipse及CDT的安装 CDT的全称是C/C++ DevelopmentTools,CDT使得Eclipse能够支持C/C++的开发.直接下载 eclipse CDT 集成版 下载地址:ht ...

  9. windows下安装和配置多个版本的JDK

    https://jingyan.baidu.com/article/47a29f2474ba55c015239957.html 如何在windows下安装和配置多个版本的jdk,本文将带你在windo ...

随机推荐

  1. 【转】每一个程序员需要了解的10个Linux命令

    作为一个程序员,在软件开发职业生涯中或多或少会用到Linux系统,并且可能会使用Linux命令来检索需要的信息.本文将为各位开发者分享10个有用的Linux命令,希望对你会有所帮助. 以下就是今天我们 ...

  2. EF的 JOIN操作

    ef join 用法 var customers = DB.Customer.Join(DB.Commission, cst => cst.CommissionId,               ...

  3. [Poi2000]公共串 && hustoj2797

    传送门:http://begin.lydsy.com/JudgeOnline/problem.php?id=2797 题目大意:给你几个串求出几个串中的最长公共子串. 题解:先看n最大才5,所以很容易 ...

  4. python中numpy对函数进行矢量化转换

    在对numpy的数组进行操作时,我们应该尽量避免循环操作,尽可能利用矢量化函数来避免循环. 但是,直接将自定义函数应用在numpy数组之上会报错,我们需要将函数进行矢量化转换. def Theta(x ...

  5. 用js给html控件赋值

      用js给html控件赋值 <script> window.onload=function setValue()//在页面加载时赋值 { document.getElementById( ...

  6. JMeter 连接数据库报错No suitable driver found for jdbc:xxxxxxxxx

    添加JDBC Connection Configuration 和 JDBC Request 组件,添加相关信息 注意两个组件里面输入的Variable Name 必须一致 运行查看结果树出现如下错误 ...

  7. curl远程传输工具

    /** * curl远程传输工具 */ public function post_curl($url,$body,$header,$type='POST'){ $ch = curl_init(); c ...

  8. 神经网络NN

    神经网络基本模型: 1.前向神经网络:无圈的有向图N=(V,E,W),其中,V为神经元集合,E为连结权值集合,W为每一连结赋予一实值的权重. 神经元集V可以被分成无接受域的输入结点集V1,无投射域的输 ...

  9. 超强JavaScript编辑器WebStorm代码提示迟缓问题及其它想到的

    去D2后发现 Hedger 的js编辑器是webStorm,便下载来试试,结果发现: 虽然WebStorm的js的提示远远不如aptana那么强悍(输入字母d不提示document),但是做为 Int ...

  10. 冒泡排序法-java案例详解

    /** * 功能:冒泡排序法 * 思想:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码, * ,若发现逆序这交换,使得排序码较小的元素逐渐从后部移向前部(从下标较大的单元移 ...