论文部分内容阅读
异构计算机结合了GPU的强大并行能力和CPU的逻辑处理能力,在商业和科研领域被广泛使用。但要充分发挥异构计算机的性能,需要对硬件资源进行合理的调配。COStream作为一种数据流编程语言具有通信和计算分离的特点,在传统多核CPU上有良好的并行效果,但面对异构系统的复杂环境,其也面临着设备间负载不均衡、通信开销过大等问题。为了充分发挥异构系统的优势,以COStream数据流编程语言为研究对象,设计了面向GPU/CPU异构系统的数据流任务划分算法和优化方案,包括异构负载均衡划分算法、设备间通信节点优化和NDrange(N-Dimension range)优化。异构负载均衡划分算法分为设备间数据流任务初步划分、负载预估与负载调整、设备内任务划分三个步骤,结合数据流图的并行特性对数据流任务进行层层划分。该算法具有两大优势:充分挖掘数据流程序的并行特性,将计算节点按照其特性划分到最适合的计算设备,发挥各计算设备优势;预估并调整了设备间的负载情况,在考虑通信开销的同时使各设备之间负载尽量均衡,提高软件流水线性能。针对异构设备间通信开销大这一问题,设备间通信节点优化将通信任务从GPU计算节点独立,以空间换取时间的方式利用软件流水线将通信开销隐藏于计算之中。NDrange优化算法针对不同规模的计算节点(actor)对NDrange分配进行自动优化,使转化后的kernel能充分利用GPU硬件资源,提高程序的执行效率。实验采用搭载多核CPU和NVIDIA GPU的异构计算机作为实验平台,选取了6个多媒体领域的典型算法,以不同的数据规模从多方面测试异构负载均衡划分算法和优化方案的有效性。实验结果表明,异构负载均衡划分算法、设备间通信节点优化和NDrange优化均取得了良好的效果。