社区
CUDA高性能计算讨论
帖子详情
关于优化
憨人
2009-02-11 02:43:18
加精
register用多了 大概16个吧 每个thread里的计算量多了,访存次数少了 但是SM占有率低了
为了让register少一点 想保持10个 就又把kernel细化成两个kernel
但是细化的同时增加了参数表 访存的次数又增加了 虽然都是coalesced 但结果效果却没什么不同 :(
问题大体就是如此 希望大家能来讨论讨论
谈谈自己这方面的经验
...全文
1186
45
打赏
收藏
关于优化
register用多了 大概16个吧 每个thread里的计算量多了,访存次数少了 但是SM占有率低了 为了让register少一点 想保持10个 就又把kernel细化成两个kernel 但是细化的同时增加了参数表 访存的次数又增加了 虽然都是coalesced 但结果效果却没什么不同 :( 问题大体就是如此 希望大家能来讨论讨论 谈谈自己这方面的经验
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
45 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
无心人_过过小日子
2010-05-24
打赏
举报
回复
[Quote=引用 43 楼 leon_cuda 的回复:]
怎么计算 一个thread中用了多少个register?
[/Quote]
一种方法是看编译输出的cubin文件.(命令行中加-keep)
还有一种是用cudaprof.
leon_cuda
2010-05-23
打赏
举报
回复
怎么计算 一个thread中用了多少个register?
huang1987hh
2010-05-17
打赏
举报
回复
学习中
lumianph
2010-05-10
打赏
举报
回复
个人实际中感觉occunpancy 对性能的影响比较小,所以如果有另外的performance bottleneck的话这些改变可能对总的效率没有太大影响
zhangwenjianqin
2010-05-07
打赏
举报
回复
学习了!
kattyblume
2009-08-14
打赏
举报
回复
ding ding
caotiancool
2009-04-10
打赏
举报
回复
顶了,很不错
OpenHero
2009-04-08
打赏
举报
回复
找一个折中的比例,不过不是sm占用多就一定好~
有一个折中的配合,需要自己根据自己的程序性能来计算
憨人
2009-04-04
打赏
举报
回复
顶起来下 哈哈
naughty_iori
2009-03-23
打赏
举报
回复
SDK里面有一个CUDA_Occupancy_calculator.xls,用这个可以算出每个MS的占有率。还有考虑显卡上有多少MS和一共有多少任务
zhangjingyu19840911
2009-03-22
打赏
举报
回复
这个 SM占有率 是怎么得到啊?
naughty_iori
2009-03-21
打赏
举报
回复
数据量大的话优化IO是非常重要,尽量减少HOST和DEVICE之间的数据传输,另外就是让数据传输和KERNEL计算并行起来,不过有时候效果不太好??我目前的经验看起来有的时候可以并行,有的时候并不起来,另外只有COPY线性内存才可以和KERNEL并行。
至于寄存器,除了一些比较简单的KERNEL以外,很少有能写到10个以下的,不过为了掩盖GLOBAL MEM操作的时间,在中间多加计算也可以,也就是楼上说的第4条。
掩盖计算我一般的做法就是一边LOAD数据一边计算,LOAD一部分算一部分,尽量不要在LOAD数据后面加SYNC,这样就破坏了PIPELINE,内存操作就掩盖不起来了。所以一般来说,把要处理的数据分成N个不相关的部分,每个部分能用一个WARP处理完,这样是最好的。不过也要考虑总THREAD数,能够把所有的MS都填满。
憨人
2009-03-20
打赏
举报
回复
呃 自己开的贴 结果因为在赶项目 却没来回帖
项目做的差不多了 最后还是采用了多寄存器方案
把一些心得跟大家分享下
我认为程序优化的步骤大体可以这么分
1 实现基本功能
2 优化I/O 这个非常重要(对我的项目来说)
3 优化算法 减少寄存器使用量 保持66%的占有率感觉就不错了 也就是12 -16个register 当然如果能够到10个以内就更好了 这个根据项目来定
除非数据需要重复使用没有必要使用share memory 当然如果变量过多可以考虑增加share 减少 register 保持一个更好的比例
4 掩盖计算(这块是指令级的优化 我现在还做得不好 就不多说了)
5 优化配置
呵呵 先写到这 望大家指正
还得抓紧写论文 要到deadline了
dandinghh
2009-03-18
打赏
举报
回复
顶楼主啊,赚点积分~~
sean20032000
2009-03-18
打赏
举报
回复
学习了,
fmchuan
2009-03-18
打赏
举报
回复
像你们学习!
tai003003
2009-03-18
打赏
举报
回复
不错啊支持下啊
hugo513
2009-03-17
打赏
举报
回复
这个方向好难!
liuweifeng_123
2009-03-17
打赏
举报
回复
学习
GetForHelpHere
2009-03-17
打赏
举报
回复
支持一下
加载更多回复(23)
Unity3D
优化
技术讲解
该课程使用的Unity2018,主要内容是关于游戏
优化
方面的讲解,不同于以往的讲解,该课程首先给读者分享了几个案例:自定义Mesh实现,利用GOU几何绘制实现草的编辑,为了让读者更好的理解
优化
技术,给读者深入分析了
优化
涉及到的三个方面:CPU,GPU,内存,以及在产品设计上需要关注的点。希望通过该课程的学习能够帮助读者在
优化
方面进一步提升。
(十) 深度学习笔记 | 关于
优化
器Adam
一、关于
优化
器 深度学习的目标是通过不断改变网络参数,使得参数能够对输入做各种非线性变换拟合输出,本质上就是一个函数去寻找最优解,所以如何去更新参数是深度学习研究的重点。 通常将更新参数的算法称为
优化
器,字面理解就是通过什么算法去
优化
网络模型的参数。常用的
优化
器就是梯度下降。接下来讲的就是梯度下降和进一步
优化
梯度下降的各种算法。
优化
器或者
优化
算法,是通过训练
优化
参数,来最小化(最大化)损失函数。损失函数是用来计算测试集中目标值Y的真实值和预测值的偏差程度。 为了使模型输出逼近或达到最优值,我们需要用各种
神经网络关于
优化
器的选择问题(Optimizer)
最近在
优化
自己的循环神经网络时,用到了很多
优化
算法,所以在这里梳理一下,也算是总结。 关于
优化
器: 其实机器学习训练过程中的本质就是在最小化损失,而在我们定义了损失函数后,
优化
器就派上了用场,在深度学习中,我们通常就是对于梯度
优化
,
优化
的目标就是网络模型里的参数θ(是一个集合,θ1、θ2、θ3 ……)。 (我们设,一般的线形回归函数的假设函数是: 对应的损失函数是: ...
LaTex 关于
优化
问题公式排版及算法格式排版例子
LaTex 关于
优化
问题公式排版及算法格式排版例子宏包LaTex公式书写公式对齐alignedsplit算法格式排版模拟退火算法 宏包 写算法别忘记导入算法的宏包: \usepackage{algorithm} \usepackage{algorithmic} LaTex公式书写 推荐一个LaTex在线公式编辑器,神器非常好用。link 公式对齐 标准单个公式环境 \begin{equation...
MySQL性能
优化
:
优化
思路、查询
优化
、索引
优化
、存储
优化
、数据库结构
优化
、数据库结构
优化
MySQL性能
优化
1
优化
介绍 在进行
优化
讲解之前,先请大家记住不要听信你看到的关于
优化
的“绝对真理”,而应该是在实际的业务场景下通过测试来验证你关于执行计划以及响应时间的假设。给大家提供一些
优化
方面的方向和思路,而具体业务场景的不同,使用的MySQL服务版本不同,都会使得
优化
方案的制定也不同。 1.1 MySQL介绍 MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。可以看到Google,Facebook,Twitter,百度,新浪,腾讯,淘宝,网易,
CUDA高性能计算讨论
353
社区成员
615
社区内容
发帖
与我相关
我的任务
CUDA高性能计算讨论
CUDA高性能计算讨论
复制链接
扫一扫
分享
社区描述
CUDA高性能计算讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章