论文部分内容阅读
随着能耗问题的日趋严重,多核/众核异构体系结构逐渐盛行。自2013年Intel正式商业化MIC(Many Integrated Core)协处理器以来,CPU/MIC异构体系结构受到了广泛的重视。虽然如此,CPU/MIC异构体系结构的潜在处理能力仍未得到充分发挥。研制运行时协同调度系统,依据应用运行时的程序特征和CPU、MIC的硬件执行特性,在CPU和MIC间进行合理的任务调度,在不增加开发难度的情况下提高了CPU/MIC异构体系结构的整体性能,具有重要的实际和研究意义。 实现针对CPU/MIC异构体系结构的运行时协同调度系统的关键在于解决不同指令集下的任务生成问题,通过分析任务的程序特征,将其和硬件执行特性进行有效匹配,然后根据系统负载动态调整任务分发策略以在一定程度上保证负载均衡。首先,在对应用的Pthread代码部分进行标记后,系统需要根据这些信息来生成并管理CPU和MIC两种版本的可调度任务。其次,系统需要根据CPU和MIC的主要硬件特性差异,不断地收集和更新应用的计算密集程度和向量化程度等信息,并据此将任务调度到CPU或者MIC端运行,保证任务特征和CPU、MIC硬件特性之间的合理映射。同时,可以将CPU和MIC之间的负载差异作为进行协同调度的辅助依据,保证异构系统负载的相对均衡。最后,由于CPU和MIC间通过PCIE总线进行交互,数据传输可能成为系统性能的瓶颈。因此,系统需要充分考虑CPU和MIC协同工作时的数据依赖情况,并制定相应的策略以减少它们之间的数据传输量。针对CPU/MIC异构体系结构的运行时协同调度系统HostoSink很好地解决了这些问题。 测试结果表明,对于包含大量不同类型任务的应用,HostoSink能够正确完成运行时协同调度功能。相对于在高度并行的应用上通过人工优化只能产生2.5倍的加速比,该系统对于包含大量MIC适用型任务的应用能够产生3.5倍的加速比,对于包含大量CPU适用型任务的应用也能产生1.5倍的加速比。对于数据传输密集型的应用,该系统也能够大幅度地减少CPU和MIC之间的数据传输。