用于概率计算机的超标量控制的制作方法

文档序号:6360213阅读:154来源:国知局
专利名称:用于概率计算机的超标量控制的制作方法
技术领域
本公开涉及数据处理系统的架构,更特别地,涉及数据处理系统中计算的调度。联邦赞助研究声明
本发明的完成得到了国防高级研究计划局(DARPA)给予的FA8750-07-C-0231下的政府支持。政府具有本发明的某些权利。
背景技术
在数字处理器的架构中,存在至少两种用于实现指令级并行的方案。一种方案称为超长指令字(VLIW),将任务(onus)置于编译器上以确定程序中的哪些指令可以并行执行。这在编译时确定。在第二种方案中,专用超标量控制器置于芯片本身上。该超标量控制器在运行时确定哪些指令可以并行执行。尽管VLIW方案仍用于某些特定应用中,但是对于通用处理诸如因特尔或AMD的处理器而言,超标量方案已经变得更流行。如今,大量计算机时间主要用于实施贝叶斯公式以计算概率。例如,有在线的内容分发服务,其执行应用以用于预测消费者可能高度评级的内容,已知消费者先前已经对内容进行了评级。类似地,存在零售服务,其执行应用以用于预测消费者可能想要购买什么产品,已知消费者以前已经购买过该产品。于是,有搜索引擎尝试基于检索历史来预测什么链接可能相关。这些应用实质上已知在先事件的发生,计算条件概率,即事件的概率。其他概率应用包括用于猜测如何将网页从一种语言翻译到另一种语言的方法。在通信领域,当例如蜂窝电话中的嵌入和移动应用基于所接收的带噪声的信号预测最初发射了哪些比特时,发生概率计算。在机器人技术中,存在用于预测穿过困难地形的最可能最佳路径的应用。常规编程技术和语言致力于确定性问题的解。虽然这种语言和技术可以成功地解决概率问题,但是这样做会是笨拙且低效的。意识到这一点,已经出现了概率编程语言的学术复兴。概率编程语言的早期示例是IBAL,其由Avi Pfeffer在1997年创建。已知语言包括 Alchemy、Bach、Blaise、Church、CILog2、CP-Logic> Csoft、DBLOG> Dyna、Factorie、Infer. NET、PyBLOG, IBAL、PMTK, PRISM、ProbLog、ProBT, R 和 S+。近来,研究人员已经开始发明电子电路来更高效地运行概率程序。操作中电子电路已经能够高效执行的是马尔可夫链式蒙特卡罗和置信传播。

发明内容
在概率计算的过程中,时常有可以独立于其他操作执行的操作。通过同时,即并行地执行这些操作,可以改善性能。出现的困难在于精确识别哪些操作可以并行执行,并且进行安排以使计算资源可用于执行那些操作。广义上说,这是调度器的功能。为了使调度器适当地执行其功能,应能够确定哪些操作可以并行执行,以及什么硬件资源可用于执行那些计算。一旦知晓了这两者,就可以指示适当的硬件执行适当的操作。美国临时申请No. 61/24,740公开了通过利用DMPL (分布式数学编程语言)产生因子图形的模型并且对图形中的节点到芯片上的硬件元件的映射强加某些约束而确定的调度。这将预定调度束缚到特定硬件配置。如果硬件配置被改变,那么调度将不再适用。前述应用假定了一组特定操作将在具有固定硬件配置的系统上执行。在一些情况下,调度可能改变到同时操作的不同序列。例如,一序列同时操作可以 储存在定序器所适用的数据表中,类似于VLIW处理器使用一系列指令的情况,其中每个指令编码将由多个功能单元同时执行的多个操纵。在这种情况下,调度器将在在特定硬件配置上并行执行指令的时间之前产生调度。然而,调度仍将束缚到特定硬件配置。另一方案基于如下认识,即在概率处理系统中,可以动态地调度操作的并行执行。根据本发明的调度器因此可以确定什么硬件可用于执行各种处理操作以及在运行时产生合适的调度用于并行地实施操作。例如,调度器可以被识别将要执行的操作序列的数据表驱动,在该情况下调度器控制利用可用硬件同时执行操作。在一方面,本发明呈现为一种在概率处理系统中并行执行操作的方法,所述方法包括提供用于执行所述操作的概率处理器;以及提供调度器用于从所述操作中识别能并行执行的那些操作。提供所述调度器包括编译以概率编程语言编写的代码,所述代码包括建模指令和用于调度的指令。该方法的实践包括如下方法其中提供所述调度器包括提供在所述操作中赋予顺序的调度器;其中提供所述调度器包括提供在多种调度方法中的各种方法之间进行选择的调度器;其中提供所述调度器包括提供从一组调度方法中随机选择调度方法的调度器;其中提供所述调度器包括提供随机选择因子图形中的边并且随机选择与所述边相关联的方法的调度器;以及其中提供所述调度器包括提供随机选择因子图形中的节点并且更新入射在所述节点上的边上的消息的调度器。另一方面,本发明呈现为一种制造物品,其包括计算机可读介质,该介质具有编码于其上的软件,该软件用于执行前述方法的任意组合。在又一方面,本发明呈现为一种数据处理系统,其配置为执行软件以用于实施前述方法的任意组合。本发明的这些和其他特征将从下面的详细描述和附图变得显然,如图中


图I示出链式图;图2示出链式图的例示;图3示出格栅图形;以及图4示出格栅图形的例示,具有用于使消息能控制交织互联的通路。
具体实施例方式实施概率计算的一种方式是实现因子图形模型,其中约束节点和函数节点交换消息。通常,因子图形在某一状态下开始操作,然后在多次迭代的过程中弛豫到代表解(solution)的第二状态。在努力使因子图形更快弛豫时,有用的是调度消息传输。调度消息传输的一种方式,其也称为“残余置信传播”,是检查特定消息的最后两次发送。如果消息在那两次发送之间显著地改变,那么该消息在下一个消息传递迭代时优先更新。未改变的消息一般不会频繁传输,因为它们的优先级低。在该方法中,通过仅优先传输已经显著改变的那些消息,节省了时间。另一种调度方法,其可视为残余置信传播的变体,是“残余溅散(residualsplash)”法。在残余溅散法中,给定节点的“溅散”是形成子图形的一组节点。该子图形定义以该节点为其根的树。残余溅散调度法以溅散的残余对溅散进行分类,并且更新具有最 大残余的那些溅散的节点。在它们的执行期间,概率程序通常消耗大量计算资源。概率程序频繁执行在标准桌面计算机或者标准X86处理器集群上。这些标准平台旨在执行确定性程序。结果,它们的计算资源常不符合要求。这往往限制了能在已有硬件平台上运行的概率程序的大小和复杂度。上述标准处理器架构的替选是概率处理器。概率处理器将使用专用硬件高效地运行概率程序。尽管概率处理器可能不一定是完全图灵型,且尽管这种处理器可能未被优化以用于执行诸如Microsoft Word的应用的计算,但是对于执行概率程序而言这种处理器将会比常规处理器快三个数量级那么多。这种概率处理器与调度器组合地运行。该调度器与概率处理器的关系类似于超标量控制器与常规处理器之间的关系。二者都旨在识别可以并行执行的操作,致力于更高效地使用可用资源。调度器的一个功能是对图形模型或生成模型中的计算赋予顺序。调度器的另一功能是决定哪些消息应被处理,哪些消息应被丢弃。当概率程序定义巨大或者甚至无限大概率图形模型并且概率处理器仅有有限的能力用于执行该图形所需的概率消息传递或者变量采样计算时,这是尤其重要的。在一实施例中,调度器是预选定的调度方法的硬件实现。例如,一种这样的调度器是上述残余溅散法的硬件实现。由于不同的调度对于不同的概率图形模型而言有意义,所以调度器理想地能够高效地运行多种调度方法。例如,尽管残余溅散方法是一种用于调度消息传输的方法,但是它不是在所有环境下都是理想的。因此,在一实施例中,调度器是一种更通用的计算机器,其并不专注于调度方法的特定选择。为了实现选择性选取不同调度方法的调度器,对于概率编程语言而言有用的是允许利用该语言定义调度和推理模型二者。在一种实现中,编程者将调度方法写为概率程序本身的一部分,或者包括提供调度方法的DMPL (“分布式数学编程语言”)库。DMPL更详细地描述于 2010 年 I 月 13 日提交的题为“ Implementation of Factor GraphCircuitryIA美国临时申请61/294,740中。
概率程序内包括调度的优点有很多。例如,当调度包括在概率程序中时,不需要将调度方法的特定选择硬传送到概率处理器中。这使得调度方法能够被更佳方法替代,如果创造了一种方法用于特定种类的图形的话。概率程序内包括调度的另一优点在于编程者对调度具有更多控制。这允许编程者提高概率程序运行时的收敛速度。又一优点是编程者根本不需要知晓调度,而可以简单地从库中调用调度器方法。这使得写概率程序更快且更容易。最后,将调度方法包含到概率编程中的能力本身增强了开发者团体内的协作,因为调度方法于是将如概率程序那样容易在开发者之间共享。调度方法从DMPL “编译”成用于概率处理器的调度器。一旦被编译,调度器就发送控制消息,控制消息导致概率概率处理器上正在执行的图形模型中的消息计算的排序。一实施例对于调度链式图形而言是有用的。典型的链式图形包括与约束节点交替的变量节点的线性链,如图I所示。所示链式图形中的变量节点实现为软等于门(soft-equals gate)。某些变量节点连接到存储器元件。在这种情况下,该节点的选择触 发到该存储器元件的存储器访问。调度器选择消息用于计算。如果需要,必要的硬件被例示,如图2所示。对于链式图形,调度器是环形计数器,其通过图形中的一列节点来建立索引。该列将图形中的节点从左到右排列。当节点被选择用于计算时,其入站消息被从存储器抓取并输入到电路元件中。然后电路元件在计算用于该节点的出站消息时使用这些入站消息。在另一实施例中,图形中的每个节点被预映射到硬件中的特定计算元件。结果,当该节点被选择用于更新时,调度器知晓哪个硬件元件应计算该更新。该方法更详细地描述于 2010 年 I 月 13 日提交的题为 “Implementation of Factor Graph Circuitry” 的美国申请No. 61/294,740中,其内容通过引用合并于此。在该实施例中,校验器在编译时确认所建议的调度将不会导致单个硬件元件同时用于两个不同的计算。在另一实施例中,图形中的节点在运行时映射到电路元件。这样做的一种方式是对于调度器保持可用于计算的可用硬件元件的存储器堆栈(stack)。当硬件元件在使用中时,其索引离开堆栈。当它变得可用于计算时,其索引被推回到堆栈上。只要在调度器需要计算元件来计算图形节点时,它就分配堆栈上面的任何硬件元件来执行该计算。在调度器的又一实施例中,比特掩码包括分配到每个计算元件的比特。比特的状态指示该计算元件是空闲还是忙碌。调度器选择硬件计算元件,不论它是否空闲。冲突校验器然后检查掩码并确定所选择的计算元件是否空闲。如果计算元件忙碌,那么冲突校验器生成错误,调度器再次尝试另一计算元件。在一些情况下,待实现的图形中的节点定义格栅,如图3所示。这样的图形包括用“=”指示的变量节点和用“ + ”指示的约束节点,以及连接变量节点和约束节点的边
(edge)ο调度器的另一实施例提供用于调度具有固定结构的复杂环状图形的调度,诸如用于低密度部分校验(LDPC)纠错解码的调度。这样的调度器描述于2009年3月2日提交的美国临时申请No. 61/156,792和2010年I月10日提交的美国临时申请No. 61/293,999中,二者均题为“Belief Propagation Processor”,其内容通过引用合并于此。将这样的调度器编译到硬件中以及检查所得硬件的冲突描述于美国申请No. 61/294,740中。在一实施例中,调度方法本身是随机方法且因此通过概率程序适当地表达。一种这样的调度方法包括随机选择模型中的边并且随机选择该边上的方向。接着是更新沿随机选择的方向指向的随机选择的边上的消息。结果,每个消息与任意其他消息一样可能被选中。本质上,这导致模型中的全部消息上的均匀概率分布。另一种随机调度方法是随机选择因子图形中的约束节点,然后更新入射在该约束节点上的所有边上的消息的方法。类似地,另一随机调度方法从因子图形随机选择变量节点,诸如等于门,然后更新入射在该变量节点上的所有边。又一随机调度方法包括随机选择变量节点,并且通过Gibbs采样来更新对应的变量。随机调度方法的另一示例是随机残余置信传播法。在该方法中,残余,其对应于消息和置信的改变,被归一化以形成概率分布。然后,对象,其可以是节点、边或消息,被从该分布随机选中。这确保了平均而言具有最高残余的对象将更频繁地更新。然而,还确保了具有更小残余的对象将偶尔更新。随机调度方法的第二示例是随机残余溅散法。在该方法中,溅散的残余被归一化以形成概率分布。然后,溅散被随机地从该分布随机选中,该溅散中的全部对象被更新。这 确保了平局而言具有最高残余的对象将更频繁地更新。然而,这还确保了具有更小残余的对象将偶尔更新。随机调度方法的第三示例是随机可能性大小置信传播法。在该调度方法中,来自最近迭代的模型中的消息的可能性大小被归一化以形成概率分布。在下一次迭代中,对象(节点、边、消息或溅散)被从该分布随机选中。这确保了平均而言具有最大可能性大小(最大确定度)的对象将被更频繁地更新。这还确保了具有更小可能性大小的对象将偶尔被选中。随机调度方法的第四示例是随机可能性置信传播法。在该调度方法中,来自最近迭代的消息的可能性被归一化一形成概率分布。在下一次迭代中,对象(节点、边、消息或溅散)被从该分布随机选中,并被更小。这确保了平均而言具有最大可能性(最大确定度)的对象将被更频繁地更新。这还确保了具有更小可能性大小的对象将偶尔被选中。在前述方法的每个的变体中,分布可以被采样而没有被归一化。第三和第四示例的变体还包括随机小可能性大小调度法,其中被选中的对象的概率反关联到其可能性或可能性大小。这导致更小确定性的对象被更频繁地调度以用于更新。在一实施例中,概率处理器是可编程阵列随机消息传递门(用于马尔可夫链式蒙特卡罗或Gibbs采样),调度器方法是随机方法,其在程序运行时从预定义或推理的概率分布对调度进行采样。结果,调度方法本身是概率程序。在调度器方法是随机方法的情况下,调度器的在消息上的概率分布定义图形中的任何给定消息将被计算的概率。如果该分布是均匀的,那么调度将完全随机。然而,如果该分布分配更大概率到某些消息,那么调度器将更可能选择那些消息用于计算。在一些情况下,尽管一些同时操作易于识别,但是难以识别可能在一序列操作中的所有同时操作。对于这种情况,有用的是在编译时识别大多数难以发现的同时操作,并且在运行时识别剩余的同时操作。在另一实施例中,调度器是通用图灵机,其运行调度方法并控制消息计算机器。在又一实施例中,调度器包括随机逻辑器,其运行调度方法并控制消息计算机器。随机逻辑器实现为模拟逻辑器、数字软门、通用图灵机或者任意其他类型的计算硬件。已经描述了本发明及其优选实施例,主张为新颖的且通过专利证书保护的本发明定义于所附权利要求及其等价物中。·
权利要求
1.一种在概率处理系统中并行执行操作的方法,所述方法包括 提供用于执行所述操作的概率处理器;以及 提供调度器用于从所述操作中识别能并行执行的那些操作; 其中,提供所述调度器包括编译以概率编程语言编写的代码,所述代码包括建模指令和用于调度的指令。
2.如权利要求I所述的方法,其中,提供所述调度器包括提供在所述操作中赋予顺序的调度器。
3.如权利要求I所述的方法,其中,提供所述调度器包括提供在多种调度方法中的各种方法之间进行选择的调度器。
4.如权利要求I所述的方法,其中,提供所述调度器包括提供从一组调度方法中随机选择调度方法的调度器。
5.如权利要求I所述的方法,其中,提供所述调度器包括提供随机选择因子图形中的边并且随机选择与所述边相关联的方向的调度器。
6.如权利要求I所述的方法,其中,提供所述调度器包括提供随机选择因子图形中的节点并且更新入射在所述节点上的边上的消息的调度器。
7.如权利要求I所述的方法,进一步被权利要求2-6中所述的限制的任意组合所限定。
8.一种计算机可读介质,具有编码于其上的软件,该软件用于执行权利要求1-6中所述的方法中的任意一种。
9.一种数据处理系统,配置为执行软件以用于实施权利要求1-6中所述的方法中的任意一种。
全文摘要
一种在概率处理系统中并行执行操作的方法,包括提供用于执行所述操作的概率处理器;以及提供调度器以用于从所述操作中识别能并行执行的那些操作。提供所述调度器包括编译以概率编程语言编写的代码,所述代码包括建模指令和用于调度的指令。
文档编号G06F9/44GK102893255SQ201180019619
公开日2013年1月23日 申请日期2011年2月22日 优先权日2010年2月22日
发明者B·维格达 申请人:美国亚德诺半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1