基于GPU上的非结构化网格应用的性能分析和改进[1]
来源:互联网 发布:程序员 简历 编辑:程序博客网 时间:2024/06/06 05:16
对于传统的数据分布不均匀(unstructured grid)的应用在GPU上跑的话,会造成workload分布不均匀从而产生memory latency比较严重不一最终影响到GPU的性能。基于这样的motivation,文章提出一种改进的可以达到硬件高利用率和更有效的内存读取的目的的算法。
文章中研究的应用是计算流体力学应用CFD,举了一个简单的例子:一个每条边上有4个点的三角形网格,每个点有数个参数,每个点根据自身的参数和其他点的参数迭代计算出一个最终的值。没经优化的算法的缺点是因为计算过程中读取数据的随机性导致存储模式局部空间性小cachmiss高最终造成性能的损失。
文章提出的改进优化方案是合理计算出block中的线程数和warp数(尽可能接近硬件指标的上线)的基础上,发现未优化的算法运行过程中相邻线程读取的数据存放位置是随机的,通过交换数据存放的位置使得相邻线程读取的数据存储位置也是相邻的(因为GPU中SIMT的特性,一个WARP的线程如果同时读位于连续地址内存,memory latency会很低)。最后测试显示优化后的效果还是不错的。
这个研究方向是结合某一种特定的算法在GPU上的优化,而且现在这个方向的趋势是偏向不规则应用的优化研究(学长提到因为这更容易找到性能瓶颈)。个人觉得做这个方向要对某类应用特别有钻研(额,窝还是没有对哪类应用特别感兴趣),小超好像就是做这个方向的(他对图类的应用很有研究也立志在这类应用进行优化,TAT真羡慕已经找准方向的人)。
参考:
[1] Solano-Quinde L, Wang Z J, Bode B, et al. Unstructured grid applications on GPU: performance analysis and improvement[C]//Proceedings of the Fourth Workshop on General Purpose Processing on Graphics Processing Units. ACM, 2011: 13.
- 基于GPU上的非结构化网格应用的性能分析和改进[1]
- 一种基于众核GPU上高性能的基于比较的排序算法[1]
- UE3 GPU性能和分析
- 基于数据分析的评分系统改进
- Java中List实现类的性能分析和应用场景(基于JDK1.8)
- 基本的网格结构
- 基于Web应用的性能分析及优化案例
- 基于重新划分的三角形网格简化的一种改进算法
- 面向GPU基于Vertex Texture Fetch的细分曲面构想和初步实现 上
- GPU性能的优化
- GPU的硬件结构
- 改进性能和样式的ASP技巧
- 反射性能的比较和改进
- 基于GPU的CUDA
- 基于GDAL的OGRPolygon网格化
- 基于韦伯特征的非结构化道路检测
- 基于改进依赖分析的微博情感倾向性分析
- 使用基于GPU的Geometry Clipmap渲染地形(上)
- Android内核中判别启动模式
- MFC找窗口句柄
- IT书籍下载、编程语言书籍下载 拼吾爱
- 静态代码检查工具PC-Lint(一)
- ThinkPHP 自定义标签
- 基于GPU上的非结构化网格应用的性能分析和改进[1]
- freemodbus modbus TCP 学习笔记
- HDU 1405The Last Practice
- 如何卸载 SQL Server 2008实例
- Python标准库(非常经典的各种模块介绍)
- 静态代码检查工具PC-Lint(二)
- KODExplorer 简介
- 数据结构---堆及其相关函数
- C语言值传递问题