CN105706057B - 一种用于并行地控制多个处理单元的设备、方法、系统 - Google Patents

一种用于并行地控制多个处理单元的设备、方法、系统 Download PDF

Info

Publication number
CN105706057B
CN105706057B CN201480056629.6A CN201480056629A CN105706057B CN 105706057 B CN105706057 B CN 105706057B CN 201480056629 A CN201480056629 A CN 201480056629A CN 105706057 B CN105706057 B CN 105706057B
Authority
CN
China
Prior art keywords
stage
solution
cluster
dynamic programming
dependence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480056629.6A
Other languages
English (en)
Other versions
CN105706057A (zh
Inventor
T·D·米可维茨
M·穆苏瓦蒂
S·马利基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN105706057A publication Critical patent/CN105706057A/zh
Application granted granted Critical
Publication of CN105706057B publication Critical patent/CN105706057B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/22Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Operations Research (AREA)
  • Devices For Executing Special Programs (AREA)
  • Complex Calculations (AREA)

Abstract

本文中描述的技术和/或系统通过以下来实现跨各阶段和/或各群集的动态编程问题的并行处理:打破各阶段和/或各群集之间的依赖性。例如,技术和/或系统可标识动态编程问题的子问题之间的依赖性并将子问题分组到各阶段中。各技术和/或系统还可将各阶段分组到群集中(例如,要并行地处理的至少两个群集)。由此,各技术和/或系统生成要使用的一个或多个解而非实际解,使得动态编程问题可跨各阶段和/或各群集被并行地处理。

Description

一种用于并行地控制多个处理单元的设备、方法、系统
技术领域
本公开涉及跨各阶段和/或各群集的动态编程问题的并行处理。
背景技术
动态编程算法被用于解决真实世界应用中的各种问题。例如,动态编程算法可被用在文本串匹配、基因组学、基因定序、图像处理、信号处理、语音识别、经济学和金融中。动态编程问题可包括多个子问题并且该动态编程问题的最优解可从由针对各个子问题的最优解构造而成。传统地,对动态编程问题的并行处理受到子问题之间依赖性的限制。例如,如果后续子问题依赖于前一子问题中计算出的解,则设备不能并行地处理该两个子问题。相反,计算后续子问题的解被延迟,直到对前一子问题的解被计算出并被传递到后续子问题。
发明内容
本文中描述的各技术和/或系统通过以下来实现跨各阶段和/或各群集的对动态编程问题的并行处理:打破各阶段和/或各群集之间的依赖性。例如,各技术和/或系统可标识动态编程问题的子问题之间的依赖性并将子问题分组到各阶段中。各技术和/或系统还可确定要被并行处理的阶段分组(例如,一阶段分组也可被称为群集)。由此,各技术和/或系统生成要使用的一个或多个解而非实际解,使得动态编程问题可跨各阶段和/或各群集被并行地处理。
附图说明
参考附图来描述具体实施方式。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。在不同附图中使用相同的附图标记指示相似或相同的项。
图1示出根据各实施例的具有包括多个阶段的子问题的动态编程问题的示例图。
图2示出根据各实施例的具有可被并行处理的阶段分组的动态编程问题的示例图。
图3示出根据各实施例的示例动态编程算法的各阶段。
图4示出根据各实施例的描述被配置成实现跨各阶段的并行动态编程的设备的组件的示例环境。
图5示出根据各实施例的跨各阶段和/或各群集来并行处理动态编程问题的示例过程。
图6示出根据各实施例的将最长公共子序列(LCS)问题的子问题分组成各阶段中的示例图。
具体实施方式
本文中描述的各技术和/或系统实现对动态编程问题跨各阶段的并行处理。响应于接收或标识供处理(例如,要被求解)的动态编程问题,各技术和/或系统确定该动态编程问题的多个阶段。每个阶段包括一个或多个子问题并且每个阶段由至少一个依赖性分隔,如本文中进一步讨论的。例如,对后续阶段的处理可依赖于在前一阶段的处理期间计算或运算出的至少一个解(例如,值)。因此,如本文中讨论的,两个阶段之间的依赖性可以是从一个阶段(例如,前一阶段)提供到下一阶段(例如,后续阶段)的实际计算的解,使得下一阶段中的子问题可使用实际计算的解来计算或运算另一解。例如,来自前一阶段的实际计算的解可以是一值,后续阶段中的子问题在一等式中使用该值来计算另一解。
本文中讨论的各技术和/或系统能够通过生成解(例如,任意生成的解,诸如随机生成的值)来实现跨各阶段的并行动态编程并通过使用所生成的解而非在前一阶段中产生的实际计算的解来发起对一阶段(例如,后续阶段)的并行处理。换言之,各技术和/或系统使用所生成的解来替代仍待计算的实际解,使得对后续阶段的处理可被发起,而不必等待前一阶段计算实际计算的解并且不必等待前一阶段将实际计算的解传递到后续阶段。因此,各技术和/或系统能够消除或打破阶段之间的依赖性并通过使用所生成的解而非实际计算的解来实现跨各阶段的对动态编程问题的并行处理。
在各个实施例中,使用所生成的解而非实际计算的解来处理后续阶段最初可能不会产生正确的或确切的后续阶段解(例如,针对后续阶段中的子问题)。然而,通过秩(rank)收敛,在后续阶段中使用所生成的解计算出的解最终是正确且确切的,并且因此类似于本来在来自前一阶段的实际计算的解而非所生成的解被使用的情况下(例如,在依赖性没有被打破的情况下)被计算的解。
用于动态编程的传统方式能够并行处理个别阶段(例如,单个阶段)内的子问题,因为个别阶段内的子问题的计算不依赖于相同个别阶段内的另一子问题的计算或输出解。例如,传统方法可采用多核处理器来并行处理个别阶段内的子问题,因为多核处理器包括两个或更多个独立的能够同时读取和执行指令的中央处理单元(例如,核)(例如,一个核执行该阶段内的第一子问题,而另一核执行该阶段内的第二子问题,以此类推)。然而,后续阶段不能与当前或前一阶段并行地处理,因为后续阶段依赖于当前或前一阶段的实际计算的解。因此,传统方式限于单个阶段内的并行处理(例如,同时计算针对被一起分组在单个阶段中的子问题的解)。
本文中描述的各技术和/或系统实现跨多个阶段的并行处理,其中至少一个后续阶段依赖于来自前一阶段的一个或多个实际计算的解。实现跨多个阶段的并行处理减少设备用来处理动态编程问题的时间量,从而提升设备性能和效率。在各个实施例中,除了在单个阶段内的并行处理之外,还可实现跨多个阶段的并行处理。
本文中描述的各技术和/或系统可改进动态编程算法的效率,该动态编程算法为诸如例如维特比算法、最长公共子序列(LCS)算法、Needleman-Wunsch 算法和Smith-Waterman算法。维特比算法是以下动态编程算法:寻找导致观察到的事件的序列的最有可能的路径(例如,被称为维特比路径),尤其在马尔可夫信息源和隐马尔可夫模型的上下文中。维特比算法可被用作用于在码分多址(CDMA)和全球移动通信系统(GSM)、拨号调制解调器、卫星通信和无线局域网(LAN)中使用的卷积码的解码算法。维特比算法还可被用在语音识别、语音合成、关键词识别、计算语言学和生物信息学中。LCS算法寻找两个输入串之间的最长公共子序列(例如,在两个文本主体之间进行区分)。 Needleman–Wunsch算法在生物信息学中被用于对准蛋白质或核苷酸序列。 Smith-Waterman算法执行局部序列对准,例如用于确定两个串或核苷酸或蛋白质序列之间的相似区域。这些示例动态编程问题和/或算法以及其它动态编程问题和/或算法可与本文中描述的各技术和/或系统相关联地使用。
图1示出具有多个阶段104(1)...104(N)的动态编程问题102的示例图100。动态编程问题1-2可被划分或分割成多个阶段104(1)…104(N)。虽然出于讨论的目的图1中示出了三个阶段,但是N表示大于或等于2的数。如以上讨论的,至少由于对个体阶段内的一个子问题的执行(例如,处理)不依赖于相同个体阶段内的另一子问题的解或计算出的输出(例如,值),因此每个阶段 104(1)…104(N)包括可被并行计算的一个或多个子问题。换言之,阶段可被定义为可相互独立地执行的一个或多个子问题。由此,阶段104(1)包括子问题 106(1)…106(O)(例如,其中O表示大于或等于1的数)。阶段104(2)包括子问题108(1)…106(Q)(例如,其中Q表示大于或等于1的数)。阶段104(N) 包括子问题110(1)…110(T)(例如,其中T表示大于或等于1的数)。在各个实施例中,各个阶段104(1)…104(N)内的子问题的数量可以是不同的(例如,由O、Q和T中的两个或更多个表示的数是不同的数)。在其它实施例中,各个阶段104(1)…104(N)内的子问题的数量可以是相同的(例如,由O、Q和T 中的两个或更多个表示的数是相同的数)。
如显示的,两个相邻阶段被至少一个依赖解(例如,本文中也称为依赖性) 分隔。分隔两个阶段的依赖解可以是个体子问题的解或者依赖解可基于分别来自两个或更多个子问题的两个或更多个解。例如,阶段104(1)可以是阶段序列中的第一个阶段并且可不依赖于前一阶段中计算出的解,因为阶段104(1)是该序列中的第一个阶段。对阶段104(1)中的子问题106(1)…106(O)的处理和/或执行可产生依赖解112(例如,一个或多个经计算的值),该依赖解112被传递到阶段104(2)(例如,该序列中的下一阶段)使得阶段104(2)中的子问题 108(1)…108(Q)中的一个或多个可被执行。类似地,对阶段104(2)中的子问题 108(1)…108(Q)的处理和/或执行产生依赖解114,该依赖解114被传递到阶段 104(N)(例如,该序列中的下一阶段)使得阶段104(N)中的子问题110(1)…110(T) 中的一个或多个可被执行。如以上讨论的,依赖解112的结果是动态编程问题 102的阶段104(2)传统上不能被处理,直到阶段104(1)被完全处理并且依赖解 112被计算出并被提供到阶段104(2)。此外,依赖解114的结果是动态编程问题102的阶段104(N)传统上不能被处理,直到阶段104(2)被完全处理并且依赖解114被计算并被提供到阶段104(N)。
本文中描述的技术和/或系统消除并打破依赖性,使得各阶段可被并行地处理。例如,各技术和/或系统生成被用于处理后续阶段的解(例如,任意解),而非来自前一阶段的实际计算的解(例如,依赖解112和/或依赖解114)。如图1中显示的,所生成的解118被生成并取代依赖解112来使用,使得阶段104(2) 的子问题108(1)…108(Q)可与阶段104(1)的子问题106(1)…106(O)被并行地处理。此外,生成的解120被生成并可取代依赖解114被使用,使得阶段104(N) 的子问题110(1)…110(T)可与阶段104(2)的子问题108(1)…108(Q)被并行地处理。因此,通过生成并使用生成的解,本文中描述的各技术和/或系统打破依赖性,使得后续阶段不必等待来自前一阶段的实际计算的解被提供,并且由此可实现跨各阶段的并行处理。
图2示出动态编程问题的示例图200,其中多个阶段202(1)…202(9)被划分或分割到阶段分组204(1)…204(A)(例如,群集)中以供分别由一个或多个处理单元206(1)…206(B)并行处理。在各实施例中,群集包括多于一个阶段(例如,至少两个阶段)。在各实施例中,实现对动态编程问题的并行处理的设备可将各阶段分组到多个群集中,使得秩收敛的特性可实现正确或几乎正确的解 (例如,使用所生成的解计算出的解变得与本来使用实际解生成的解相似)。在一些实现中,群集的数量对应于在设备上执行的处理单元的数量(例如,图 2中的A和B是相同的数)。
在第一示例中,设备可具有多个多核处理器(例如,如图2所示为三个),并且由此,每个处理单元206(1)…206(B)可对应于示例设备的三个多核处理器中的一个。如以上讨论的,个体多核处理器可并行处理单个阶段内的子问题,并且因此,组合的多个多核处理器(例如,在这第一示例中的处理单元 206(1)…206(B))可跨各阶段并行处理动态编程问题。在第二示例中,处理单元206(1)…206(B)中的每一个可以是单个多核处理器内的个体核,并由此,该单个多核处理器可跨各阶段并行处理动态编程问题。然而,在这个第二示例中,对单个阶段内的子问题的并行处理可能是不可能的,因为用于在该阶段内实现并行处理的多个核可能是不可用的(例如,而非单个核处理一群集)。
图2示出跨三个处理单元206(1)…206(B)划分的动态编程问题的示例顺序实现。处理单元206(1)使用初始解s0(例如,已知值或实际解)来发起对阶段 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)传递到阶段202(3)。由此,设备并且尤其是处理单元206(1)可在个体群集内实现顺序阶段执行。
如以上讨论的,对阶段202(4)的处理的发起传统上必须等待实际解s1被计算。实际解s1可以是群集204(1)的最终阶段202(3)的解。类似地,对阶段202(7) 的处理的发起传统上必须等待实际解s2被计算。实际解s2是群集204(2)的最终阶段202(6)的解。
为了实现跨各阶段的并行处理,图2消除或打破对s1和s2的依赖性。为了消除或打破依赖性,处理单元206(2)使用所生成的解as1并且处理单元206(2) 开始使用所生成的解as1来执行阶段202(4)中的子问题,而非等待实际解s1被计算和传递(例如,处理单元206(2)在个体群集内实现顺序阶段执行)。类似地,处理单元206(B)使用所生成的解as2并且处理单元206(B)使用所生成的解 as2来开始执行阶段202(7)中的子问题,而非等待实际解s2被计算和传递(例如,处理单元206(B)在个体群集内实现顺序阶段执行)。
在图2中,由处理单元206(2)和处理单元206(B)使用所生成的解计算出的针对早期阶段的解可能是不正确的解,其不接近本来使用依赖解(例如,s1和 s2)计算的实际解。例如,针对群集204(2)的阶段202(4)的解与针对群集204(A) 的阶段202(7)的解可能是不正确的解。然而,随着个体群集内的阶段数量的增加并且作为秩收敛的结果(例如,到秩-“1”矩阵),个体群集内的后续阶段(例如,阶段202(6)和阶段202(9))中的解将最终成为接近于本来使用依赖解(例如,s1和s2)计算出的实际解的解或与本来使用依赖解(例如,s1和s2)计算的实际解正好相同的解。换言之,由于秩收敛,(i)使用所生成的解计算的解与 (ii)本来使用实际解(例如,依赖解)计算的解之间的误差随着群集内阶段数量增加而被最小化。由此,基于所生成的解运算或计算的解变得类似于在实际解替代所生成的解被使用的情况下本来被计算的解。
由此,在一些实现中,实现对动态编程问题的并行处理的设备可打破各个阶段之间的依赖性。在一些实现中,实现对动态编程问题的并行处理的设备可打破各阶段分组之间的依赖性。换言之,设备可确定要打破的较大依赖性集的子集(例如,图2中的s1和s2)。此外,阶段到群集的分组可以是任意的(例如,群集的大小或群集的数量)。例如,设备可基于数字或处理单元将各阶段均匀地划分到群集中。在另一示例中,对阶段分组的创建可基于秩收敛的速率。具体地,每群集/处理器的开销(例如,阶段的数量)可与所要求的修补的数量成正比,其进而可与秩收敛的速率成正比。如果秩在十个步骤内收敛到一(例如,“1”),则每个处理器可需要处理至少十个步骤。
尽管图2示出具有三个对应处理单元206(1)…206(B)的三个群集 204(1)…204(A),但是可以理解,动态编程问题可包括可被划分到任意数量的群集(例如,2个、3个、4个、5个、10个、15个等等)中的任意数量的阶段。此外,单个群集内阶段的数量可从一个群集到下一个群集而变化(例如,第一群集可包括8个阶段,第二群集可包括4个阶段,第三群集可包括12个阶段,等等)。
在一些实现中,每个子问题(例如,由图2的阶段202(1)…202(9)下的框表示的)对应于计算表中的一值(例如,一阶段可以是表中的一列或一阶段可以是表中的一行)。因此,处理单元206(1)…206(B)可被给予执行动态编程问题以用运算的或计算的值来填充或填满空表的任务。此外,一阶段中的值中的一个或多个可以是实际解,或可被用于计算实际解,其可被传递或提供到动态编程问题的后续阶段。
以上关于图1和/或图2描述的技术和/或系统可被用于例如(i)可被用于在噪声信道上通信的维特比(Viterbi)解码,或(ii)可被用作用于寻找两个输入串(例如,文本输入串)之间的最大子序列的常见工具的基础的LCS。
图3示出维特比表302的各阶段和LCS表304的各阶段。表中的框或单元格对应于其解由递归等式给出的子问题。例如,由306指向的递归等式是示例维特比递归等式,并且由308指向的递归等式是示例LCS递归等式。图3中显示的递归等式将子问题分组到由依赖性分隔的各阶段中。结果,在各个实施例中,递归等式可被用于标识依赖性并将各子问题划分到各阶段中。
阶段内一子问题的解不依赖于相同阶段内另一子问题的解。因此,在维特比表302中,一阶段是一列(例如,由310指向的阴影列),因为单元格(例如,由312指向的单元格)依赖于来自前一列(例如,由元素314指向的列) 中的单元格的解但不依赖于来自相同列(例如,由元素310指向的阴影列)的单元格的解。在LCS表304中,一单元格(例如,由316指向的单元格)依赖于来自三个相邻单元格的解,并且由此,LCS中的一阶段沿着反主对角(例如,由318指向的阴影反主对角)。
图4是示出示例环境400的图,该示例环境400实现如以上描述的跨各阶段和/或各群集的并行动态编程。在各实施例中,用于处理动态编程问题(例如,问题102)的并行化可在设备402(例如,本地设备)中被实现。在一些实施例中,用于处理动态编程问题的并行化可在经由一个或多个网络406与设备402 通信的远程设备404中被实现。在进一步的实施例中,用于处理的并行化可跨设备402和远程设备402例如经由网络406来实现。
设备402和远程设备404可分别包括但不限于,各种设备中的任意一种。例如,设备402和远程设备404可包括移动或便携式设备,诸如智能电话、蜂窝电话、个人数字助理(PDA)、电子书设备、膝上型计算机、平板计算机、便携式计算机、游戏控制台、个人媒体播放器设备等。在另一示例中,设备402 和远程设备404可以是固定设备,诸如台式计算机、服务器计算机(例如,其是云服务或服务器场的一部分)、游戏控制台、数字录像机(DVR)、机顶盒等。网络406可包括因特网、移动电话网络(MTN)或其它各种通信技术。
设备402包括被配置成实现本文中描述的技术的并行动态编程基础结构 408。远程设备404可个别地且分开地包括并行动态编程基础结构408。设备 402和/或远程设备404可个别地且分开地分别包括一个或多个处理器410(A) 和410(B)(例如,处理单元206(1)…206(B))以及存储器412(A)和412(B)。处理器410(A)和410(B)可以是单个处理单元或多个单元,它们每个可包括多个不同的处理单元。处理器410(A)和410(B)可包括微处理器、微计算机、微控制器、数字信号处理器、中央处理单元(CPU)、图形处理单元(GPU)以及安全处理器等等。作为替换或补充,本文所述的一些或全部技术可至少部分地由一个或多个硬件逻辑组件来执行。例如,但非限制,可被使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、状态机、复杂可编程逻辑器件(CPLD)、其他逻辑电路、片上系统(SOC)和/或基于指令执行操作的任何其他设备。在诸多功能中,处理器410(A)和410(B)可被配置成取回并执行存储在存储器412(A)和412(B)中的计算机可读指令。
存储器412(A)和412(B)可以包括计算机可读介质之一或其组合。如此处所使用的,“计算机可读介质”包括计算机存储介质和通信介质。
计算机存储介质包括以存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,相变存储器(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、闪存或其他存储器技术、光盘ROM(CD-ROM)、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或可用于存储由计算设备访问的信息的任何其他介质。
相反,通信介质包括在诸如载波的已调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机存储介质不包括通信介质。
存储器412(A)和412(B)可包括操作系统,该操作系统被配置成出于其它模块、组件和设备的利益来管理设备内以及耦合到设备的硬件和服务。在一些实例中,并行动态编程基础结构408的至少一部分可被实现在该操作系统内或由该操作系统来实现。
在各个实施例中,并行动态编程基础结构408包括依赖性标识模块414。依赖性标识模块414被配置成确定动态编程问题的各子问题之间的依赖性。例如,依赖性标识模块可分析动态编程问题的递归等式来确定一子问题(例如,后续或下一子问题)依赖于对于另一子问题(例如,当前或前一子问题)的解。
在各个实施例中,并行动态编程基础结构408包括阶段创建模块416。阶段创建模块416被配置成基于依赖性标识模块414所标识的依赖性来生成阶段。例如,阶段创建模块可生成类似于在图1-3的任意一个中讨论的那些阶段的阶段。
在各个实施例中,并行动态编程基础结构408包括群集创建模块418。群集创建模块418被配置成生成各群集,其中每个群集可包括一组阶段(例如,图2中显示的)。在各个实施例中,群集创建模块418生成与在设备或多个设备上实现的处理核或处理单元的数量相对应的数量的群集。在各个实施例中,群集创建模块418可生成群集以使得秩收敛确保群集内基于所生成的解计算的解与本来在计算中使用实际依赖解计算的解类似或相同(例如,解在群集的之后阶段中变得与实际解类似)。例如,群集创建模块418可确定阈值数量的阶段(例如,5个、10个、13个、20个等等)要被包括在每个群集中,使得秩收敛到“1”,如本文中进一步讨论的。在一些实例中,可通过剖析或运行训练输入以确定特定LTDP问题可能有多快速地收敛来确定阈值数量的阶段。在一些实例中,可通过静态分析以通过分析LTDP算法的特性来了解收敛的速率来确定阈值数量的阶段。
在各个实施例中,并行动态编程基础结构408包括并行执行模块420。并行执行模块420被配置成生成所生成的解(例如,由随机值生成器生成的一个或多个随机生成的值)来实现跨各阶段和/或各群集的并行处理。
在各个实施例中,并行动态编程基础结构408包括纠正模块422。纠正模块422被配置成实现“修补”阶段。如本文中进一步讨论的,在修补阶段期间,纠正模块422可计算实际解(例如,依赖解)并将依赖解提供到后续阶段和/ 或群集来纠正使用所生成的解计算的任意不正确的解(例如,包括在诸如202 (4)和202(7)之类的在群集中定位按顺序定位在较前的各阶段中的子问题的解)。因此,在修补阶段后,使用所生成的解计算的解可反映实际解。
关于图4描述的模块可实现一个或多个并行算法(例如,以下提供的示例算法2和/或示例算法3)以有效地跨各阶段和/或各群集来并行化动态编程问题。例如,并行算法可使用热带半环(tropical semiring)中的矩阵乘积的秩收敛特性来打破动态编程问题的各阶段之间的依赖性,如本文中进一步讨论的。
图5示出被描绘为逻辑流程图的示例过程,其表示可用硬件、软件、固件或其组合实现的一系列操作。在软件的上下文中,各个操作表示在由一个或多个处理器执行时配置计算设备执行既定操作的计算机可执行指令。一般而言,计算机可执行指令包括配置计算设备来执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。在一些实施例中,操作中的任意或全部可整体或部分地由硬件(例如,作为ASIC、专用处理单元等)实现来执行所描绘的功能。在一些实例中,功能和/或模块被实现为操作系统的一部分。在其他实例中,功能和/或模块被实现为设备驱动器的一部分、固件等等。
描述操作的次序并不旨在被解释为限制,并且所述操作中任何数量的操作可以按任何次序和/或并行地组合以实现该过程。图5中的示例操作可针对图 1-4中的任意一个中示出的模块、组件和/或元素来描述。
图5示出跨各阶段和/或各群集来并行处理动态编程问题的示例过程500。
在502,并行动态编程基础结构408可接收供处理的动态编程问题。动态编程问题包括分别被配置成计算或运算一个或多个值(例如,解)的多个子问题。动态编程问题可关于维特比问题、Needleman-Wunsch问题、Smith-Waterman 问题或最长公共子序列问题。
在504,依赖性标识模块414被配置成标识动态编程问题的各子问题之间的依赖性。例如,依赖性标识模块414可分析动态编程问题的递归等式来确定一子问题(例如,后续或下一子问题)依赖于对于另一子问题(例如,当前或前一子问题)的解。
在506,阶段创建模块416确定针对动态编程问题的各阶段(例如,通过将子问题划分到阶段中)。如以上讨论的,个体阶段包括一个或多个子问题,针对该一个或多个子问题的解可独立于针对相同阶段内的其它子问题的解来计算。换言之,两个连续的阶段(例如,阶段104(1)和104(2)、阶段202(1)和 202(2)、阶段202(3)和202(4)、阶段202(6)和202(7)等等)由至少一个依赖解分隔。因此,阶段创建模块416分隔子问题并将子问题分组到各阶段中。
在508,群集创建模块418确定针对动态编程问题的各群集(例如,将各阶段划分到各群集中,其中至少两个群集可被并行处理)。例如,第一群集(例如,群集206(1))可包括第一阶段分组(例如,阶段202(1)到202(3))并且第二群集(例如,群集206(2))可包括第二阶段分组(例如,阶段202(4)到202(6))。
在510,并行执行模块420生成被使用以使得群集可被并行处理的一个或多个生成的解。例如,并行执行模块420可针对第一群集(例如,群集204(1)) 后的每个群集(例如,群集204(2)和204(A))生成任意解(例如,图2中的as1和as2)。在各个实施例中,所生成的解包括由随机值生成器生成的一个或多个随机值。在另一示例中,并行执行模块420可使用试探法来生成可被用于计算可能不要求这么多的计算要纠正或修补的后续解的解。
在512,并行执行模块420使用一个或多个所生成的解来并行地处理各群集。例如,所生成的解而非本来被计算的实际解(例如,图2中的s1和s2)可被用于计算针对子问题的解,并且由此,并行处理可被实现,因为后续群集(例如,群集204(2)和204(A))中的各阶段不必等待前一群集被执行来使得实际解可被计算和提供。
在各个实施例中,并行执行模块420使得处理单元或处理核(例如,处理单元206(1))顺序地处理单个群集中的各阶段。例如,阶段202(1)被处理,之后是阶段202(2),并接着是阶段202(3)。与此同时,阶段204(4)被处理,之后是阶段202(5),并且接着是阶段202(6)(例如,在不同的处理单元或处理核(诸如处理单元206(2))上)。
如本文中进一步讨论的,秩收敛的特性最小化基于所生成的解计算出的针对子问题的解与本来在针对子问题的实际解已经被使用的情况下计算出的针对子问题阶段的解之间的误差。
在514,纠正模块422实现修补阶段,该修补阶段使用实际解来重新计算针对子问题的解。例如,修补阶段可在使用所生成的解对第一群集和第二群集的并行处理之后来实现。
在各个实施例中,由于一组阶段(例如,群集)被顺序地处理和执行,并行执行模块420可在每个阶段处确定秩并确定在哪个阶段秩收敛到1(例如,标识群集序列中秩收敛到1的阶段)。并行执行模块420可接着修补或纠正在所标识的阶段之前或直到所标识的阶段的所计算的解,因为在所标识的其中秩收敛到1的阶段之后的阶段中计算的解类似于(例如,相同值或非常接近相同值)本来在依赖性没有被打破的情况下被计算的实际或真实解。
在各个实施例中,并行动态编程基础结构408可用在操作512和/或514 中计算的解来填充表中的单元格。
以下讨论描述对于以上讨论的技术和/或系统的支持。例如,以下讨论描述用于帮助理解设备(例如,设备402和设备404)可如何实现跨多个阶段和/或群集对动态编程问题的并行处理。以下讨论可参考以上针对图1-5中的任一个描述的元素、组件和/或操作。
在各个实施例中,以上描述的技术和/或系统可被应用于动态编程问题,在这些动态编程问题中,子问题之间的依赖性在热带半环中是线性的。由此,热带半环中矩阵乘积的秩收敛特性可被用于打破依赖性(例如,图1中的依赖解 112和依赖解114以及图2中的s1和s2)。换言之,将矩阵相乘的秩收敛的特性显示秩收敛到值“1”,其指示使用所生成的解计算的解是几乎正确的或非常接近于正确或正确的。
在各个实施例中,以上描述的技术和/或系统打破对被称为线性热带动态编程(LTDP)问题的一类动态编程问题的依赖性。动态编程问题在以下情况下可以是线性热带的:(i)该动态编程问题的子问题可被划分并被安排到各阶段中,使得针对某一阶段内一个或多个子问题的解依赖于来自前一阶段的至少一个解以及(ii)该依赖性在热带半环中是线性的。例如,半环可形成为其中“加”(例如,“+”)作为乘法运算符并且“max”作为加法运算符。换言之,针对LTDP问题的阶段I中子问题j的解si[j]可被表示为如下:
在等式(1)中,Ai[j,k]可以是从递归等式(例如,图3的由306和308指向的递归等式)中得到的常量。
在各个实施例中,等式(1)中的线性依赖性提供顺序LTDP计算的视图作为在热带半环中执行重复的矩阵向量-乘法的一个视图。例如,每个阶段可以是一向量,并且针对阶段i的解可被表示为如下:
在等式(2)中,Ai可以是从例如递归等式中得到的常量矩阵。因此,从初始解向量开始,阶段n处的解可被获得并被表示为如下:
各阶段之间的依赖性可通过利用矩阵乘法的结合性来打破。例如,两个处理器可并行地计算部分乘积和An/2⊙...⊙A1,并且将这些结果与相乘来获得然而,这么做将执行矩阵-向量乘法的顺序计算转换为执行矩阵-矩阵乘法的并行计算。这通常导致与阶段的大小成线性的并行化开销,该并行化开销可使用线性数量的处理器来观察处理速度方面的改进,这对于设备硬件而言不是实际的。
本文中描述的技术和/或系统不依赖于矩阵-矩阵乘法,并且因此,矩阵-矩阵乘法的开销被消除。相反,本文中描述的技术和/或系统依赖于LTDP的特性。例如,在第一特性中,LTDP的输出在常量被添加到某一阶段中的解的情况下可不改变,因为寻找解(例如,两个串的LCS或维特比中隐马尔可夫模型 (HMM)状态的最优序列)可基于寻找每个作为针对其在等式(1)中达到最大值的子问题的问题的前驱。阶段中子问题的前驱可在常量被添加到前一阶段中的解的情况下保持不变,并且由此,其条目相差一常量的向量可被称为相互类似。在一些实施例中,这对应于热带半环中的标量乘法。在第二特性中,秩收敛被用于计算接近于但不相同于实际解的解(例如,基于所生成的解)。例如,k个矩阵的乘积的秩可针对足够大的k来收敛到值“1”。秩“1”的矩阵A的有意思的特性是,针对任意两个向量 可相互类似。
在线性代数中,矩阵-向量乘法将来自输入n维空间中的向量映射到输出 m维空间。如果矩阵具有低秩,则矩阵将向量投影到输出空间的子空间。例如,如果矩阵具有秩“1”,则其可将输入向量映射到输出空间中的行。在各个实施例中,即使当加法和乘法运算符的含义从它们的正常语义改变时(例如,分别变为“max”和“+”),只要含义符合以下规则,这些几何直感就可保持。
半环可以是五元组其中D可以是在加法运算和乘法运算下可以闭合的半环的域。两个运算可满足以下特性:
形成具有作为单位元的交换的幺半群
结合性:
单位元:
交换性:
形成具有作为单位元的交换的幺半群
结合性:
单位元:
上的左和右分布
是针对的零化子
热带半环可以是以下半环:
其中实数用将-∞作为域、将“max”作为加法运算并将“+”作为乘法运算来扩展。在一些示例中,半环的所有特性都用将-∞作为加法单位元并将0 作为乘法单位元来保持。
热带半环中的矩阵乘法让An×m表示具有n行和m列的矩阵,该n行和m 列具有来自热带半环的域的元素。让A[i,j]表示在第i行和第j列的A的元素。 Al×m和Bm×n的矩阵乘积是A⊙B,l×n矩阵可被定义为如下:
在一些实现中,这可以是标准矩阵乘积,其中乘法被“+”替换并且加法被“max”替换。
An×m的转置是矩阵使得vn×1矩阵接着可被表示为列向量v1×n矩阵被表示为行向量并且矩阵x1×1被表示为标量x。以上的矩阵-矩阵乘法可被扩展为矩阵-向量、标量-矩阵以及标量-向量乘法。并且,向量的第i个元素可通过来给予。
根据以上讨论,其遵循:
将等式(6)和等式(1)进行比较,可以看到,计算动态编程问题(例如, LTDP问题)的阶段中的解可被视为矩阵-向量乘法。
引理1遵循半环中的结合性、分布性和交换性特性。
引理1。矩阵乘法在半环中可以是关联的:
(A⊙B)⊙C=A⊙(B⊙C) 等式(7)
热带矩阵的秩。矩阵Mm×n具有秩r,由rank(M)=r来表示,在r为最小数的情况下使得M=Cm×r⊙Rr×n。例如,秩“1”的矩阵可以是列向量和行向量的乘积。可以存在用于定义半环中矩阵的秩的替换方式,诸如矩阵中线性独立的行或列的数量。尽管这样的定义可在环中统一,但是它们在半环中可能不时等同的。
秩收敛。秩的至少一个特性是其在矩阵乘法期间是非递增的。
rank(A⊙B)≤min(rank(A),rank(B)) 等式(8)
例如,如果rank(A)=r,则针对具有r列的矩阵C,A=C⊙R。由此, A⊙B=(C⊙B)⊙B=C⊙(R⊙B)意指rank(A⊙B)≤rank(A)。类似的论证可显示 rank(A⊙B)≤rank(B).。
这个秩收敛特性意指当正在执行矩阵乘法的序列时,乘积的秩可继续减少或保持相同。在一些实例中,本文中描述的技术和/或系统依赖于乘积的秩收敛到“1”(例如,随着群集内的阶段如以上关于图2所讨论地那样处理)。
平行向量。如果存在标量x和y使得(例如,标量乘法),则两个向量在热带半环中是平行的,表示为两个标量可以是乘法逆元并且可在半环中不被保证。热带半环中的平行向量可相差一常量偏移。例如,[1 0 2]T和[3 2 4]T可以是相差偏移“2”的平行向量。在各个实施例中,引理2 来自引理1。
引理2。
在各个实施例中,引理3示出秩“1”的矩阵可将向量映射到行。
引理3。给定秩“1”的矩阵A,针对所有向量
如果rank(A)=1,则其是某个列向量和行向量的乘积。对于任意向量其遵循:
对于标量xu和xv。作为示例,考虑以下:
此处,A是秩“1”,作为A[1 2 3]T⊙[0 1 2]。其与常量偏移“2”类似。
全部非零不变量。如果向量的元素都不是则该向量是全部非零的。在一些实现中,本文中描述的技术和/或系统可使用以下事实:在LTDP实例中看到的矩阵A具有只要是全部非零的则是全部非零的特性。
在等式(1)中,例如,矩阵Ai的j行可捕捉阶段i中的子问题j如何依赖阶段i-1中的子问题。在一些实例中,如果这个行中的所有条目都是-∞,则子问题j被迫使对于阶段i-1的任意解而言均为-∞。这种不重要的子问题从给定 LTDP实例中移除。如果LTDP实例不包括任意不重要的子问题,则该LTDP 实例可以是重要的。
引理4。对于来自重要的LTDP实例的矩阵A,
是全部非零是全部非零的,并且
但是针对某个k,A[i,k]≠-∞,从而确保对“max”的自变量中的至少一个不是-∞。这可依赖于以下事实:除了-∞,没有元素在“max”底下具有逆。由此,引理4在其它半环中可能不是真的。
LTDP算法可标识每个问题的前驱,该每个问题可以是针对其达到等式(1) 中的最大值的子问题。出于便于说明的目的,Al×m和Am×n的前驱乘积可被如下定义为A*B,其是一l×n矩阵:
因此,在一些实例中,在热带半环中的矩阵乘法的定义与前驱乘积的定义之间可存在相似性。在一些实现中,这个定义可被扩展到矩阵-向量、标量-矩阵以及标量-向量前驱乘积。
引理5依赖于以下事实:当常量偏移被添加到“arg max”的所有自变量中时,该“arg max”可以是不变的。
引理5。
引理6来自引理5,因为秩“1”的矩阵中的所有行可相互类似。
引理6。对于秩“1”的矩阵A以及任意向量 的所有元素是相等的。
本文中描述的第一示例算法(例如,算法1)是用于动态编程问题(例如, LTDP问题)的顺序算法。算法1是将矩阵-向量乘法用作示例来描述的。接着,该示例矩阵-向量乘法被扩展到一个或多个示例并行LTDP算法(例如,算法2和算法3)。在各个实施例中,示例算法1、示例算法2和/或示例算法 3可至少部分地由图4中的并行动态编程基础结构408的各模块来实现以实现图5和/或图6的过程以及图1-3中的任意一个中描述的技术。
在此提供算法1,其是用于动态编程问题(例如,LTDP问题)的顺序地计算各阶段的示例顺序算法(例如,左边的数字指示算法中的行):
算法1包括“向前”阶段,其可迭代地计算每个阶段中的解。此外,算法1 可计算前驱乘积其可针对阶段中的每个解确定针对其在等式(1)中达到最大值的子问题(例如,其“前驱”)。接着,在向前阶段后的示例“向后”阶段中,算法1可从中的第一解开始递归地读取前驱。所得到的向量(例如,以上算法1中的“res”)是针对最优问题(例如,两个输入串的最长公共子序列)的解。
一些实现可能不将阶段中的解表示为向量并且执行矩阵-向量运算。在一些实例中,可能已知,当前解不依赖于前一阶段中的所有子问题。在一些实例中,阶段中的解可被并行地计算。
算法2是跨动态编程问题(例如,LTDP问题)的各阶段实现并行化的示例并行算法。例如,算法2对用于动态编程问题的顺序算法(例如,算法1) 的向前阶段和向后阶段两者进行并行化。此外,算法2出于效率而依赖于秩收敛。在此提供算法2(例如,左边的数字指示算法内的行):
在算法2中,行12、17和25可包括处理器间通信。给定初始解向量和 n个矩阵A1,…,An,算法1针对阶段i计算然而,算法2中的并行向前阶段可计算阶段i处的解s[i],该解s[i]可类似于实际解(例如,来自图1的依赖解112和/或依赖解114和/或来自图2的s1和s2)。
算法2的一个示例洞察是,计算确切解对于动态编程问题(例如,LTDP 问题)而言可以不是必要的。例如,由于并行向量在热带半环中相差一常量,后续或下一阶段i+1中的解的前驱可保持不变(例如,引理5)。在算法2的执行期间,如果由该算法计算的s[i]类似于其实际解则阶段i可收敛。
在各个实施例中,算法2可将各阶段均等地在P个处理器之间拆分,使得处理器p拥有1p(排他性)和rp(包括性)之间的阶段,如算法2的行5中显示的。由此,尽管第一处理器从开始计算,但是其它处理器可从某个全部非零向量“nz”(例如,所生成的“任意”解)开始,如算法2的行8中显示的。在一些实例中,在算法2的行9中开始的循环可类似于算法1的顺序向前阶段,除了算法2的并行版本可存储在收敛循环中使用的所计算的s[i],如本文中进一步讨论的。
例如,考虑拥有阶段(lp…rp]的处理器p≠1。对于p所拥有的阶段k,让阶段处k的部分乘积Mk如果存在针对其rank(Mk)是“1”的阶段k,则s[k]类似于而不管初始向量“nz”(例如,引理3)。在一些实现中,全部非零的“nz”的限制可确保这个特性不是真的,因为否则s[k] 可以是其元素全部是-∞的零向量(例如,引理4)。如果rank(Mk)是“1”,则针对每个i>k,rank(Mi)都是“1”,从而指示阶段被收敛(例如,在群集内)。
在示例算法2中,修补循环在行13处开始并修补阶段i<k。在修补循环中,处理器p与拥有阶段lp的前一处理器p-1通信来获得s[lp](例如,算法2 中的行17)。修补循环可接着继续针对所有阶段更新s[i],直到新的值变得类似于s[i]的旧值(例如,算法2中的行21)。这可确保p所拥有的所有阶段已经根据阶段lp被收敛的假设而被收敛。
此外,如果算法2中的布尔变量conv[p]为真,则处理器p将s[rp]的经收敛的值在该迭代的开始处宣扬到处理器p+1。由此,当算法2中行26处的conv 为真时,所有阶段已被收敛。在一个示例中,针对每个处理器p可存在一阶段 k,使得rank(Mk)是“1”,并且由此,算法2中的修补循环可确切地执行一次迭代。
然而,如果算法2中的conv[p]针对处理器p不是真,则阶段(lp…rp]的范围可能不足以大到生成具有秩“1”的部分乘积。修补循环的下一迭代中的处理器 p+1从s[rp](=s)开始,并在更广的范围(lp…rp+1]中搜索具有秩“1”的部分乘积。如果所有处理器都能够在这个更广的范围中收敛,则修补循环可终止。在最坏情况场景中,修补循环可执行P–1次迭代并且算法2转移到算法1的顺序示例。在一些实施例中,这可在完整乘积具有大于“1”的秩时发生。
在一些实例中,即使以上讨论在其自变量中使用部分乘积Mk,算法2可不执行任意矩阵-矩阵乘法。并且,算法2可直接使用顺序实现(例如,算法1) 来执行*和⊙运算(例如,在行10、11、19和20中)。换言之,算法2可分别针对*和⊙运算来使用经优化的顺序实现。
在各个实施例中,算法2中的行26计算所有处理器的conv[p]布尔变量的连接。这是可被并行化的示例减少运算(如果需要的话)。
当与顺序算法相比(例如,算法1)时,并行算法(例如,算法2)可附加地存储每阶段的s[i],其测试收敛循环中的收敛。如果空间是一限制,则在一些实现中,修补循环可被修改以在每个迭代中重新计算s[i],以用计算换空间。
在各个实施例中,一旦并行向前阶段完成,执行来自算法1的顺序向后阶段可生成正确的结果,即使s[i]可能不与正确的解完全相同。在各个实现中,向前阶段可支配执行时间,并且并行化向后阶段可以不是必要的。如果不是这种情况,则向后阶段可使用与并行向前阶段相同的构思来被并行化,如以下描述的。算法3是用于向后阶段的另一示例并行算法,并在此被提供(例如,其中左边的数字表示算法3内的行):
在各个实施例中,向后阶段递归地从阶段n开始标识阶段i处的前驱。获得这种前驱的一种示例方式是通过迭代地寻找在向前阶段期间计算的前驱乘积pred[i]。获得这种前驱的另一种示例方式是通过重复的矩阵乘法其中Mi是部分乘积An⊙...Ai+1。基于秩收敛自变量,针对足够大的i,Mi的秩可收敛到“1”。根据引理6,在i之外的阶段处的前驱可不依赖于被用于向后阶段的初始值。
示例算法3使用来自前一段落的洞察以实现并行向后阶段。例如,每个处理器在其拥有的阶段处从0(例如,算法3中的行8)开始前驱遍历。每个处理器进入其描述和准确性反映以上关于算法2讨论的向前阶段的描述和准确性的修补循环。
在各个实施例中,求解LTDP问题可被视为计算一示例图中的最短和/或最长路径。在该示例图中,每个子问题可以是一节点并且有向边可表示子问题之间的依赖性。边上的权重表示等式(1)中的常量Ai[j,k]。例如在LCS中(例如,图3的元素304),每个子问题具有从上方的子问题到其左边的具有权重“0”的传入边以及来自其对角邻居的具有权重δi,j的传入边。寻找针对LTDP问题的最优解可基于在这个图中寻找从最后阶段中的子问题“0”到第一阶段中的子问题的最长路径,在给予后者初始权重的情况下。在替换实现中,权重可被否定并且“max”可在等式(1)中被改变为“min”来将这个视为计算最短路径。
矩阵乘积Al⊙Al+1...Ar中的条目可表示从第一阶段中的一节点到阶段r中的一节点的最短或最长路径的花费。如果这些最短路径通过第一阶段和阶段r 之间的某个阶段中的单个节点,则这个乘积的秩是“1”。作为一示例,跨美国的道路网络可具有该特性。例如,从华盛顿州中的任一城市到马萨诸塞州中的任一城市的最快路径很有可能要通过将华盛顿州连接到马萨诸塞州的州际公路 90(I-90)。对于从华盛顿州到马萨诸塞州的旅行,使用I-90的路径比不使用 I-90的路径更好。因此,对起始处的城市(例如,驾驶开始之处的华盛顿州中的城市)和/或终点处的城市(例如,驾驶结束之处的马萨诸塞州中的城市)的选择不大幅度地改变中间道路(例如,阶段)如何被规划路线。因此,如果问题实例具有比其它解更好的最优解,则秩收敛可被预期。
算法2和/或算法3中的示例修补循环可计算每个处理器的初始阶段(例如,图2中的202(4)和202(7))的解s[i]。相比于收敛到为“1”的秩,部分乘积的秩可更快速地收敛到小或低的秩。直观地,对于低秩阶段,s[i]的旧的和新的值可几乎相互类似,但是修补循环可依然冗余地更新解来基于依赖性反映实际解。
在一个示例中,可使用增量计算来优化用于冗余地更新解的计算。例如,考虑平行向量[1,2,3,4]T和[3,4,5,6]T。相反,如果向量被表示为除了第一条目之外的相邻条目之间的增量,则被表示为[1,1,1,1]T和[3,1,1,1]T的这些向量可精确地相同,除了第一条目之外。扩展这个直感,如果一阶段处的部分乘积是低秩,则向量中的条目中的一些(但不是全部)在被表示为增量时可以是相同的。如果递归等式(1)被修改为对增量操作,则s[i]的旧的和新的值之间不同的增量可被传播到下一迭代。这个优化例如可以是有帮助的,诸如LCS和 Needleman-Wunsch,针对其一阶段中的解的数量是大的并且到低秩的收敛快于到秩“1”的收敛。
在各个实施例中,动态编程问题可被重新制定为LTDP问题。该重新制定将子问题分组到各阶段中,使得每个阶段确切地依赖于一个前一阶段,使得阶段之间的依赖性具有与等式(1)相同的形式。
尽管本文中的讨论应用于四个动态编程问题,但是本文中描述的技术和/ 或系统也可应用于其它动态编程问题。
维特比(Viterbi)。维特比算法寻找隐马尔可夫模型(HMM)中最可能的状态序列。HMM包括被称为0,1,…,n的隐藏状态集、可观察量集O、从状态 i到状态j的转移的转移概率ti,j以及从状态i发射观察o∈O的发射概率ei,o
给定HMM以及观察序列o1,o2,…,oT,维特比算法使用动态编程来寻找解释观察的最可能的隐藏状态序列。例如,让是概率的向量,使得是解释前t个观察o1,…,ot并在状态j中结束的最可能的状态序列的概率。如果表示在t=0处的HMM状态的初始概率,则可由以下递归给出针对t>0的
等式(13)中的递归可使用以下特性:如果解释前t个观察并在状态j处结束的最可能的序列在t-1处通过状态k,则其长度为t-1的前缀可以是解释前t-1个观察并在状态k处结束的最可能的序列。这个最优子结构可与动态编程问题相关联。
为了将维特比重新制定为LTDP,对数可被应用在等式(13)的两边。例如,如果的逐元素的对数,则其遵循:
如果At是矩阵使得则等式(14)中的递归匹配等式(1),即针对LTDP的形式。一些实现可出于效率和出于数值稳定性来使用对数概率和加法,而非使用浮点乘法来操纵概率。
一旦使用等式(14)被已知,则来自中的最大值的向后阶段可被开始以确定针对任一HMM状态的最可能的序列。由此,在所有条目中具有0的矩阵AT+1可被引入。并且,将最可能的序列的概率作为其第一条目(以及所有其它条目)。用如以上定义的和矩阵A1,…,AT+1调用示例算法1生成针对给定观察序列的最可能的序列。
最长公共子序列(LCS)。串S可以在以下情况下是另一串A的子序列:从A中删除例如可能不连续的字符产生S。给定两个串A和B,A和B的最长公共序列(LCS)是作为A和B两者的子序列的最长串S。这个问题的一种表现形式是从两个文件的LCS中寻找该两个文件之间的最小编辑的“diff(差异)”工具。
LCS具有如下的子结构。即,S是A和B的LCS。让A=A’.a并且B=B’.b,其中a和b是A和B的相应的最后字符。如果a=b,则可通过将a附加到A’和B’的LCS来获得S。否则,取决于a或b或没有一者存在于S中,存在两种情况。相应地,S是A’a和B’的LCS、A’和B’b的LCS以及A’和B’的LCS 中的最长的一个。以下递归捕捉这些情况:
在此,li,j是A中前i个字符以及B中前j个字符的LCS的长度,并且如果A中的第i个字符与B中的第j个字符相同,则δi,j是一(例如,“1”),否则为0。这个依赖性在图3中参考LCS表被可视化。LCS的解可通过遵循来自表中底部最右边的前序来获得。
在各个实施例中,一些应用可能对最多离开主对角宽度w的解感兴趣,从而确保LCS类似于输入串。对于这些应用,递归关系可被修改,使得只要|i-j|> w,li,j就被设置为-∞。使用较小的宽度还减少LTDP的存储器要求,因为整个表不需要必须被存储在存储器中。
将LCS的子问题分组到各阶段中可用两个示例方式中的任一种来完成,如图6中显示的。在第一示例方式602中,各阶段对应于反对角,诸如取决于两个先前阶段(例如,xis反对角阶段和yis反对角阶段)的zis反对角阶段。因此,各阶段可被定义为反对角的重叠对,例如阶段x-y和阶段y-z。子问题yis(例如,y1和y2)可在这两个阶段中均被复制,从而允许阶段y-z依赖于阶段x-y。尽管这种表示可能具有使得每个阶段的大小翻倍的缺点,但是其可导致高效的表示。对于LCS,针对某一阶段中连续子问题的解之间的差可以是一(例如“1”) 或0。这有助于将阶段表示为比特序列。
在第二示例方式604中,各阶段对应于行或替换地对应于列。604中的递归可被解开以避免一阶段内子问题之间的依赖性。例如,对于j≤i,yi依赖于所有xj。在第二示例方式604中,最终解从最后条目中获得,并且由此,算法 2中的前序遍历可被修改来从这个条目开始,例如通过在结束处添加附加矩阵以将这个解移动到所添加的阶段中的第一解。
Needleman-Wunsch:全局序列对准。Needleman-Wunsch执行两个输入序列的全局对准并被通常用于生物信息学中以对准蛋白质或DNA序列。递归等式如下:
在等式(16)中,si,j是针对第一输入的长度为i的前缀和第二输入的长度为j的前缀的最佳对准的分数,m[i,j]是针对对准相应前缀的最后字符的匹配分数,并且d是针对在对准期间插入或删除的惩罚。基本情况被定义为si,0=-i*d 和s0,j=-j*d。
在各个实施例中,将子问题分组到各阶段中可使用与LCS中相同的方式来完成。由此,在一些实例中,可将LCS考虑为Needleman-Wunsch的用于匹配分数和插入/删除惩罚的适当值的实例。
Smith-Waterman:局部序列对准。相对于Needleman-Wunsch, Smith-Waterman执行局部序列对准。给定两个输入串,Smith-Waterman寻找输入的具有最佳对准的子串,其中更长的子串具有更好的对准。递归等式如下:
等式(17)和来自Needleman-Wunsch的等式(16)之间的一个差异是,“max”中的零(例如,“0”)项,其确保只要分数取向于0,对准就“重新开始”。由于这个零项,等式(1)中的Ai矩阵中的常量可被相应地设置。这个改变可更改 Smith-Waterman的收敛特性。
在各个实施例中,针对Smith-Waterman的解基于寻找所有阶段中的所有子问题的最大值并从该子问题执行前序遍历。为了在LTDP公式化中将这点考虑在内,可按每个阶段添加“运行最大值”子问题,其包括当前阶段和先前阶段中所有子问题的最大值。
因此,基于以上描述的支持运算,本文中描述的各技术和/或系统加速在设备上的各种各样的动态编程问题的执行,这是至少因为设备可跨多个阶段和/ 或群集并行地处理动态编程问题。
示例实施例
实施例A,一种方法包括:确定包括动态编程问题的一个或多个子问题的至少第一阶段;确定包括该动态编程问题的一个或多个子问题的第二阶段,其中针对该第二阶段中的一个或多个子问题的解依赖于由包括在第一阶段中的一个或多个子问题中的至少一个子问题产生的至少一个解;确定包括该第一阶段的第一阶段分组;确定包括该第二阶段的第二阶段分组;生成要被使用的解,而非该第二阶段的一个或多个子问题所依赖于的至少一个解;以及分别经由第一硬件处理单元和第二硬件处理单元来并行地处理该第一阶段分组和该第二阶段分组,其中对第二阶段分组的处理使用所生成的解来计算针对该第二阶段中的一个或多个子问题的解,所计算的解中的一个或多个类似于真实解。
实施例B,根据实施例A的方法,其中真实解包括本来使用该第二阶段的一个或多个子问题所依赖于的至少一个解计算的实际解。
实施例C,根据实施例A或实施例B的方法,其中处理第二阶段分组包括标识第二阶段分组中的一阶段,在该阶段中秩收敛到1,从而指示使用所生成的解计算的后续解类似于真实解。
实施例D,根据实施例A-C中的任意一个的方法,其中所生成的解被用于在计算针对该第一阶段的一个或多个子问题的解之前或期间计算针对该第二阶段的一个或多个子问题的解。
实施例E,根据实施例A-D中的任意一个的方法,还包括:在并行地处理第一阶段分组和第二阶段分组期间或之后,实际地计算该第二阶段的一个或多个子问题所依赖于的至少一个解;并且作为修补阶段的一部分,至少部分基于实际计算的至少一个解来重新计算针对该第二阶段的一个或多个子问题的至少一个解。
实施例F,根据实施例A-E中的任意一个的方法,其中所述处理包括:顺序地执行第一阶段分组中的各阶段;以及顺序地执行第二阶段分组中的各阶段。
实施例G,根据实施例A-F中的任意一个的方法,还包括打破第一阶段和第二阶段之间的依赖性。
实施例H,根据实施例A-G中的任意一个的方法,其中各个解包括被用于填充表的一个或多个值。
实施例I,根据实施例A-H中的任意一个的方法,其中所生成的解包括一个或多个随机生成的值。
实施例J,根据实施例A-I中的任意一个的方法,其中动态编程问题包括以下中的至少一个:维特比问题、Needleman-Wunsch(蛋白序列资料库)问题、 Smith-Waterman问题和/或最长公共子序列问题。
实施例K,一种或多种包括指令的计算机可读存储介质,当由一个或多个处理器执行所述指令时,配置设备来执行操作,所述操作包括:将动态编程问题的多个阶段划分到至少第一阶段分组和第二阶段分组中,每个阶段包括各自被配置成计算独立于由相同阶段中的其它子问题计算的解的解的一个或多个子问题;生成解来打破第一阶段分组中的最后阶段与第二阶段分组中的第一阶段之间的依赖性;以及分别经由至少第一处理单元和第二处理单元来处理第一阶段分组和第二阶段分组,其中第二处理单元使用所生成的解来实现对第二阶段分组中的阶段的顺序处理。
实施例L,根据实施例K的一种或多种计算机可读存储介质,其中使用所生成的解对第二分组阶段的处理包括确定类似于本来在依赖性没有被打破的情况下被计算的实际解的一个或多个解。
实施例M,根据实施例K或实施例I的一种或多种计算机可读存储介质,其中处理第二阶段分组包括标识第二阶段分组中的一阶段,在该阶段中秩收敛到1,从而指示使用所生成的解计算的解类似于实际解。
实施例N,根据实施例K-M中的任一个中的一种或多种计算机可读存储介质,其中所生成的解包括一个或多个随机生成的值。
实施例O,根据实施例K-N中的任一个中的一种或多种计算机可读存储介质,其中动态编程问题包括以下中的至少一个:维特比问题、Needleman-Wunsch 问题、Smith-Waterman问题和/或最长公共子序列问题。
实施例P,一种方法包括:将动态编程问题的子问题划分到多个阶段中,其中该多个阶段中的各个阶段包括各自被配置成计算独立于针对该各个阶段中的一个或多个子问题的其它子问题的解的解的一个或多个子问题;将该多个阶段划分到由至少一个依赖解分隔的至少第一分组和第二分组中;生成一个或多个解;以及分别经由至少第一硬件处理单元和第二硬件处理单元来处理第一分组和第二分组,其中处理第二分组包括使用一个或多个所生成的解而非至少一个依赖解来计算一个或多个解。
实施例Q,根据实施例P的方法,其中对第二分组的处理包括确定类似于本来基于对至少一个依赖解的使用所计算的实际解的一个或多个解。
实施例R,根据实施例P或实施例Q的方法,其中处理第二分组包括标识第二分组内的一阶段,在该阶段中秩收敛到1,从而指示使用一个或多个所生成的解计算的解类似于本来基于对至少一个依赖解所计算的实际解。
实施例S,根据实施例P-R的任意一个的方法,其中一个或多个所生成的解包括一个或多个任意解。
实施例T,根据实施例P-S中的任意一个的方法,其中动态编程问题包括以下中的至少一个:维特比问题、Needleman-Wunsch问题、Smith-Waterman 问题和/或最长公共子序列问题。
结语
虽然本公开可使用结构特征和/或方法动作专用的语言,但本发明不必限于所描述的具体特征或动作。相反,这些具体特征和动作是作为实现本发明的说明性形式而公开的。

Claims (9)

1.一种用于并行地控制多个处理单元(206(1),206(2))的设备(402),所述设备(402)包括:
用于处理动态编程问题(102)的第一处理单元(206(1)),所述动态编程问题(102)包括第一和第二阶段(104(1),104(2)),其中第一阶段(104(1))的输出用作对于后续第二阶段(104(2))的输入,并且所述第一和所述第二阶段(104(1),104(2))之间的依赖性在热带半环中是线性的;
用于处理所述动态编程问题(102)的第二处理单元(206(2));以及
与所述第一和所述第二处理单元(206(1),206(2))通信的存储器(412A),所述存储器(412A)包括:
用于确定所述动态编程问题(102)的第一和第二阶段(104(1),104(2))的阶段创建模块(416),
用于确定所述第一和所述第二阶段(104(1),104(2))之间的至少一个依赖性的依赖性标识模块(414),所述依赖性是第一阶段输出与第二阶段输入的耦合,以及
用于以下的并行执行模块(420):
通过将独立于所述第一阶段输出的所生成的输入(118)用作所述第二阶段输入来打破所述至少一个依赖性,以及
与所述第一处理单元(206(1))上的所述第一阶段(104(1))并行地处理所述第二处理单元(206(2))上的所述第二阶段(104(2)),以计算针对所述动态编程问题(102)的解,以及
群集创建模块(418),所述群集创建模块用于将所述第一阶段(104(1))与所述动态编程问题(102)的其它阶段的第一集(202(3),202(4))群集(508)在一起来形成第一群集,并将所述第二阶段(104(2))与所述动态编程问题(102)的其它阶段的第二集(202(5),202(6))群集在一起来形成第二群集,
其中所述并行执行模块(420)还与所述第一处理单元(206(1))上的所述第一群集并行地处理所述第二处理单元(206(2))上的所述第二群集,以计算所述解。
2.如权利要求1所述的设备(402),其特征在于,所述并行执行模块(420)还标识所述第二群集内的一阶段,在该阶段中秩收敛到1,以指示基于所述所生成的输入(118)的所述解是在所述依赖性没有被打破的情况下计算的。
3.一种用于并行地控制多个处理单元(206(1),206(2))以处理动态编程问题(102)的方法,所述动态编程问题(102)包括第一和第二阶段(104(1),104(2)),其中第一阶段(104(1))的输出用作对于后续第二阶段(104(2))的输入,并且所述第一和所述第二阶段(104(1),104(2))之间的依赖性在热带半环中是线性的,所述方法包括:
使用阶段创建模块(416)来确定(506)所述动态编程问题(102)的第一阶段(104(1))和第二阶段(104(2));
使用依赖性标识模块(414)来标识(504)所述第一和所述第二阶段(104(1),104(2))之间的至少一个依赖性,所述依赖性是第一阶段输出与第二阶段输入的耦合;
使用并行执行模块(420)来生成(510)要被用作所述第二阶段输入的独立于所述第一阶段输出的所生成的输入(118);
使用所述并行执行模块(420)来与第一处理单元(206(1))上的所述第一阶段(104(1))并行地处理第二处理单元(206(2))上的所述第二阶段(104(2)),以计算针对所述动态编程问题(102)的解,其中所述第二处理单元(206(2))使用所述所生成的输入(118)来计算解;
将所述第一阶段(104(1))与所述动态编程问题(102)的其它阶段的第一集(202(3),202(4))群集(508)在一起来形成第一群集,并将所述第二阶段(104(2))与所述动态编程问题(102)的其它阶段的第二集(202(5),202(6))群集在一起来形成第二群集;以及
与所述第一处理单元(206(1))上的所述第一群集并行地处理所述第二处理单元(206(2))上的所述第二群集,以计算所述解。
4.如权利要求3所述的方法,其特征在于,并行处理所述第二群集包括标识所述第二群集内的一阶段,在该阶段中秩收敛到1,从而指示基于所述所生成的输入(118)的所述解就是在所述依赖性没有被打破的情况下计算的。
5.如权利要求3所述的方法,其特征在于,进一步包括:
在对所述第一阶段(104(1))和所述第二阶段(104(2))的并行处理期间或之后,计算所述第二阶段依赖于的所述第一阶段输出;以及
使用纠正模块来将所述第一阶段输出用作第二阶段输入来重新计算针对所述第二阶段(104(2))的第二解。
6.如权利要求3所述的方法,其特征在于,并行地处理包括:
顺序地执行所述第一群集中的所述阶段;以及
顺序地执行所述第二群集中的所述阶段。
7.如权利要求3所述的方法,其特征在于,所述动态编程问题包括以下中的至少一个:维特比问题、Needleman-Wunsch问题、Smith-Waterman问题或最长公共子序列问题。
8.一种用于并行地控制多个处理单元(206(1),206(2))以处理动态编程问题(102)的系统,所述动态编程问题(102)包括第一和第二阶段(104(1),104(2)),其中第一阶段(104(1))的输出用作对于后续第二阶段(104(2))的输入,并且所述第一和所述第二阶段(104(1),104(2))之间的依赖性在热带半环中是线性的,所述系统包括:
用于使用阶段创建模块(416)来确定(506)所述动态编程问题(102)的第一阶段(104(1))和第二阶段(104(2))的装置;
用于使用依赖性标识模块(414)来标识(504)所述第一和所述第二阶段(104(1),104(2))之间的至少一个依赖性的装置,所述依赖性是第一阶段输出与第二阶段输入的耦合;
用于使用并行执行模块(420)来生成(510)要被用作所述第二阶段输入的独立于所述第一阶段输出的所生成的输入(118)的装置;以及
用于使用所述并行执行模块(420)来与第一处理单元(206(1))上的所述第一阶段(104(1))并行地处理第二处理单元(206(2))上的所述第二阶段(104(2))以计算针对所述动态编程问题(102)的解的装置,其中所述第二处理单元(206(2))使用所述所生成的输入(118)来计算解;
用于将所述第一阶段(104(1))与所述动态编程问题(102)的其它阶段的第一集(202(3),202(4))群集(508)在一起来形成第一群集,并将所述第二阶段(104(2))与所述动态编程问题(102)的其它阶段的第二集(202(5),202(6))群集在一起来形成第二群集的装置;以及
用于与所述第一处理单元(206(1))上的所述第一群集并行地处理所述第二处理单元(206(2))上的所述第二群集,以计算所述解的装置。
9.一种具有指令的计算机可读存储介质,所述指令在被执行时使机器执行如权利要求3-7中的任一项所述的方法。
CN201480056629.6A 2013-10-14 2014-10-13 一种用于并行地控制多个处理单元的设备、方法、系统 Active CN105706057B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361890824P 2013-10-14 2013-10-14
US61/890,824 2013-10-14
US14/257,952 US9195436B2 (en) 2013-10-14 2014-04-21 Parallel dynamic programming through rank convergence
US14/257,952 2014-04-21
PCT/US2014/060218 WO2015057539A1 (en) 2013-10-14 2014-10-13 Parallel dynamic programming through rank convergence

Publications (2)

Publication Number Publication Date
CN105706057A CN105706057A (zh) 2016-06-22
CN105706057B true CN105706057B (zh) 2019-06-18

Family

ID=52810764

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480056629.6A Active CN105706057B (zh) 2013-10-14 2014-10-13 一种用于并行地控制多个处理单元的设备、方法、系统

Country Status (4)

Country Link
US (1) US9195436B2 (zh)
EP (1) EP3058463B1 (zh)
CN (1) CN105706057B (zh)
WO (1) WO2015057539A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10922620B2 (en) * 2016-01-26 2021-02-16 Microsoft Technology Licensing, Llc Machine learning through parallelized stochastic gradient descent
US10241970B2 (en) 2016-11-14 2019-03-26 Microsoft Technology Licensing, Llc Reduced memory nucleotide sequence comparison
US10592405B2 (en) * 2017-10-03 2020-03-17 International Business Machines Corporation Visualization of vulnerabilities detected by static application testing
US11715042B1 (en) 2018-04-20 2023-08-01 Meta Platforms Technologies, Llc Interpretability of deep reinforcement learning models in assistant systems
US11307880B2 (en) 2018-04-20 2022-04-19 Meta Platforms, Inc. Assisting users with personalized and contextual communication content
US11886473B2 (en) 2018-04-20 2024-01-30 Meta Platforms, Inc. Intent identification for agent matching by assistant systems
US11676220B2 (en) 2018-04-20 2023-06-13 Meta Platforms, Inc. Processing multimodal user input for assistant systems
US10963273B2 (en) 2018-04-20 2021-03-30 Facebook, Inc. Generating personalized content summaries for users
CN109669932B (zh) * 2018-10-22 2023-06-30 国网上海市电力公司 一种基于次序依赖的电力数据集修复方法
US11726757B2 (en) * 2019-08-14 2023-08-15 Nvidia Corporation Processor for performing dynamic programming according to an instruction, and a method for configuring a processor for dynamic programming via an instruction

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0789869A1 (en) * 1994-11-02 1997-08-20 Robert J. Jannarone Concurrent learning and performance information processing system
CN101438234A (zh) * 2006-10-05 2009-05-20 美国日本电气实验室公司 参数化并发软件的过程间数据流分析
CN103279332A (zh) * 2013-06-09 2013-09-04 浪潮电子信息产业股份有限公司 一种基于gpu-cuda平台以及遗传算法的数据流并行处理方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6106575A (en) * 1998-05-13 2000-08-22 Microsoft Corporation Nested parallel language preprocessor for converting parallel language programs into sequential code
US6513022B1 (en) * 2000-04-07 2003-01-28 The United States Of America As Represented By The Secretary Of The Air Force Dynamic programming network
US8914590B2 (en) * 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
WO2004021176A2 (de) * 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US7603546B2 (en) * 2004-09-28 2009-10-13 Intel Corporation System, method and apparatus for dependency chain processing
US20060253476A1 (en) * 2005-05-09 2006-11-09 Roth Mary A Technique for relationship discovery in schemas using semantic name indexing
JP3938387B2 (ja) * 2005-08-10 2007-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ、制御方法、およびコンパイラ・プログラム
US8549499B1 (en) * 2006-06-16 2013-10-01 University Of Rochester Parallel programming using possible parallel regions and its language profiling compiler, run-time system and debugging support
US8074210B1 (en) * 2006-06-29 2011-12-06 Xilinx, Inc. Method and apparatus for producing optimized matrix triangulation routines
US8108845B2 (en) * 2007-02-14 2012-01-31 The Mathworks, Inc. Parallel programming computing system to dynamically allocate program portions
US20090268085A1 (en) * 2008-04-25 2009-10-29 Myaskouvskey Artiom Device, system, and method for solving systems of linear equations using parallel processing
US8181001B2 (en) * 2008-09-24 2012-05-15 Apple Inc. Conditional data-dependency resolution in vector processors
US8521758B2 (en) * 2010-01-15 2013-08-27 Salesforce.Com, Inc. System and method of matching and merging records
US8522224B2 (en) * 2010-06-22 2013-08-27 National Cheng Kung University Method of analyzing intrinsic parallelism of algorithm
US20120101929A1 (en) * 2010-08-26 2012-04-26 Massively Parallel Technologies, Inc. Parallel processing development environment and associated methods
WO2013038489A1 (ja) * 2011-09-13 2013-03-21 株式会社日立製作所 計算機システム、クライアント計算機の管理方法及び記憶媒体
US9110855B2 (en) * 2011-12-16 2015-08-18 International Business Machines Corporation Matrix based dynamic programming
JP5846005B2 (ja) * 2012-03-29 2016-01-20 富士通株式会社 プログラム、コード生成方法および情報処理装置
US8893101B2 (en) * 2012-12-21 2014-11-18 International Business Machines Corporation Hybrid dependency analysis using dynamic and static analyses

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0789869A1 (en) * 1994-11-02 1997-08-20 Robert J. Jannarone Concurrent learning and performance information processing system
CN101438234A (zh) * 2006-10-05 2009-05-20 美国日本电气实验室公司 参数化并发软件的过程间数据流分析
CN103279332A (zh) * 2013-06-09 2013-09-04 浪潮电子信息产业股份有限公司 一种基于gpu-cuda平台以及遗传算法的数据流并行处理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《Safe Programmable Speculative Parallelism》;Prakash Prabhu;《Proceedings of the 2009 ACM SIGPLAN conference on Programming Language Design and Implementation》;20100512;50-61

Also Published As

Publication number Publication date
CN105706057A (zh) 2016-06-22
EP3058463B1 (en) 2018-08-22
US20150106783A1 (en) 2015-04-16
US9195436B2 (en) 2015-11-24
WO2015057539A1 (en) 2015-04-23
EP3058463A1 (en) 2016-08-24

Similar Documents

Publication Publication Date Title
CN105706057B (zh) 一种用于并行地控制多个处理单元的设备、方法、系统
Chiang et al. Cluster-gcn: An efficient algorithm for training deep and large graph convolutional networks
Agarwal et al. A reliable effective terascale linear learning system
KR102220653B1 (ko) 심화 학습 기반의 약물-표적 단백질 간 상호작용 예측 시스템 및 그 방법
Betzler et al. Parameterized algorithmics for finding connected motifs in biological networks
US20210287069A1 (en) Name matching engine boosted by machine learning
US9110946B2 (en) Database query optimization
CN109791492B (zh) 流水线相关树查询优化器和调度器
AU2014315619B2 (en) Methods and systems of four-valued simulation
Wen et al. Learning ensemble of decision trees through multifactorial genetic programming
CN107885503B (zh) 一种基于程序特征分析的迭代编译优化方法
CN110597956B (zh) 一种搜索方法、装置及存储介质
US20190318249A1 (en) Interpretable general reasoning system using key value memory networks
Sarkar et al. An algorithm for DNA read alignment on quantum accelerators
CN112836787A (zh) 通过高效混合并行化减少深度神经网络训练次数
Liang et al. FlowTuner: A multi-stage EDA flow tuner exploiting parameter knowledge transfer
Kao et al. naiveBayesCall: An efficient model-based base-calling algorithm for high-throughput sequencing
Zeng et al. Speeding Up Exact Solutions of Interactive Dynamic Influence Diagrams Using Action Equivalence.
Christakopoulou et al. Glass-box program synthesis: A machine learning approach
US12027238B2 (en) Functional protein classification for pandemic research
Tanupabrungsun et al. Feature reduction for anomaly detection in manufacturing with mapreduce GA/kNN
Nallaperuma et al. Parameterized complexity analysis and more effective construction methods for ACO algorithms and the euclidean traveling salesperson problem
US20220108772A1 (en) Functional protein classification for pandemic research
CN114863992B (zh) 基于组织特异性的玉米可变剪接异构体功能预测系统
Nazemi et al. Heuristics for million-scale two-level logic minimization

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant