通过秩收敛的并行动态编程的制作方法

文档序号:9925290阅读:381来源:国知局
通过秩收敛的并行动态编程的制作方法
【专利说明】通过秩收敛的并行动态编程
[0001] 戦
[0002] 动态编程算法被用于解决真实世界应用中的各种问题。例如,动态编程算法可被 用在文本串匹配、基因组学、基因定序、图像处理、信号处理、语音识别、经济学和金融中。动 态编程问题可包括多个子问题并且该动态编程问题的最优解可从由针对各个子问题的最 优解构造而成。传统地,对动态编程问题的并行处理受到子问题之间依赖性的限制。例如, 如果后续子问题依赖于前一子问题中计算出的解,则设备不能并行地处理该两个子问题。 相反,计算后续子问题的解被延迟,直到对前一子问题的解被计算出并被传递到后续子问 题。
[0003] 懸
[0004] 本文中描述的各技术和/或系统通过W下来实现跨各阶段和/或各群集的对动态 编程问题的并行处理:打破各阶段和/或各群集之间的依赖性。例如,各技术和/或系统可标 识动态编程问题的子问题之间的依赖性并将子问题分组到各阶段中。各技术和/或系统还 可确定要被并行处理的阶段分组(例如,一阶段分组也可被称为群集)。由此,各技术和/或 系统生成要使用的一个或多个解而非实际解,使得动态编程问题可跨各阶段和/或各群集 被并行地处理。
[00化]附图简述
[0006] 参考附图来描述【具体实施方式】。在附图中,附图标记最左边的数字标识该附图标 记首次出现的附图。在不同附图中使用相同的附图标记指示相似或相同的项。
[0007] 图1示出根据各实施例的具有包括多个阶段的子问题的动态编程问题的示例图。 [000引图2示出根据各实施例的具有可被并行处理的阶段分组的动态编程问题的示例 图。
[0009] 图3示出根据各实施例的示例动态编程算法的各阶段。
[0010] 图4示出根据各实施例的描述被配置成实现跨各阶段的并行动态编程的设备的组 件的示例环境。
[0011] 图5示出根据各实施例的跨各阶段和/或各群集来并行处理动态编程问题的示例 过程。
[0012] 图6示出根据各实施例的将最长公共子序列化CS)问题的子问题分组成各阶段中 的示例图。
[001引 详细描述
[0014]本文中描述的各技术和/或系统实现对动态编程问题跨各阶段的并行处理。响应 于接收或标识供处理(例如,要被求解)的动态编程问题,各技术和/或系统确定该动态编程 问题的多个阶段。每个阶段包括一个或多个子问题并且每个阶段由至少一个依赖性分隔, 如本文中进一步讨论的。例如,对后续阶段的处理可依赖于在前一阶段的处理期间计算或 运算出的至少一个解(例如,值)。因此,如本文中讨论的,两个阶段之间的依赖性可W是从 一个阶段(例如,前一阶段)提供到下一阶段(例如,后续阶段)的实际计算的解,使得下一阶 段中的子问题可使用实际计算的解来计算或运算另一解。例如,来自前一阶段的实际计算 的解可W是一值,后续阶段中的子问题在一等式中使用该值来计算另一解。
[0015] 本文中讨论的各技术和/或系统能够通过生成解(例如,任意生成的解,诸如随机 生成的值)来实现跨各阶段的并行动态编程并通过使用所生成的解而非在前一阶段中产生 的实际计算的解来发起对一阶段(例如,后续阶段)的并行处理。换言之,各技术和/或系统 使用所生成的解来替代仍待计算的实际解,使得对后续阶段的处理可被发起,而不必等待 前一阶段计算实际计算的解并且不必等待前一阶段将实际计算的解传递到后续阶段。因 此,各技术和/或系统能够消除或打破阶段之间的依赖性并通过使用所生成的解而非实际 计算的解来实现跨各阶段的对动态编程问题的并行处理。
[0016] 在各个实施例中,使用所生成的解而非实际计算的解来处理后续阶段最初可能不 会产生正确的或确切的后续阶段解(例如,针对后续阶段中的子问题)。然而,通过秩(rank) 收敛,在后续阶段中使用所生成的解计算出的解最终是正确且确切的,并且因此类似于本 来在来自前一阶段的实际计算的解而非所生成的解被使用的情况下(例如,在依赖性没有 被打破的情况下)被计算的解。
[0017] 用于动态编程的传统方式能够并行处理个别阶段(例如,单个阶段)内的子问题, 因为个别阶段内的子问题的计算不依赖于相同个别阶段内的另一子问题的计算或输出解。 例如,传统方法可采用多核处理器来并行处理个别阶段内的子问题,因为多核处理器包括 两个或更多个独立的能够同时读取和执行指令的中央处理单元(例如,核)(例如,一个核执 行该阶段内的第一子问题,而另一核执行该阶段内的第二子问题,W此类推)。然而,后续阶 段不能与当前或前一阶段并行地处理,因为后续阶段依赖于当前或前一阶段的实际计算的 解。因此,传统方式限于单个阶段内的并行处理(例如,同时计算针对被一起分组在单个阶 段中的子问题的解)。
[0018] 本文中描述的各技术和/或系统实现跨多个阶段的并行处理,其中至少一个后续 阶段依赖于来自前一阶段的一个或多个实际计算的解。实现跨多个阶段的并行处理减少设 备用来处理动态编程问题的时间量,从而提升设备性能和效率。在各个实施例中,除了在单 个阶段内的并行处理之外,还可实现跨多个阶段的并行处理。
[0019] 本文中描述的各技术和/或系统可改进动态编程算法的效率,该动态编程算法为 诸如例如维特比算法、最长公共子序列化CS)算法、Need Ieman-Wunsch算法和Smith-Waterman算法。维特比算法是W下动态编程算法:寻找导致观察到的事件的序列的最有可 能的路径(例如,被称为维特比路径),尤其在马尔可夫信息源和隐马尔可夫模型的上下文 中。维特比算法可被用作用于在码分多址(CDMA)和全球移动通信系统(GSM)、拨号调制解调 器、卫星通信和无线局域网(LAN)中使用的卷积码的解码算法。维特比算法还可被用在语音 识别、语音合成、关键词识别、计算语言学和生物信息学中。LCS算法寻找两个输入串之间的 最长公共子序列(例如,在两个文本主体之间进行区分)。化edleman-Wunsch算法在生物信 息学中被用于对准蛋白质或核巧酸序列。Smith-Waterman算法执行局部序列对准,例如用 于确定两个串或核巧酸或蛋白质序列之间的相似区域。运些示例动态编程问题和/或算法 W及其它动态编程问题和/或算法可与本文中描述的各技术和/或系统相关联地使用。
[0020] 图1示出具有多个阶段104(1). . .104(N)的动态编程问题102的示例图100。动态编 程问题1-2可被划分或分割成多个阶段104(1)-,104(N)。虽然出于讨论的目的图1中示出了 =个阶段,但是N表示大于或等于2的数。如W上讨论的,至少由于对个体阶段内的一个子问 题的执行(例如,处理)不依赖于相同个体阶段内的另一子问题的解或计算出的输出(例如, 值),因此每个阶段104(1)…l〇4(N)包括可被并行计算的一个或多个子问题。换言之,阶段 可被定义为可相互独立地执行的一个或多个子问题。由此,阶段104(1)包括子问题106 (1)-,106(0)(例如,其中O表示大于或等于1的数)。阶段104(2)包括子问题108(1)…l〇6(Q) (例如,其中Q表示大于或等于1的数)。阶段l〇4(N)包括子问题110(1)-,110(T)(例如,其中T 表示大于或等于1的数)。在各个实施例中,各个阶段104(1)…104(N)内的子问题的数量可 W是不同的(例如,由〇、Q和T中的两个或更多个表示的数是不同的数)。在其它实施例中,各 个阶段104(1)…l〇4(N)内的子问题的数量可W是相同的(例如,由0、Q和T中的两个或更多 个表示的数是相同的数)。
[0021] 如显示的,两个相邻阶段被至少一个依赖解(例如,本文中也称为依赖性)分隔。分 隔两个阶段的依赖解可W是个体子问题的解或者依赖解可基于分别来自两个或更多个子 问题的两个或更多个解。例如,阶段104(1)可W是阶段序列中的第一个阶段并且可不依赖 于前一阶段中计算出的解,因为阶段104(1)是该序列中的第一个阶段。对阶段104(1)中的 子问题106(1)…106(0)的处理和/或执行可产生依赖解112(例如,一个或多个经计算的 值),该依赖解112被传递到阶段104(2)(例如,该序列中的下一阶段)使得阶段104(2)中的 子问题108(1)…IOS(Q)中的一个或多个可被执行。类似地,对阶段104(2)中的子问题108 (1)…IOS(Q)的处理和/或执行产生依赖解114,该依赖解114被传递到阶段104(N)(例如,该 序列中的下一阶段)使得阶段l〇4(N)中的子问题110(1)…IlO(T)中的一个或多个可被执 行。如W上讨论的,依赖解112的结果是动态编程问题102的阶段104(2)传统上不能被处理, 直到阶段104(1)被完全处理并且依赖解112被计算出并被提供到阶段104(2)。此外,依赖解 114的结果是动态编程问题102的阶段104(N)传统上不能被处理,直到阶段104(2)被完全处 理并且依赖解114被计算并被提供到阶段104(N)。
[0022] 本文中描述的技术和/或系统消除并打破依赖性,使得各阶段可被并行地处理。例 如,各技术和/或系统生成被用于处理后续阶段的解(例如,任意解),而非来自前一阶段的 实际计算的解(例如,依赖解112和/或依赖解114)。如图1中显示的,所生成的解118被生成 并取代依赖解112来使用,使得阶段104(2)的子问题108(1)…IOS(Q)可与阶段104(1)的子 问题106(1)…106(0)被并行地处理。此外,生成的解120被生成并可取代依赖解114被使用, 使得阶段l〇4(N)的子问题110(1)…IlO(T)可与阶段104(2)的子问题108(1)…IOS(Q)被并 行地处理。因此,通过生成并使用生成的解,本文中描述的各技术和/或系统打破依赖性,使 得后续阶段不必等待来自前一阶段的实际计算的解被提供,并且由此可实现跨各阶段的并 行处理。
[0023] 图2示出动态编程问题的示例图200,其中多个阶段202(1)…202(9)被划分或分割 到阶段分组204(1)-,204(A)(例如,群集)中W供分别由一个或多个处理单元206(1)…206 (B)并行处理。在各实施例中,群集包括多于一个阶段(例如,至少两个阶段)。在各实施例 中,实现对动态编程问题的并行处理的设备可将各阶段分组到多个群集中,使得秩收敛的 特性可实现正确或几乎正确的解(例如,使用所生成的解计算出的解变得与本来使用实际 解生成的解相似)。在一些实现中,群集的数量对应于在设备上执行的处理单元的数量(例 如,图2中的A和B是相同的数)。
[0024] 在第一示例中,设备可具有多个多核处理器(例如,如图2所示为S个),并且由此, 每个处理单元206 (I)…206 (B)可对应于示例设备的=个多核处理器中的一个。如W上讨论 的,个体多核处理器可并行处理单个阶段内的子问题,并且因此,组合的多个多核处理器 (例如,在运第一示例中的处理单元206(1)-,206(B))可跨各阶段并行处理动态编程问题。 在第二示例中,处理单元206(1)…206(B)中的每一个可W是单个多核处理器内的个体核, 并由此,该单个多核处理器可跨各阶段并行处理动态编程问题。然而,在运个第二示例中, 对单个阶段内的子问题的并行处理可能是不可能的,因为用于在该阶段内实现并行处理的 多个核可能是不可用的(例如,而非单个核处理一群集)。
[0025] 图2示出跨=个处理单元206(1)…206(B)划分的动态编程问题的示例顺序实现。 处理单元206(1)使用初始解SO(例如,已知值或实际解)来发起对阶段202(1)的处理并且计 算阶段202(1)、阶段202(2)和阶段202(3)中的子问题。在各实施例中,处理单元206(1)可不 计算阶段202(2)中的子问题,直到阶段202(1)中的子问题被计算并且实际计算的解(例如, 依赖值)被从阶段202(1)传递到阶段202(2)。类似地,处理单元206(1)可不计算阶段202(3) 中的子问题,直到阶段202(2)中的子问题被计算并且实际计算的解被从阶段202(2)传递到
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1