论文阅读笔记3

论文三摘要

题目:An Analytical Model for GPU Architecture with Memory-level and Thread-level Parallelism Awareness

摘要:

提出一个衡量程序运行时间的模型:主要从运行时线程数量(#running threads)和存储带宽(memory bandwidth)两个方面来考虑,从而估算出并行访存的数量(#parallel memory requests

基于存储warp的并行度,该模型估算出内存请求的消耗,从而估算出程序整体的执行时间

内容:

介绍

许多GPU的编程语言并不能有效地指导人们找出性能瓶颈,所以,本文将建立一个分析模型来测试性能瓶颈

模型基本观点:在并行的GPU应用中,估算性能的时候,其最主要的组成部分为内存操作的消耗

主要衡量标准:MWPmemory warp parallelism):同时访问内存的最大warp数目,和CWPcomputation warp parallelism):一个warp访问内存的周期中,同时执行计算的最大warp数目

总体模型:使用MWPCWP可以建立一个有效估算消耗的性能模型,给出一个程序的运行时间

性能准确性:对于micro-banchmarkmerge-banchmark,其绝对误差的集合均值分别为5.4%13.3%

本文的特殊贡献:1,提出了第一个GPU架构上的分析型模型,该模型可以被轻易地扩展到其他的多线程架构上;2,提出了两个新的标准:MWPCWP,代表了warp层次的并行化程度,这个就是识别性能瓶颈的关键因素

背景和动力

CUDA编程模型的背景

CUDA提供了三个关键的抽象:线程组的层次,共享存储器,栅栏同步

GPU架构的背景

SM作为主要的处理中心,同时执行多个block和多个warp,对memory的访问加以区分(globalshared

级联和非级联的存储访问

由于DRAM的特性,级联的访问可以提高存储访问效率

初始的例子

SVMbanchmark,对比三种实现的性能:1,直接使用global memory2,使用constant memory作为缓冲;3,优化了global memory的访问(级联)并且使用constant memory作为缓冲

改进了global memory访问的算法性能最好,使用constant memory作为缓冲也提高了性能,另一方面,SM的占用程度也不能够直接与性能联系上,需要进一步分析其他标准

分析型模型

MWPCWP的简介

MWP:代表了从SM开始执行一个warp中的存储请求命令,到warp中所有的请求都被满足的这个时间段中,每个SM中能够同时访问内存的最大warp数目

A memory warp:一个正在等待内存值的warp

One memory warp waiting period:从一个warp发送完其内存请求直到该warp中所有的内存请求都被满足的这个时间段

CWP:代表了在one memory warp waiting period时间内,某个SM能够执行的warp数目加1

MWP关联着系统中内存的并行化程度

CWP关联着程序的特性:越高的CWP意味着越低的算术密度(高的CWP意味着每个内存访问对应着的计算更少了),判断执行时间的主要消耗是计算还是内存访问

GPU架构中执行多个warps的消耗

CWP大于MWP

属于访存为主的程序,执行的时钟周期数目由(23)式算出

MVP大于CWP

属于计算为主的程序,执行的时钟周期数目由(24)式算出

Warp运行不充分

属于MWP=CWP=N的情况,执行的始终周期数目由(22)式算出

计算warp并行度

存储warp并行化(MWP

Mem_LDeparture_delay,可以算出MWP的上界之一为Mem_L/Departure_delay,再与每个SM中活跃的warp数目比较,小者为没打到峰值的MWP值,再与达到峰值时候的MWP值比较,取最小者即为最终的MWP

Mem_L:计算的是一个warp发送出所有内存请求到其所有请求被满足的时间段

Departure_delay:计算的是两个接连完成内存请求的warp之间相差的时间段(因访存方式不同而不同,可以去权值加以平衡)

计算warp并行化(CWP

CWP的计算比较直观:算出Mem_cycles/Comp_cycles 1的值,然后对比每个SM中的warp活跃数目,取其小者即可

将所有东西放进CUDA

每个SMwarp数目

SM中的warp数目是由GPU本身决定的,而N*Rep则为每个SM总共执行的warp数目(Rep为每个SM处理不同批block的次数,如40block,每个SM每批处理2block,有4SM,则能够得出Rep=40/2/4=5

总共执行的时钟周期

分不同的情况进行计算:MWP=CWP=NCWP>MWPMWP>CWP,对应于式子(22)(23)(24),需要用到指令数目来计算

动态的指令数目

PTX汇编出来的指令进行统计,得到的指令数目会有一定误差

每个指令的时钟周期(CPI

代表每个指令的消耗,计算过程直接使用:总的消耗时钟周期/总的指令数目  即可

级联/非级联的存储访问

取决于内存访问方式,一个warp中的内存请求能否以级联的方式实现,取决于内存系统的为架构和warp内部的内存访问模式

同步的影响

同步之后会有额外的开销:Departure_delay MWP-1

分析型模型的局限性

未分析的几个方面:cache missI-cachetextureconstant cache),没有建立一个cache模型,没有分析分支的代价

代码演示

从汇编出来的PTX代码中找出计算的指令数目:含有shared的指令也作为计算指令,因为其速度与register一致

实验方法

GPU特性

Micro-benchmark

合并benchmark

结果

Micro-benchmark

合并benchmark

相关工作

分析型模型

需要在存储并层次的并行化甚至cache miss上做出更多的工作

其他人的工作:

建立一个一阶模型来对长延迟的cache miss和其他主要性能瓶颈事件进行分析

建立一个一阶模型来计算 未知命中,数据预取和MSHR的消耗

随机模型:内存延迟,切换开销,线程交错执行和线程间切换开销

分析型模型:计算处理器在共享内存系统中的吞吐量,估算了处理器由于cache miss或者其他资源限制产生的等待时间,整个模型基于统计模型

GPU性能建模

本文的工作是最早对存储层次和线程层次并行化的分析

Ryoo 提出了两个标准缩小程序员能够提高的应用的利用率和优化空间,专注于非存储的密集工作负载上

Bakhoda 实现了一个GPU模拟器,使用其模拟输出数据对CUDA应用的性能进行了分析

总结

本模型的关键思想:找出访存warp能够并行执行的最大数目,估算CPI

关键点:

MWPCWP两个标准,对访存为主或者计算为主的应用进行不同的分析,得到整个应用所需要的时钟周期

能否扩展:

加入对warp divergence的分析,对bank conflict的分析

疑问:

没有对texture memoryconstant memory进行讨论,少了warp divergence的分析,少了bank conflict的分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值