论文部分内容阅读
模拟是计算机体系结构研究的重要手段,也是很多其它科学与工程学科日益采用的研究方法。模拟并行化则是主要的加速方法。计算机系统的并行模拟,通常具有细粒度任务并行的特性,以及不规则的微秒级的通信间隔。由于所研究的目标系统规模持续增大,串行模拟器甚至共享内存系统上的并行模拟器都难以满足需求。因此开发分布式系统上的细粒度并行模拟器,并对其进行优化以提高并行效率,对众多有此类需求的应用而言是亟待解决的问题。进一步地,这方面的研究结果可以推广到其它大规模细粒度任务并行程序,也是对并行计算领域编程模型的一个有意义的探索。
离散事件模拟是计算机系统模拟经常采用的方法,其核心技术是同步机制的实现。由于状态集大的缘故,计算机系统模拟一般都采用保守同步算法。这种算法的性能受限于通信系统,在SMP集群上并行很难得到加速。本文分析了保守算法中各种消息的特点,通过将同步与事件分离、双边通信转化为单边通信,有效地简化了同步操作,为低延迟同步提供了可能性。以此为基础,结合一些通信硬件的RDMA特性,本文提出并实现了基于RDMA的快速同步算法:CMB-RDMA算法。实验表明,此算法带来了很大的性能提升。
MPI+Pthreads是SMP集群上任务并行所普遍采用的计算模式。考虑到线程安全支持带来的可移植性问题和性能开销,利用代理模块来完成所有线程的统一的对外通信已成为一种直观的、扩展性良好的实现方式。但是这种做法有不可避免的缓冲带来的延迟,在实现和优化上需要小心处理才有可能获得较好的性能。本文针对通信代理延迟与模拟引擎调度算法紧密结合的特性,对通信代理进行高优先级调度,提高了模拟引擎通信系统的性能,并进一步地提高了整个模拟程序的并行效率。
本文以SMP集群上的计算机系统模拟平台作为算法实现和性能评测的载体。模拟的目标系统具有上千个模型组件,同步粒度在几十微秒量级。实验表明,采用上述优化策略后,即使模拟引擎的消息传递系统以延迟较大的以太网为介质,也可以获得稳定的加速。16进程的并行加速比稳定在7x以上,最好情况下可以得到线性的加速比。