
OpenCL
文章平均质量分 91
Tommy_wxie
Tommy_wxie
展开
-
clCreateBuffer参数说明
clCreateBuffer第二个参数可以有多种,详情请点击此次,对于前三个比较简单,在此就忽略。1、CL_MEM_USE_HOST_PTR 对于CL_MEM_USE_HOST_PTR,刚开始buffer object的值是来自于host_ptr,但buffer object处理之后,host_ptr中的值如何变化,这点在OpenCL中没有定义。那就看看A卡对次是如何处理,一转载 2016-08-16 10:26:27 · 1555 阅读 · 0 评论 -
安卓平台下ARM Mali OpenCL编程-GPU信息检测
对于ARM Mali GPU,目前是支持OpenCL1.1,所以我们可以利用OpenCL来加速我们的计算。 一直以来,对于Mali GPU的OpenCL编程,一直没有环境来测试。好不容易弄到一个华为Mate7,却因为华为没有提供OpenCL driver(小道消息,华为下半年开始将会有OpenCL Drivert提供,拭目以待吧)。目前测试过的手机有魅族MX4 p转载 2017-07-14 10:08:37 · 6248 阅读 · 1 评论 -
OpenCL编译环境配置(VS+Nvidia)
英伟达的显卡首先要下载安装CUDA开发包,可以参考这里的步骤: VS2015编译环境下CUDA安装配置安装好CUDA之后,OpenCL的配置就已经完成了80%了,剩下的工作就是把OpenCL的路径添加到工程中。1. 新建一个win32控制台应用程序,在工程的属性管理器Debug中添加一个属性页“OpenCL.props”,之后双击打开2. 在C/原创 2017-07-03 12:02:01 · 1631 阅读 · 0 评论 -
GPU中与CUDA相关的几个概念
今天说说GPU的硬件结构中与CUDA相关的几个概念:thread block grid warp sp smsp: 最基本的处理单元,streaming processor 最后具体的指令和任务都是在sp上处理的。GPU进行并行计算,也就是很多个sp同时做处理sm:多个sp加上其他的一些资源组成一个sm, streaming multiprocessor. 其他资源转载 2016-10-22 17:28:50 · 1397 阅读 · 0 评论 -
编译 链接和加载
1. 序 最近在折腾各种.so,碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措。索性化了一天多时间将>中部分内容略读了一遍,主要是关于编译,链接和加载这块的。于是顺便做个笔记,方便以后回顾。基本上知道了这些,对于编译,链接和加载过程中产生的各种问题,应该就能从根本上理解并解决了。其实以前上学时也看过那本经典的>,当时还写了篇>,不过此次会更细致深入地了解下整个编译链转载 2016-08-31 21:24:37 · 2185 阅读 · 0 评论 -
GPGPU OpenCL使用结构体数据
OpenCL编程中可以使用结构体,只需要在核函数kernel中提供同样的结构体申明就可以啦。 如果在主函数中定义了结构体:1 typedef struct studentNode{2 int age;3 float height;4 }student; 主函数中定义数据,并传输给OpenCL kernel: 1 student转载 2016-08-21 22:29:10 · 1268 阅读 · 0 评论 -
GPGPU OpenCL/CUDA 高性能编程的10大注意事项
1.展开循环 如果提前知道了循环的次数,可以进行循环展开,这样省去了循环条件的比较次数。但是同时也不能使得kernel代码太大。 循环展开代码例子: View Code2.避免处理非标准化数字 OpenCL中非标准化数字,是指数值小于最小能表示的正常值。由于计算机的位数有限,表示数据的范围和精度都不可能是无限的。(具体可以查看IEEE 754标准,转载 2016-08-21 22:23:49 · 1898 阅读 · 0 评论 -
OpenCL中设置内核参数整理
资源摘自OpenCL实战. 首先,说一下kernel中的几种地址空间限定符:(1)__global该参数的数据会保存在全局数据空间,在内核中的参数使用例子如下:__kernel void kernel_func(__global float *f){}(2)__constant该参数的数据会保存在全局,只读内存中,该参数使用前必原创 2016-08-21 22:14:31 · 4132 阅读 · 0 评论 -
从零开始学习OpenCL开发(四)shader
这里介绍关于OpenCL中program函数的写法,program函数通常是文本形式的,然后使用clCreateProgramWithSource这样的接口load进来。在Shader编程中也经常使用这种形式书写GPU上运行的代码,所以为了表述清楚和理解方便,这里姑且把这些program函数的源码文本称为OpenCL的shader吧 下面都是写在shader中的一些语法 1转载 2016-08-04 22:46:43 · 1084 阅读 · 0 评论 -
从零开始学习OpenCL开发(三)深入API
这里将更深入的说明一些OpenCL API的功能1. 创建buffer涉及到内存与显存的操作总是复杂麻烦的,这个函数也一样。。。cl_memclCreateBuffer (cl_context context, cl_mem_flags flags, size_t size, void *host_pt转载 2016-08-04 22:45:55 · 1213 阅读 · 0 评论 -
从零开始学习OpenCL开发(二)一个最简单的示例与简单性能分析
1 Hello OpenCL 这里编写一个最简单的示例程序,演示OpenCl的基本使用方法: 1.首先可以从Nvdia或者Amd或者Intel或者所有OpenCl成员的开发者网站上下载一份他们实现的OpenCL的SDK。虽然不同公司支持了不同版本的OpenCL和扩展ext,但是在相同版本上对于标准的OpenCL接口,每个SDK实现的结果都是一样的,如果你只是用标准的O转载 2016-08-04 22:45:12 · 1555 阅读 · 0 评论 -
从零开始做OpenCL开发》系列文章的第一篇。
本文将作为我《从零开始做OpenCL开发》系列文章的第一篇。 1 异构计算、GPGPU与OpenCL OpenCL是当前一个通用的由很多公司和组织共同发起的多CPU\GPU\其他芯片 异构计算(heterogeneous)的标准,它是跨平台的。旨在充分利用GPU强大的并行计算能力以及与CPU的协同工作,更高效的利用硬件高效的完成大规模的(尤其是并行度高的)计算。在过去利用转载 2016-08-04 22:44:38 · 2612 阅读 · 0 评论 -
OpenCL2.0特性之SVM
在OpenCL2.0中,增加了SVM(shared virtual memory)的特性。在开始讲解SVM之前,我们先用图片来看下OpenCL1.2中主机与设备端的地址空间: 图1 OpenCL1.2中主机与设备端地址空间 从图1可以看到,主机与设备具有不同的地原创 2016-08-16 10:42:53 · 1779 阅读 · 0 评论 -
clCreateBuffer中cl_mem_flags参数解释
设备与主机端的通信使用clCreateBuffer分配好内存,可以使用主机上已经存在的内容将其进行初始化,也可以先创建内存,再通过clEnqueueWriteBuffer,写数据,或者通过clEnqueueMapBuffer,将设备上的数据映射到主机端进行修改,修改后需要解映射,最后将分配好的内存,通过参数设置clSetKernelArg给到设备,如果数据改变了,则可以使用clEnqueu转载 2017-08-17 16:55:22 · 3036 阅读 · 1 评论