Cuda 学习教程(四):Cuda程序的优化
2017-07-27 14:41
309 查看
本文大多数内容来源于《GPU高性能运算之CUDA》-张舒
1. 线程和线程块的分配
如果线程块过大,线程过少,而每个SM中包括两个block,这样会导致每个SM中的线程过少,
即warp(每个warp包括32个线程)过少,这样会造成延时;
另外,每个block块中的线程数最好是32的倍数,这样每个warp机会分配到一个SM中计算,从而隐藏延时。
2. 优化策略
为了在最佳的时间内完成计算,需要考虑算法、并行划分、指令流吞吐量、存储器带宽等多丽因素。总的来说,在秀的CUDA程呼应该同时具有以节几个特征:
• 在给定的数握规模下,选用算法的计算复杂度不明段高于最优的算法。
• actìve warp的数戴能够让SM满载,并且actìve block数盘大于2,能够有效的隐藏语存延迟。
• 当瓶颈出现在指令流〈主要是运算)时,指令流的效率已经经过了充分优化。
• 当瓶颈出现在访存或者IO时,选择适当的储存器访问方式来优化宽带。
3.
《GPU高性能运算之CUDA》-张舒 见4.3.2章节
1. 线程和线程块的分配
如果线程块过大,线程过少,而每个SM中包括两个block,这样会导致每个SM中的线程过少,
即warp(每个warp包括32个线程)过少,这样会造成延时;
另外,每个block块中的线程数最好是32的倍数,这样每个warp机会分配到一个SM中计算,从而隐藏延时。
2. 优化策略
为了在最佳的时间内完成计算,需要考虑算法、并行划分、指令流吞吐量、存储器带宽等多丽因素。总的来说,在秀的CUDA程呼应该同时具有以节几个特征:
• 在给定的数握规模下,选用算法的计算复杂度不明段高于最优的算法。
• actìve warp的数戴能够让SM满载,并且actìve block数盘大于2,能够有效的隐藏语存延迟。
• 当瓶颈出现在指令流〈主要是运算)时,指令流的效率已经经过了充分优化。
• 当瓶颈出现在访存或者IO时,选择适当的储存器访问方式来优化宽带。
3.
《GPU高性能运算之CUDA》-张舒 见4.3.2章节
相关文章推荐
- CUDA学习之CUDA程序优化
- CUDA学习笔记之程序优化
- CUDA学习笔记一:CUDA+OpenCV的图像转置,采用Shared Memory进行CUDA程序优化
- Cuda 学习教程:Cuda 程序初始化
- CUDA学习笔记之程序优化
- CUDA学习笔记之程序优化
- CUDA学习之CUDA程序优化
- Java 2实用教程 学习之类与程序
- MySQL针对Discuz论坛程序的基本优化教程
- 深入理解计算机系统学习笔记(二)之程序优化
- 推荐CUDA程序优化的15个策略
- 轻松学习之Linux教程四 神器vi程序编辑器攻略
- java程序性能优化学习笔记day1
- google 官方教程学习之UI性能优化( Analyzing UI Performance with Systrace)
- 《Java程序性能优化》学习笔记 Ⅱ程序优化
- 《Java程序性能优化》学习笔记 程序优化
- python基础教程_学习笔记25:程序打包
- CUDA 学习优化思路
- Python的爬虫程序编写框架Scrapy入门学习教程
- JDBC基础学习笔记_05_jdbc的程序优化_DTC相关