[转]在Windows 下使用OpenCL

目前,NVIDIAAMD的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中,会建立一个环境变数  ATISTREAMSDKROOTHeader 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 <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 下都能使用了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 之 Dockerfile 实践

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 上一篇介绍了Dockerfile中使用的指令&#xff0c;现在开始进行指令实践 先查看下本地的镜像&#xff0c;选一个作为base image&#xf…

tomcat启动后命令行日志中文乱码

这是日志的编码设置和窗体的编码格式不一致。 将 conf\logging.properties 文件中的 UTF-8 改成 GBK 重启tomcat &#xff08;右键cmd标题栏部分&#xff0c;可以查看cmd属性&#xff09; 转载于:https://www.cnblogs.com/Echiops/p/10974587.html

Coursera机器学习笔记(一) - 监督学习vs无监督学习

转载 http://daniellaah.github.io/2016/Machine-Learning-Andrew-Ng-My-Notes-Week-1-Introduction.html 一. 监督学习 什么是监督学习? 我们来看看维基百科中给出的定义: 监督式学习&#xff08;英语&#xff1a;Supervised learning&#xff09;&#xff0c;是一个机器学习…

基于OpenCL的mean filter性能

1.对于一个标准的3*3 均值滤波&#xff0c;kernel代码如下&#xff1a; 使用buffer/image缓冲对象 __kernel void filter(__global uchar4* inputImage, __global uchar4* outputImage, uint N) {int x get_global_id(0);int y get_global_id(1);int width get_global_size(…

Docker 实战:编写 Dockerfile

一、编译镜像 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 编译镜像 Dockerfile类似于Makfile&#xff0c;用户使用docker build就可以编译镜像&#xff0c;使用该命令可以设置编译…

dubbo-环境搭建,实现一个简单地dubbo实例(附github地址)

一、建立maven模块和provider、consumer、service子模块&#xff0c;其中service是开发接口的模块 建立一个maven模块&#xff0c;不选择样板&#xff0c;直接next知道完成&#xff0c;建立三个子模块,建立完后发现各个模块的java目录不是源目录 右键——>make Directory as…

static 二次理解

当api底层用到static修饰的话&#xff0c;因为是类的&#xff0c;此容器中只有一份转载于:https://blog.51cto.com/jiaxiaoxu/2394844

AMD 5XXX 系列显卡的 peak bandwidth计算

在ATI Stream Computing Programming Guide中&#xff0c;例举了AMD 5系列显卡的参数信息。 我比较关注其中Peak bandwidths的计算&#xff0c;以便在opencl程序测试bandwidth利用率。 下面&#xff0c;我以5870为例&#xff0c;探讨一下如何计算得到这些结果&#xff1a; L1 c…

Docker : Dockerfile 定制镜像

使用 Dockerfile 定制镜像 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写…

动态规划 最长上升子序列

题意&#xff1a;给出一个序列&#xff0c;求它的最长上升子序列的长度 题目链接&#xff1a;https://ac.nowcoder.com/acm/problem/26156 输入:n代表长度&#xff0c;然后是一个字符串 分析&#xff1a;用dp[i]表示长度为i1的上升子序列末尾元素的最小值&#xff08;一开始初始…

解说redis中如何实现高可用

redis中为了实现高可用&#xff08;High Availability&#xff0c;简称HA&#xff09;&#xff0c;采用了如下两个方式&#xff1a;主从复制数据。采用哨兵监控数据节点的运行情况&#xff0c;一旦主节点出现问题由从节点顶上继续进行服务。主从复制redis中主从节点复制数据有全…

OpenCL memory object 之 Global memory (1)

这篇日志是学习AMD OpenCL文档时候的总结。 OpenCL用memory object在host和device之间传输数据&#xff0c;memory object由runtime&#xff08;运行库&#xff0c;driver的一部分&#xff09;来管理。 OpenCL中的内存对象包括buffer以及image&#xff0c;buffer是一维数据元素…

Docker: dockerfile 使用介绍

Docker简介 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Docker项目提供了构建在Linux内核功能之上&#xff0c;协同在一起的的高级工具。其目标是帮助开发和运维人员更容易地跨系统跨…

【Hello CSS】第六章-文档流与排版

作者&#xff1a;陈大鱼头github&#xff1a; KRISACHAN正常流 什么是“正常流”&#xff1f; 其实就是我们日常所说的“文档流”。 在W3C官方文档里对应的是“normal flow”。 正常流的盒子属于格式化上下文(FC)&#xff0c;在CSS2.2中可以是表格、块或内联。 在CSS3中引入了f…

创建型模式---工厂模式

工厂模式 在工厂设计模式中&#xff0c;客户端可以请求一个对象&#xff0c;而无需要知道这个对象来自哪里&#xff0c;也就是使用哪个类来生成这个对象。工厂背后的思想是简化对象的创建。与客户端自己基于类实例化直接创建对象相比&#xff0c;基于一个中心化函数来实现&…

OpenCL memory object 之 Global memory (2)

当我们用clCreateBuffer, clCreateImage创建OpenCL memory object时候&#xff0c;我们需要输入一个flag参数&#xff0c;这个参数决定memory object的位置。 cl_mem clCreateBuffer (cl_context context, cl_mem_flags flags, size_t size, void *host_ptr, cl_int *errc…

数据结构进阶篇-跳表

大家想必都知道&#xff0c;数组和链表的搜索操作的时间复杂度都是O(N)的&#xff0c;在数据量大的时候是非常耗时的。对于数组来说&#xff0c;我们可以先排序&#xff0c;然后使用二分搜索&#xff0c;就能够将时间复杂度降低到O(logN)&#xff0c;但是有序数组的插入是一个O…

查看本机ssh公钥,生成公钥

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 查看ssh公钥方法&#xff1a; 1.通过命令窗口&#xff1a;打开你的git bash 窗口&#xff0c;进入.ssh目录&#xff1a;cd ~/.ssh&…

如何实现动态水球图 --》 echars结合echarts-liquidfill实现

1&#xff09;项目中作为项目依赖&#xff0c;安装到项目当中(注意必须要结合echars) npm install echarts vue-echarts --save npm install echarts-liquidfill --save 2&#xff09;在需要使用水晶球的组件里引入liquidFill.js import echarts-liquidfill/src/liquidFill.js;…

OpenCL memory object 之选择传输path

对应用程序来说&#xff0c;选择合适的memory object传输path可以有效提高程序性能。 下面先看一写buffer bandwidth的例子&#xff1a; 1. clEnqueueWriteBuffer()以及clEnqueueReadBuffer() 如果应用程序已经通过malloc 或者mmap分配内存&#xff0c;CL_MEM_USE_HOST_PTR是个…