[发明专利]并行编程和执行系统与技术有效
申请号: | 201080014539.2 | 申请日: | 2010-03-26 |
公开(公告)号: | CN102378961A | 公开(公告)日: | 2012-03-14 |
发明(设计)人: | 赵伟东;Y.R.塞尔马德维;常城;E.S.克里斯托弗森 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/46 |
代理公司: | 中国专利代理(香港)有限公司 72001 | 代理人: | 刘红;刘鹏 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并行 编程 执行 系统 技术 | ||
背景技术
以单个处理器为特征的传统的计算环境一般以串行方式执行与特定的计算机实现处理相关联的数据处理操作,尽管一些传统的计算环境可能支持时分复用,其中单个处理器在不同的操作之间足够频繁地切换,以致用户感知这些操作在同时被执行。
计算环境已趋向于具有多个处理单元的多处理系统。许多类型的系统可以被视为多处理系统,并且多处理系统的示例包括但不限于:具有多个中央处理单元(CPU)和/或图形处理单元(GPU)的系统;具有多个核心的单或多CPU/GPU系统;以及具有附加的硬件支持来高效执行多个操作的单或多CPC/GPU系统。
实现特定的计算机实现处理的全部或部分的计算机程序也可以被设计成多线程的,即,具有多个执行的线程。执行的线程是计算机程序的一部分,其能够与计算机程序的另一部分同时被执行。
朝向多处理系统的趋势和多线程计算机程序的出现、并且尤其是其组合具有增加许多计算机实现处理的性能和效率的潜力。为了实现这样的性能和效率提高,特别地设计多线程的计算机程序是所希望的。
发明内容
在这里描述并行编程创作和执行系统,其提供模型和技术来解决在单或多处理单元计算环境中设计执行特定的计算机实现处理的至少一部分的多线程计算机程序的各种挑战。在这里使用术语处理单元来指示任何的CPU、GPU、核心、硬件线程或其它的已知的或以后开发的处理构造。在这里使用术语线程来指示被配置为支持多个操作的同时执行的任何的软件或处理单元或其安排。
根据利用在这里描述的系统实现的一种示例技术的各方面,通过将复杂处理的许多数据处理操作与这些数据处理操作之间的数据依赖性相关联来表示该复杂处理。基于处理表示,创建可执行的任务图。该任务图包括许多任务对象和许多数据对象。每个任务对象代表(经由硬件、软件、固件或其组合)执行特定的数据处理操作的特定的相应计算机实现功能。每个数据对象代表存储器中被分配用于基于至少一个数据依赖性存储数据的部分。
一般,特定的任务对象具有一个或多个数据对象输入和一个或多个数据对象输出。同样地,特定的数据对象具有从其可接收可用数据的至少一个“拥有(owning)”任务对象(并且实际上可以限于只有一个拥有任务),并具有可提供可用数据给其的至少一个“依赖(dependent)”任务对象,除了当该数据对象是最终的输出数据项的时候之外,通常可以对其采用不同的接口机制。特定的数据对象也具有被设置的若干状态。
在任务图的执行期间,执行特定的数据处理操作的特定的计算机实现功能在与其相应的任务对象相关联的所有数据对象输入具有指示数据是可使用的状态时变为准备好执行。在与每个任务对象相关联的数据对象输入和数据对象输出的状态被更新时,任务图的执行继续,从而触发执行相应的数据处理操作的计算机实现方法的执行,直到已获得该处理的期望的输出数据为止。
根据利用在这里描述的系统实现的另一种示例技术的各方面,计算机实现功能/数据处理操作被调度,以便根据某些调度规则执行。一般而言,计算机实现功能/数据处理操作被调度,以便通过将与其相应的任务对象相关联的工作项放入一个或多个队列中来执行。这些工作项具有基于任务对象的优先级(在一个示例中,在任务对象的创建时间,确定优先级)。基于优先级,与其它线程协力、独立且同时操作的可用线程提取工作项,并引起执行该数据处理操作的计算机实现功能的执行。
在一个示例调度情况中,一组线程被绑定到处理单元(例如,一组核心或特定GPU)并且本地共享主队列和高速缓存/存储器层级中相同的高速缓存。当特定的工作项被放置在特定的主队列上时,该工作项的链接拷贝也被放置在与其他组/处理单元相关联的其它队列(被称为“次”队列)中的每一个上,其中每个工作项具有不同的相对优先级(例如,相对于相关联的任务对象的原始优先级)。通常,主队列中的工作项具有比一个或多个次队列中的相同工作项更高的优先级,这允许次队列中的工作项在主队列中的线程组太落后的情况下用作“救助(bailout)”。一旦工作项被执行,它就从主队列和次队列中被移除。以这种方式,在处理单元级内和处理单元级间两者上,调度是灵活的并且容易配置用于期望的负载平衡和/或线程关联度(affinity)要求。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201080014539.2/2.html,转载请声明来源钻瓜专利网。