收藏本站
收藏 | 手机打开
二维码
手机客户端打开本文

基于事务的软件投机并行机制研究

张小强  
【摘要】: 随着CPU芯片上集成的计算核心不断增加,计算机系统峰值性能不断攀升。近年来,多核处理器已经占据桌面,众核处理器即将普及。但是应用程序的并行开发远远滞后于硬件的发展,大部分商业程序并非可扩展的并行应用,因此很难充分利用多核系统的计算能力。由于并行应用开发尚未成为主流,现有的语言机制、库、设计模式等各方面都没有对并行程序开发提供良好的支持。如何有效利用众核处理器的潜在计算能力,已经成为软件工业所面临的巨大挑战。 挑战之一是如何简化并行应用程序的开发。事务内存(Transactional Memory,TM)提供一种更高层次抽象机制,有效简化了并行程序的开发。基于事务内存,可以实现对共享数据的并发访问,而没有死锁、不可组合、扩展性差等问题,程序员仅需要考虑事务内代码的正确性问题,而不用考虑各并行任务之间由于复杂同步引发的问题,被认为是一种极具前景的并行程序设计方法。 挑战之二是如何尽量将已有串行程序并行化,并尽可能地提高并行程序执行的效率。作为现有自动并行化技术的延伸,多线程投机并行技术(Speculative Parallel Threading, SPT)可以让传统方法难以并行的程序投机并行执行,进一步挖掘程序中的内在并行性,有效提高应用程序的可扩展性。 论文主要围绕如何有效利用众核CPU的计算能力,重点从事务内存实现和串行程序投机并行优化两个方面展开研究。基于以上研究,面向Cell异构多核系统,构建了一个OpenMP扩展编程环境TRANSPECT。 针对如何高效实现软件事务内存(Software Transactional Memory, STM)提出了一种STM语义模型。基于该模型,提出了一种基于数据版本目录的软件事务性内存实现算法LDSTM,该算法通过在目录中维护版本信息,可以在读取各个共享对象的时候快速确定事务的内存视图是否处于一致状态,极大地减少了冲突检测和验证的开销。对比测试表明,LDSTM比目前极具影响的RSTM快1.53倍以上。 结合现有高级语言的内存模型,提出了基于因果一致性的事务内存实现算法CCSTM,有效地解决了事务和非事务代码之间的“私有化”数据竞争问题,降低了事务之间的冲突概率。针对STMBench7的测试表明,对于高度竞争事务,在4CPU情况下,提交失败率由89.4%降低81.3%。 基于事务内存思想,提出了一种线程级投机并行算法LLSM (Loop level Speculative Multithreading)。和对具有广泛影响的循环级投机算法LRPD(Loop Reduction Privatizing Doall)算法比较,LLSM能够处理指针访问等情况;避免了LRPD的伪冲突问题;能够自行消解投机线程间W-W和R-W冲突,仅仅W-R冲突会导致LLSM投机失败,极大地提高了投机并行的成功率。而且即使投机失败,LLSM仅仅需要发生冲突的投机线程重新执行,不需要串行执行整个循环。对Spec测试集中183.equake和177.mesa的核心测试表明,基于LLSM算法投机并行,2线程加速比达1.57以上。 针对LLSM中W-R冲突导致投机失败的问题,提出了一种对可能产生冲突的变量进行线程间数据传输和同步的点点同步算法IsSignalSynPos,通过编译器自动在存在数据依赖的源线程和目的线程之间插入signal和wait函数,创建点-点通讯路径跨线程传输数据,进一步减少了投机失败发生的概率,挖掘了循环中的部分并行性。 基于LLSM和LDSTM隔离性实现机制,面向Cell系统,提出了一种OpenMP语言的扩展TRANSPECT,在更高抽象层次上挖掘投机并行程序中的数据局部性,在本地存储访存延迟较大的Cell系统上取得了较好的结果,为充分利用多核处理器的性能优势做出了有益的探索。


知网文化
中国知网广告投放
 快捷付款方式  订购知网充值卡  订购热线  帮助中心
  • 400-819-9993
  • 010-62982499
  • 010-62783978