非规则计算中的局部性和并行性

       传统算法设计,重点考虑时间和空间复杂度,其实还应该考虑如何充分利用体系结构的特点。我们从两个方面进行考虑:

 

u       存储层次算法(Memory Hierarchy Algorithm

       设计算法使其计算行为具有更多的时间和空间局部性、数据重用。cache存储架构是越做越复杂了,我们在算法上怎么下下功夫呢?

 

u       延迟容忍算法(Latency Tolerant Algorithm

       高性能通信体系结构的发展给算法优化通信提机会,如支持非阻塞传输和的远程直接数据存储(RDAM)操作以便计算和通信操作重叠;另一种延迟容忍技术是多线程。那么我们具体怎么来缩小延迟呢?

 

input: 非规则算法

Algorithm: 缓存无关算法 + 延迟容忍模型算法

output: 获得一定加速比

 

Ø         非规则算法的特点

       如计算流体力学、计算分子动力学等是经典的非规则计算,由于其计算依赖关系和访存模式的非规则性,使得非规则计算程序通常表现出极少的局部性和数据重用、动态非连续存储访问和大量细粒度并行。

 

Ø         缓存无关算法

       核心思想是分而治之。



https://p-blog.csdn.net/images/p_blog_csdn_net/iJuliet/EntryImages/20090409/Cache.JPG  (先看此图)



       常规的做法,像计算X14中那个黄色的点,一个点的结果就要动用其所在的一行和所在的一列,每个点的计算如果都这么兴师动众,那还不把cache累死?例如X11X22算出X12X11X33算出X13(但不是最终结果);X13再由X12X23计算得到最终结果,其它依此类推。如果算法设计这么算,就可以很好地利用常规的局部性优化策略如cache/TLB分块。

 

Ø         延迟容忍模型算法

1.         二级存储模型:分布式存储体系结构 = 核内存储器ICM(多个处理器间可能划分出ICLM + 核外存储器OCM

2.         强执行模型:只有当计算所需的数据都已经在ICM/ICLM时,计算才开始。而且只有被线程需要时,数据才会出现在ICM/ICLM中。

3.         细粒度并行:例如基于DMA的执行模型,一个时间步t可以执行计算+加载+存储,计算需要的数据在t-1已经被传输到ICM/ICLM,其计算结果要到时间步t+1在必要时输出到OCM,这样使得三种操作没有任何依赖关系,可并行执行。而基于多线程的执行模型,开一部分helper线程去专门负责加载和存储,其它线程专注于计算,其它的同DMA模型。

 

       细粒度和局部性是需要考虑的重点。

       例 如用邻接数组表示的稀疏图(用索引数组和邻接数组)。预取和猜测执行技术获得的局部性依赖于存储访问的连续性或者规则的步长,所以很明显地,动态非连续存 储模式不能从预取或者猜测执行技术中获得性能提高。怎么办呢?我们采用渗透技术来获得即时的局部性。核心思想是需要的时候就拥有(指数据)。

       渗 透技术通过对数据进行精细的组织和可控制的预取减少存储访问延迟,在渗透过程中,数据会预先移动到延迟更低的存储层次中。这样,线程的执行就不仅要满足数 据和控制依赖关系,此外还要满足局部性依赖关系,局部性依赖关系确保该任务在真正执行前,其依赖的数据已经位于该线程空间的ICM/ICLM

       渗透编程,其粗粒度并行用于满足数据和控制依赖关系,细粒度并行获得局部性条件。通过计算和访存的分离,并行算法可以:(1)通过访存任务和计算任务之间的多级流水隐藏存储访问的开销;(2)组织和分配不同的访存任务来适应存储层次结构中不同访问的延迟,如非连续地址到连续地址的变换。在多线程环境中,可以由某线程作为渗透线程,负责存储层次之间的数据移动。有别于常规的预取,渗透技术可以在存储层次间gather/scatter数据和对数据组织进行变换,例如OCM中离散的存储访问可以在渗透过程中聚合成连续的片内存储访问,从而获得片内存储访问的局部性。

       所以,算法优化应考虑以下几方面:

1. 把对片外离散存储访问转换成对片内连续存储访问;

2. 分解并行任务以实现不同级存储访问之间的重叠;

3. 开发更多的片内计算与存储访问的并行;

 

       CPU上的并行还真难办,要在局部性和细粒度并行上下这么大功夫,还不见得有很大改进。。。在旧的上面下这么大气力瞎折腾,还不如接受一个新的编程模型如CUDA,还是挺划算地嘛!当然了各伺其主各有其用,什么计算类型适合什么并行模式,也不是乱来地,分析一下折衷选择吧!

 

学习自:中国计算机学会通讯 第5卷 第320093月 谭光明老师与孙凝晖老师

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值