随笔分类 -  GPU/并行计算/OpenCL

摘要:http://www.cnblogs.com/xzbrillia/archive/2012/07/22/2603638.html经过测试几十张图片,得出的结论是,c#用TPL(任务并行库)比 c++ amp方式快 2-10倍release vs2012 rc对了,你需要一块dx11的显卡,如果没有,就是软件模拟的大概,速度比gpu慢几十倍上百倍。从测试可知,千万像素的时候才差不多持平,这是我电脑不行咩,还是显卡不行,怎么会这样的结果准备周一去公司电脑试试,真奇怪对了,这次测试速度比以前用wpf的要慢,主要差别就是锁定内存的方式不同,等有空测试一下 wpf下的速度一、代码1. c# TPL .. 阅读全文
posted @ 2012-09-01 13:18 董雨 阅读(563) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/Ninputer/archive/2011/08/18/2145045.html前几天技术大牛Vczh同学开发了一个函数图像绘制程序,可以画出方程f(x,y)=0的图像。他的原理是用图像上每一点的坐标带入函数f得到针对x和y的两个方程,再用牛顿迭代法求解得到一组点集,然后画到图像上。用他的程序可以画出各种各样令人惊叹的方程图形。但是他的程序非常慢,因为对每一个点坐标都用牛顿迭代法求解是一项很费时的任务,即使采用了Parallel.For,CPU算起来也很吃力。我研究了他的程序之后觉得可以用擅长并行计算的显卡来加速迭代法求解的过程。用OpenCL来完 阅读全文
posted @ 2012-08-27 10:41 董雨 阅读(805) 评论(0) 推荐(0)
摘要:导读:异构计算被广泛认为是继多核架构后提升处理器性能的最有效的方法,开发者和软件公司通过异构编程能够实现以往CPU无法满足的处理效果甚至全新的领域,并带来全新的用户体验,如人脸识别、高清图像防抖处理等等。通过异构系统架构(Heterogeneous Systems Architecture, HSA),开发者可以充分发挥GPU的潜力,编程难度也大幅降低,并可通过简单的改动和重编译在PC、平板电脑、智能手机端移植。今年6月,AMD、ARM、Imagination、MTK和TI作为发起者共同宣布HSA基金会(HSA Foundation),推动HSA普及和跨平台应用。【CSDN报道】7月11日,A 阅读全文
posted @ 2012-07-18 13:07 董雨 阅读(556) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/smsmn/article/details/6336060其实这两天一直不知道什么叫bank conflict冲突,这两天因为要看那个矩阵转置优化的问题,里面有讲到这些问题,但是没办法,为了要看懂那个bank conflict冲突,我不得不去找资料,说句实话我现在不是完全弄明白,但是应该说有点眉目了,现在我就把网上找的整理一下,放在这边,等哪天完全弄明白了我就在修改里面的错误。 Tesla 的每个 SM 拥有 16KB 共享存储器,用于同一个线程块内的线程间通信。为了使一个 half-warp 内的线程能够在一个内核周期中并行访问,共享存储器被组织成 阅读全文
posted @ 2012-04-20 09:53 董雨 阅读(835) 评论(1) 推荐(0)
摘要:http://www.cocoachina.com/bbs/read.php?tid-31196.htmlOpenCL是由Apple公司起草设计的用于大规模并行计算的计算编程语言,并于2008年6月提交给KHRONOS开放标准组织,并在当年的12月由该组织release了第一版。OpenCL即:Open Computing Language下面将简单地为大家介绍OpenCL的特征以及一些基本概念和术语。OpenCL的设计要求:一、使用系统中所有计算资源:1、将CPU、GPU以及其它处理器进行统一编程2、同时支持数据以及任务并行计算模型二、基于高效C的并行编程模型:抽象了底层硬件的细节三、在嵌入 阅读全文
posted @ 2012-03-28 23:12 董雨 阅读(455) 评论(0) 推荐(0)
摘要:http://www.cocoachina.com/bbs/read.php?tid-31352.html首先,感谢各位,感谢CocoaChina对OpenCL的关注。看到首页上一个大大的OpenCL图标,在下着实激动不已,呵呵。另外,再次感谢Apple能够搞出OpenCL来方便地利用GPU等加速处理器来解决高兴能计算领域的问题。在《概述》章节中,我把OpenCL中遇到的一些基本概念以提纲的形式罗列了出来,目的在于给各位以一个框架性的介绍,然后各位可以在网上搜索到相关的更具体的介绍。就目前对于Mac而言,要获悉,或者说要对OpenCL的工作机制有更清晰的认识,那么有必要先对GPU在高性能计算上 阅读全文
posted @ 2012-03-28 23:09 董雨 阅读(723) 评论(0) 推荐(0)
摘要:这一讲我们将介绍更多的概念。 我们的示例程序是通过OpenCL来实现一个正方形的颜色渐变着色。 这里,我们将牵涉到变量存储属性,另外还引入了向量数据,向量数据是如何操作的,向量数据与标量数据是如何交叉操作的。 我先在首页贴上OpenCL的内核代码,然后附上完整的工程。// Render a square// left-top: red(1, 0, 0)// left-bottom: green(0, 1, 0)// right-top: blue(0, 0, 1)// right-bottom:black(0, 0, 0)__constant float4 left_top ... 阅读全文
posted @ 2012-03-27 13:03 董雨 阅读(732) 评论(0) 推荐(0)
摘要:http://www.cocoachina.com/bbs/read.php?tid=33105&keyword=opencl以下代码就是本人针对之前的OpenCL教程,结合各位能掌握的程度列出的一个示例代码。这份代码由本人亲手炮制。 先贴代码,然后讲解。这里再附上完整的工程。这份代码,当然仍然只能在Snow Leopard下才能运行,因为Leopard上没有OpenCL驱动。/* * hello.c * OpenCL_init * * Created by Zenny Chen on 9/1/10. * Copyright 2010 GreenGames Studio. A... 阅读全文
posted @ 2012-03-27 12:52 董雨 阅读(357) 评论(0) 推荐(0)
摘要:http://www.cocoachina.com/bbs/read.php?tid=37608我们前几章介绍了OpenCL的一些基本概念以及一些基本的用法。我们之前的例子都是线程独立计算的,相互之间没有任何通信。而这样的计算模型也是GPU最最喜欢的,能完全发挥GPU众核并行计算的优势。 今天我们将介绍OpenCL多线程同步技巧。我们下面的例子将是以一个简单的求和算法来描述如何同步一个工作组内的线程以及工作组之间如何同步。 我们之前介绍过变量的地址属性。用__global修饰的变量存放在显示存储器中,特点是容量很大,但访问速度很慢,并且所有工作项都能访问;而用__local修饰的变量存放在共享 阅读全文
posted @ 2012-03-27 10:40 董雨 阅读(959) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/zenny_chen/article/details/6159746在OpenCL中,用__local(或local)修饰的变量会被存放在一个计算单元(Compute Unit)的共享存储器区域中。对于nVidia的GPU,一个CU可以被映射为物理上的一块SM(Stream Multiprocessor);而对于AMD-ATi的GPU可以被映射为物理上的一块SIMD。不管是SM也好,SIMD也罢,它们都有一个在本计算单元中被所有线程(OpenCL中称为Work Item)所共享的共享存储器。因此,在一个计算单元内,可以通过local shared me 阅读全文
posted @ 2012-03-26 17:21 董雨 阅读(435) 评论(0) 推荐(0)
摘要:多核编程学习笔记之同步(二)——采用Win32 线程API分布式 2010-04-10 00:25:15 阅读44 评论0 字号:大中小订阅I. 总结积累1.1 C/C++调用外部程序描述:运行指定的应用程序,这个函数是专用来兼容16位windows的。应用程序应该使用CreateProces函数。原型:UINT WINAPI WinExec( __in LPCSTR lpCmdLine, __in UINT uCmdShow );参数:lpCmdLine:将要运行的应用程序的命令行(文件名称加上可选参数)。如果在lpCmdLine参数中的可执行文件的名字没有包含目录的路径。系统将按顺序搜索. 阅读全文
posted @ 2012-03-19 23:15 董雨 阅读(620) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/woshiqianlong125/article/details/6159692多核编程学习笔记之同步(一)——采用Win32线程API实现分布式 2010-03-17 09:50:35 阅读66 评论0 字号:大中小订阅I. 务虚1.1 总体介绍 在Windows平台下可以通过Windows的线程库来实现多核编程,可以利用Win32API或MFC以及.Net Framework提供的接口来实现。实现方式的多样化给Windows编程带来了很大的灵活性,但也使得多线程编程变得复杂。对于多线程的程序可以使用Visual Studio调试工具进行调试,也可. 阅读全文
posted @ 2012-03-19 23:13 董雨 阅读(559) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/woshiqianlong125/article/details/6159671多核编程的几个难题及其应对策略(难题一) 相关文章链接:多核编程中的负载平衡难题 多核编程中的锁竞争难题 OpenMP并行程序设计(二) OpenMP并行程序设计(一) 双核CPU上的快速排序效率 随着多核CPU的出世,多核编程方面的问题将摆上了程序员的日程,有许多老的程序员以为早就有多CPU的机器,业界在多CPU机器上的编程已经积累了很多经验,多核CPU上的编程应该差不多,只要借鉴以前的多任务编程、并行编程和并行算法方面的经验就足够了。 我想说的是,... 阅读全文
posted @ 2012-03-19 23:12 董雨 阅读(290) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/woshiqianlong125/article/details/6159679多核编程学习笔记之OpenMP(一)I. 配置及简介1.1 在VC++2008(VC9.0)中,如果没有任何设置,在代码中使用编译指导语句将不会报错,但是也不起作用。1.2 OpenMP发展与优势1.2.1 OpemMP的规范由SGI发起,它是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程语言。OpenMP是一种共享内存并行的应用程序编程接口。所有的处理器都被连接到一个共享的内存单元上,处理器在访问内存的时候使用的是相同的内存编址空间。由于内存是共享的,因此,某 阅读全文
posted @ 2012-03-19 23:11 董雨 阅读(2315) 评论(0) 推荐(0)
摘要:目录1 摘要 2 为什么需要OpenCL? 3 OpenCL架构 3.1 介绍 3.2 平台模型 3.3 执行模型 3.3.1 内核 3.3.2 上下文 3.3.3 命令队列 3.4 内存模型 3.5 编程模型 4 基于OpenCL的编程示例 4.1 流程 4.2 图像旋转 4.2.1 图像旋转原理 4.3 实现流程 4.4 图像旋转 5 总结 6 参考文献 1 摘要由于晶体管功耗、物理性能的限制,CPU的发展受到了很大约束。 人们转而寻找其它方式来提高系统性能,如多核处理器,异构平台等。 开放式计算语言(OpenCL)的出现为当前大量存在的异构系统的并行计算提供了一个 标准。OpenCL通过 阅读全文
posted @ 2012-03-06 15:55 董雨 阅读(479) 评论(0) 推荐(0)
摘要:http://we.pcinlife.com/thread-1689813-1-1.html发表于:2011-6-13 19:53:24AMD今天宣布推出四款全新的软件开发工具和方案,可进一步优化应用程序对OpenCL标准规范的支持,并且全部支持Fusion APU融合处理器。gDEBugger:一款先进的OpenCL/OpenGL调试器、 程序分析器和内存分析器,可以在AMD GPU上实时调试OpenCL内核,并在分析内核变量和数据的同时单步调试源代码。该工具来自新成立的AMD研发中心,由AMD 2010年十月收购的新兴公司Graphic Remedy组建而来。gDEBugger可作为微软V 阅读全文
posted @ 2012-02-22 21:36 董雨 阅读(410) 评论(0) 推荐(0)
摘要:http://www.sosol.com.cn/html/2011/201112/20111220_222017_1.htmlAMD今天放出了新版加速计算开发包APP SDK 2.6,虽然版本号上只增加了0.1,但是更新内容却非常多,而且都是重量级的。 新版开发包继续支持OpenCL 1.1,并使用OpenCL ICD(可安装客户端驱动)做为软件堆栈的一部分。如果你的代码是使用ATI Stream SDK 2.0测试版编写的,需要重新编译才能兼容OpenCL ICD。APP SDK 2.6开发包、催化剂11.2驱动程序的主要新特性有:1、Windows/Linux催化剂驱动直接整合Open.. 阅读全文
posted @ 2012-02-09 23:43 董雨 阅读(536) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/Ninputer/archive/2011/08/18/2145045.html前几天技术大牛Vczh同学开发了一个函数图像绘制程序, 可以画出方程f(x,y)=0的图像。他的原理是用图像上每一点的坐标带入函数f得到针对x和y的两个方程,再用牛顿迭代法求解得到一组点集,然后画到图 像上。用他的程序可以画出各种各样令人惊叹的方程图形。但是他的程序非常慢,因为对每一个点坐标都用牛顿迭代法求解是一项很费时的任务,即使采用了 Parallel.For,CPU算起来也很吃力。我研究了他的程序之后觉得可以用擅长并行计算的显卡来加速迭代法求解的过程。用OpenC 阅读全文
posted @ 2012-02-09 11:13 董雨 阅读(558) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/Ninputer/archive/2009/11/24/1609364.html近年来PC的计算能力发生了天翻地覆的变化。CPU逐渐趋向于多核发展,同时内存带宽和 缓存不断增加,如今的PC已经成为小型的统一地址空间的并行计算机。然而我们的PC中还有一个设备可以提供比CPU更加强大的并行计算设备——显卡,它在 进行充分并行的任务时可以提供高达数TFLOPS的峰值运算能力,这几乎是2000-2001年间国产超级计算机的运算能力。在显卡刚出现时,显卡内的模 块都是为特定的图形任务而设计的。比如会有光照和坐标变换单元以及光栅单元等。随着显卡和图形技术的发展 阅读全文
posted @ 2012-02-09 11:10 董雨 阅读(460) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/Ninputer/archive/2009/11/25/1610079.html上篇中我们用DirectX Compute Shader在显卡上编写了一个并行算法来计算好看的曼德勃罗特集迭代数图形。那么使用显卡进行通用计算到底有多少优势呢?我们本次就来比较一番。首先我们在CPU上也实现该算法。为了方便起见我们设计了一个类:class CPUCalc{private: int m_stride; int m_width; int m_height; float m_realMin; float m_imagMin; ... 阅读全文
posted @ 2012-02-09 11:09 董雨 阅读(300) 评论(0) 推荐(0)