文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页资讯软件新闻 → 关于CUDA的简单的思考?

关于CUDA的简单的思考?

时间:2010/1/21 11:08:00来源:本站整理作者:我要评论(0)

在做CUDA开发的时候,感觉难点之一就是如何将GPU的性能发挥到最大。

比如说,在同学的GeForce 8400M GS上面跑的程式,Block数量可能要设置的比较少,也就是说一个thread粒度会比较大,这样才能发挥8400最大的性能,因为8400的SM数量 实在太少,但是相同的程式设置用到GeForce GTX285上面却不好用了,为什么呢?因为GT300有30个SM,Block数目设置的较多一点才会更适合,thread的粒度相对较小。
尽管基本不会影响到程式的正确性,但是程式的优化却是和GPU不同不一样的,因此,Fermi做出了将32SP才集合成一个SM,而不是像以前的8个SP 组成一个SM,可能也是为了缓解该问题。
对比一下其他并行计算模型.

不过我对其他并行模型并没有多少了解,还请诸位高手指正。

在CUDA并行计算模型上面,一个程式每个thread的粒度都比较小,而且thread的总数一般都是10万个以上,同时众多thread组合成多个 block分批执行,因此在一个block内thread的计算量和任务基本都是高度一致的(否则会引起很显著的性能问题),因此也不适合做分支预测很多 的任务。

在x86的CPU上面的OpenMP以及Windows SDK的thread管理和模型,每个thread的粒度相对于CUDA来说都是远远大于。同时thread的总数也会比较少,因为thread过多 thread切换带来的时间开销会比较显著,同时每个thread之间可以按照自己的路线走下去,对于分支预测来说也比较适合。

MPI和Stream没有了解过,不熟悉,抱歉。
比较一下共享数据的操作.

在无论是OpenMP还是Windows SDK里面的并行计算中,对共享变量的操作(主要是涉及到写入)的时候,一般都是依靠Lock机制或者Atomic操作机制.
比如创建了两个thread,这两个thread同时要对变量i进行写入的操作,那么就遇到了共享数据问题,CPU并行常见的做法是 Lock,将该变量Lock住,这个时间段内只能有一个thread对其操作,另外一个thread则处于等待状态,直到等到那个thread给变量 Unlock之后才行.
因此这里有时也会遇到死锁问题,程式设计师可能一时疏忽,忘记了Unlock,那么另外一个thread则不停的处于等待状态.

CUDA对此的做法则是有很大的不同,CUDA的并行机制难以忍受如此的Lock操作,因为对一个thread来说实在是太耗时间了,CUDA里面的 thread数量通常都是10万个以上,假如thread都去Lock和Unlock,那么时间开销实在太巨大了.
因此CUDA借助GPU得天独厚的硬体属性,依靠存储器的属性来避免这个问题,比如说GPU里面有shared memory,这个是一个Block内的thread都可以读写的,还有global memory,这个是允许所有thread读写的,每个thread还有自己私有的register,只允许自己读写,此外还有只能读的constant memory和texture memory,依靠着block ID和thread ID的不同来避开共享数据的读写冲突.

当然,有时的无法避免,因此CUDA在1.1版本中加入了Atomic操作,但是目前来看,G92等等GPU的atomic操作会带来很明显的性能降 低,GT200 GPU性能降低仍然比较明显,期待Fermi能够带来很多改善

相关视频

    没有数据

相关阅读 x21uda和x21有区别嘛ToHeart2 AnotherDays攻略顺序 ToHeart2 AnotherDays中文攻略lldal20是什么型号lolK/DA阿卡丽至臻版皮肤获取方法 lolK/DA阿卡丽至臻版皮肤特效视人渣SCUM怎么减肥 人渣SCUM减肥攻略人渣SCUM称号怎么拿 人渣SCUM威望对应称号一览人渣SCUMA2港口物资搜索指南 人渣SCUMA2港口怎么搜人渣SCUM可采集蔬菜水果一览 人渣SCUM野外可采集食物位置

文章评论
发表评论

热门文章 滴滴和优步合并了吗 优​思源黑体:改变锤子手机发布会看点预TK域名免费注册及解析

最新文章 鸿蒙3.0新功能特性介绍微信PC端内测版3.7.0发 win11更新失败怎么办 windows更新win11失败win11怎么退回win10系统 win11退回win10系统win11系统配置要求 win11系统安装配置详解Window 11系统有哪些变化 Window 11系统七大

人气排行 2020年放假安排时间表全年图 2020年法定节假2021年放假安排时间表全年图 2021年法定节假微信公众号怎么申请 微信公众号申请要钱吗zune怎么用?zune使用攻略!2014台式机装机配置推荐snmp协议在windows下的安装与配置2016猴年邮票多少钱一套 2016猴年邮票价格表微信朋友圈三天可见怎么破解 朋友圈仅展示三