OpenCL并行计算实验之路
文章平均质量分 61
主要分享总结自己在学习过程中遇到过的问题及解决方法。同时共享一些自己做的实验,与大家共同探讨。
2know_clay
一个人最大的幸福,莫过于在人生的中途,在最富有创造力的壮年,发现自己此生的使命。
展开
-
OpenCL中的向量数据类型转换
OpenCL中的向量数据类型转换1.函数原型convert_destType(sourceType)destType convert_destType<_sat><roundingMode>(sourceType)destTypen convert_destTypen<_sat&amp原创 2018-06-20 20:58:14 · 3777 阅读 · 0 评论 -
OpenCL简介
一、渊源 在硕士期间,由于实验室项目需求,本人在GPU上完成了一些医疗成像算法的加速。由于人工智能的爆发,笔者顺利找到了一份GPU优化的工作。如今即将毕业,笔者经过一年多的学习和应用,对于GPU编程有了基本的认识,因此在此编写几篇简单的入门引导博客,帮助更多的人尽快入门,少走弯路。如果总结中存在问题,也希望读者不吝赐教,共同探讨。 这个系列的博客主要介绍OpenCL编程的一些基础知识,...原创 2017-12-04 19:17:12 · 3745 阅读 · 0 评论 -
OpenCL做并行滤波
本实验主要进行OpenCL一维信号的滤波;主要思路是以离散信号的序列点作为目标,一个工作项负责一个信号点的计算;这样做的好处是方便,相对于串行实现获得相当大的性能提升;但是每个工作项负载不均衡。原创 2016-10-15 11:25:31 · 1862 阅读 · 1 评论 -
OpenCL矩阵乘法的例子
前两篇博客中介绍过矩阵转置的两种方法,矩阵乘法可以先对矩阵做转置运算,然后再对应相乘; 矩阵大小是65*8192 先对8192*65的矩阵转置为65*8192; 然后由65个工作项,每个工作项负责一行数据的乘法; 完成65行数据的乘法; 转置是由8192个工作项完成的; 代码中给出了C语言实现矩阵转置的测试代码; 感兴趣的朋友可以测试一下C语言代码的运算时间和GPU运算时间的差别;原创 2016-10-13 09:46:56 · 2735 阅读 · 0 评论 -
OpenCL矩阵转置(二)
所谓矩阵,在内存中也是一串数字;所以转置就是将数据的存储相对位置进行调换。上一篇博客介绍了按照转置定义方法进行转置的技巧;但是那种方法仅限于方阵,对于一般矩阵转置相对比较困难(可以将一般矩阵分块);所以今天介绍一般矩阵转置方法;原创 2016-10-10 21:05:58 · 1085 阅读 · 1 评论 -
OpenCL中kernel的循环调用
kernel的循环调用主要是涉及缓冲区的创建和主机端命令同步原创 2016-10-09 10:47:37 · 5203 阅读 · 4 评论 -
OpenCL笔记之主机端同步
关于主机端同步,我一共进行了四个实验;主要是对四中方法的实验;原创 2016-10-08 22:19:53 · 1689 阅读 · 1 评论 -
OpenCL实现序列卷积
在上一篇博客中讲解了卷积和滤波的区别,本文主要介绍利用OpenCL如何在GPU上实现序列卷积。采用上文中的第一种方法实现:原创 2016-10-04 13:51:02 · 930 阅读 · 1 评论 -
OpenCL实现MapReduce算法
MapRedue算法并不是为了解决特定问题而存在的,它是为了解决涉及分布式运算的一类问题而提供的一种计算框架。MapReduce的基本实现包含两部分:映射阶段,从输入数据中产生键值对;归并阶段,处理这些键值对,并输出结果。MapReduce常常和集群计算相关,但是在此仅仅以一个OpenCL实现字符串搜索的例子,对其进行简单介绍。原创 2016-09-22 16:47:26 · 1523 阅读 · 3 评论 -
OpenCL实现矩阵转置
本例子主要参考OpenCL实战书中提到的方法。 矩阵转置就是行列互换,但是作为并行计算的转置,首先考虑分块,由不同的工作项同时对不同的矩阵块进行行列互换,以此来提高矩阵转置的效率。具体操作如下: 这是一个8*8的矩阵,将其分为2*2的矩阵块。一共有16个矩阵块,分为对角线上的矩阵块和非对角线上的矩阵块。 对角线上的矩阵块转置以后就是矩阵块内部行列互换,如图红色十字线所示;非对角线上的矩阵块是原创 2016-10-04 14:57:25 · 1486 阅读 · 1 评论 -
OpenCL入门(三)——Hello Word
这是OpenCL的第一个程序,所谓的helloword!本程序实现的是向量加法。首先从主要的主机API开始介绍。1.创建平台结构2.创建设备结构3.创建上下文4.创建程序5.编译程序6.创建命令队列7.创建内核8创建缓存对象9.设置内核参数10.执行内核11.读取内核结果原创 2016-09-19 19:06:57 · 3099 阅读 · 0 评论 -
关于OpenCL架构的整理
关于OpenCL架构的整理OpenCL不仅仅是一种编程语言,也是一种并行编程框架。它包括编程语言、API、函数库以及运行时来支持软件在整个平台上的开发。下面介绍OpenCL中包含的各个模型:平台模型Platform Model内存模型Memory Model执行模型Execution Model编程模型Programming Model1. 平台模型平台模型是对不同硬件平台(主机以及不同翻译 2016-04-18 21:53:36 · 1997 阅读 · 0 评论 -
OpenCL入门二——开发环境
首先需要正常安装visual studio软件,然后下载AMD APP SDK(本文以A卡为例)下载地址: http://developer.amd.com/community/blog/2015/08/26/introducing-app-sdk-30-opencl-2/ 正常安装SDK; 新建C++工程 右键源文件->添加->新建项 创建host.c和kernel...原创 2016-09-30 10:15:55 · 1373 阅读 · 0 评论