CN101479704B - 为多处理器系统设计程序 - Google Patents
为多处理器系统设计程序 Download PDFInfo
- Publication number
- CN101479704B CN101479704B CN200780019634XA CN200780019634A CN101479704B CN 101479704 B CN101479704 B CN 101479704B CN 200780019634X A CN200780019634X A CN 200780019634XA CN 200780019634 A CN200780019634 A CN 200780019634A CN 101479704 B CN101479704 B CN 101479704B
- Authority
- CN
- China
- Prior art keywords
- communication
- processor
- task
- source code
- message
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种为包括多个散布的处理器和存储器的多处理器系统产生程序的计算机实现的方法。用户可利用程序设计语言指定或产生源代码。源代码指定多个任务和在多个任务之间的数据通信。但是,源代码可不(并且优选地不需要)1)明确指定哪个物理处理器执行各任务和2)在多个任务当中明确指定使用哪个通信机制。于是该方法能够基于源代码产生机器语言指令,其中机器语言指令设计用于在多个处理器上执行。机器语言指令的产生包括将用于执行的任务分配给相应的处理器和基于相应处理器的位置和必要的数据通信选择处理器之间的通信机制,以满足系统要求。
Description
技术领域
本发明涉及一种用于为具有多处理器的计算系统设计程序的方法论和工具。
背景技术
由于高时钟频率处功率系数下降,所以通过增加时钟速度来增强处理器性能的传统手段将达到极限。采用多处理器的计算系统作为计算中性能定标问题(performance scaling problem)的解决方案已出现。多处理器系统的出现要求常规程序设计范例从单线程串行程序设计和顺序执行到并行程序设计和并行执行的根本变化。
从程序设计的观点,从单处理器到多处理器的硬件结构的改变要求重新考虑算法开发和使用存储器与通信的特定最佳方式。新的问题同样存在于对许多同时运转的进程的全然复杂性进行管理中。在多芯芯片上实现多处理器系统的能力急剧地改变处理、存储器存储、和通信之间的平衡。
例如,在传统的单处理器系统中,存储器倾向于大、统一、和分层。在速度和功率方面存储器访问迅速而通信相对地费用高,因此当多个常规单处理器系统连接到一起以形成多处理器系统时策略是使通信最少。在基于高度集成和连接大多芯处理器芯片的多处理器系统中,通信的费用相对地便宜。为处理器向与其它处理器或存储器的有效的通信提供丰富的通信通道,因此,这样的系统中的存储器倾向于是较小的、分布的、并且不太分层的。结果,现代多处理器系统不同的存储器结构和复杂的通信机构提出有意义的程序设计生产率挑战。
因此,需要改善的工具和改善的方法学以改善并行程序设计的生产率。
发明内容
发明的实施方式可在多处理器系统中使用,即在包括多处理器、存储器(统一的和/或分布的)、和通信网络资源的并行计算平台中使用。一个示例性多处理器系统包括称为HyperX结构的系统。总之,HyperX结构的中心核心构件块是可升级的基于单元体的硬件架构、HyperSlice。整个硬件结构通过复制该核心单元体以产生多芯并行处理系统而形成。各个HyperSlice包含DMR(数据存储器和路由器)和处理元件(PE)。DMR提供数据存储器、控制逻辑、寄存器、和用于到处理资源的快速路由选择服务的路由器。DMR结构允许不同可互换的PE在多处理器架构中使用,以优化用于特定应用的系统。HyperX多处理器系统可包括异类或同类阵列的PE。
开发用于这样多种可能的PE组合的并行编译器是令人不敢问津的花费高的任务。本发明的实施方式通过以下方式避开该问题:产生多个自动步骤以有效地将并行程序分解成用于系统中的每个处理器的多个常规串行程序,以便能够使用为单处理器系统编写的常规编译器。
本发明的实施方式在不需要并行程序设计中的专门知识或对机器结构的详细知识的情况下允许有效的程序开发。程序编写成结构上独立于实际处理器核心或使用的其它资源。产生的目标码能够容易地重新将系统中的任何处理器核心作为目标。自动地执行通信、到处理器的任务分配、和对程序变量的存储器分配,以满足诸如等待时间、通过量(throughput)、功率、和资源限制的系统级设计约束条件。通信通过程序中以符号形式表示的信息传递或共享存储器实现,并且不要求需要理解通信架构的硬件结构。产生通信合成过程以无死锁地将符号通信表示转换成有效的物理通信路由选择方案。设计系统具有自上而下的持续的验证流程。高级别处使用的测试能够用于验证设计流程的较低级别处的设计。
最后,本发明的实施方式提供一种机制(mechanism)来图形地 或程序地表示和模型化设计中的固有并行性,以手动地或自动地优化并行性,并且图形地和交互地使并行性可视。
在一个实施方式中,描述一种为多处理器系统产生程序的计算机实现的方法。多处理器系统包括多个处理器,其中每个处理器耦联至至少一个其它的处理器,并且其中在相应的处理器之间具有多个通信机构。多处理器系统可包括耦联至处理器、例如散布在处理器中间的多个存储器。更具体而言,多处理器系统可包括耦联至、例如散布在处理器中间的多个通信单元,其中每个通信单元包括存储器和路由选择逻辑。
该方法可包括响应于用户输入的首先存储源代码,其中源代码指定第一功能性(functionality)。例如,用户可利用程序设计语言指定或产生源代码。源代码用于在多处理器上执行。源代码指定多个任务和多个任务之间的数据通信。但是,源代码可不(在一个实施方式中不要求)1)明确地指定哪个处理器执行各任务和/或2)明确地指定在多个任务之中使用哪个通信机构。源代码可以符号“发送”和“接收”形式指定任务之间的通信。可能的通信机构可包括在处理器中相应的处理器之间传递的消息和在处理器中相应的处理器之间的共享变量的使用。
然后该方法基于源代码产生机器语言指令,其中机器语言指令设计用于在多个处理器上执行。换句话说,该方法将源代码编译成机器语言指令(也称为“目标码”)。机器语言指令的产生包括如果在源代码中不明确指定任务分配,则分配用于在相应处理器上执行的任务。机器语言指令的产生包括如果在源代码中不明确指定通信机构,则基于相应处理器的位置和要求的数据通信在处理器之间选择通信机构。产生的机器语言指令存储在存储器上。可在多处理器系统上执行机器语言指令,以实现由原始源代码程序指令指定的第一功能性。
机器语言指令的产生包括将局部变量分配给存储器,其中所述存储器靠近执行拥有该局部变量的任务的处理器。可基于数据量和相应通信单元内的资源可用性执行局部变量到存储器的分配。
在一个实施方式中,一个或多个任务使用共享变量,并且机器语言指令的产生包括将利用公共共享变量的任务分配给共享到相同存储器的访问的邻近处理器。优选地在分配不具有公共共享变量的任务之前执行利用公共共享变量的任务的分配。
该方法可基于源代码产生性能模型,其中性能模型设计用于为等待时间、通过量、和功率中的一个或多个而优化。例如,在一个实施方式中,对于一个或多个相应通信中的每个通信,该方法确定数据的数据位置以及相应通信的发送和接收块的数据位置。然后,该方法为相应的通信产生性能模型。然后可基于性能模型选择任务或处理器之间的通信机构。通信机构的选择可包括通过将源代码中的通信需求绑定至路由选择逻辑而合成处理器之间的通信连接。可基于可用的路由选择资源的最高利用系数执行绑定,以使掠夺性能的(performancerobbing)通信拥塞和冲突最少并减少致命通信死锁的潜在可能。
作为一个示例,源代码指定第一消息、用于第一消息的至少一个消息发送命令、用于第一消息的至少一个消息接收命令、用于第一消息的源信息、和用于第一消息的目的信息。源信息和目的信息可以符号术语表示,其中源信息和目的信息不指定执行至少一个消息发送命令和至少一个消息接收命令的处理器的位置。机器语言指令的产生可包括将发送和/或接收消息的任务分配给特定的处理器。机器语言指令的产生还可包括决定用于消息的最佳通信机构。
在一个实施方式中,该方法为支持多路消息传递的所有通信通道产生通信依赖图。然后,该方法确定利用相同通道的通信之间是否存在相关性。如果是这样的话,该方法可自动地重新分配路由选择通道,以便冲突通信出现在不同的物理路由上。如果重新分配不可行,则该方法可明确为通信通道调度以防止出现死锁。
在一个实施方式中,多任务无死锁地集束、列表、和分配给处理器以便串行执行。分配给相同处理器的任务之间的通信利用处理器内在任务之间共享的变量/存储器执行,在无同步系统开销的情况下导致最有效的通信形式。
在一个实施方式中,机器语言指令的产生包括将程序指令分解成用于多处理器系统中的每个处理器的多个常规串行程序。然后,该方法执行设计用于单处理器系统的常规编译器,以编译多个常规串行程序中的每个常规串行程序。
附图说明
图1-6示出HyperX系统的处理元件(PE)和数据存储路由器(DMR)的网络;图1-6还描绘了在多处理器系统(或网络)上执行的算法的跟踪;图1-6还可表示用于指定和/或观察多处理器系统的操作的图形用户界面(GUI)。
图7是包括用于对系统(应用模型和系统模型)进行限定的期望程序的源代码的示例性图形框图。
图8a示出表示ANSI-C中的系统/算法并明确利用SPMD编程模型的示例主程序。
图8b是从主程序(图8a)提取以驱动最优化自动化的任务列表。
图8c是以源自主程序和提取的任务信息列表(图8b)的3-D示出的4-D+最佳程序模型。涵盖尺寸的最佳化包括空间的(在特定时间点使用的硬件架构资源)、时间的(在该图[0;16,384;24,576;25,600;33,792]的循环计数中表示的时间线)、和系统的约束条件。该附图示出作为时间的函数响应于系统约束条件(例如通过量、等待时间、功率等等)在资源利用方面的最优化过程的结果。
图8d是来自时钟周期16,384与24,576之间的时间区域中的主程序(图8a)的程序模型(图8c)的硬件构架资源的空间过程纹理图(spatial course-grain view)。应指出的是,图7中不同的功能块(利用灰度阴影/图案)彩色地编码,并且在图8c和8d中使用相同的彩色编码方案,以空间地和时间地跟踪功能的执行。
图9是“C”软件开发流程的概视图。
图10示出图形布局工具(GLT)/图形程序设计工具(GPT)视图,以提供具有分配的任务和通信的目标结构的低级别视图。各矩形 表示PE或DMR,示出相应块的内部状态。PE与DMR之间的线表示它们之间的数据通信。该视图提供完全交互的仿真和硬件设计/调试环境,并且能够跟踪性能、功率、和其它有用的量度以帮助设计/开发。
图11示出性能捕获仿真器和开发的程序能够连接到第三方系统级开发工具,以提供系统级的极好的验证。来自系统级模型的相同输入可用于验证设计。将设计的输出与系统模型极好的输出相比较。这使得能够实现快速的开发和验证流程。
具体实施方式
多处理器系统是包括多处理器、存储器(统一的和/或分布的)、和通信(或通信网络)资源的并行计算平台。示例性多处理器系统包括多个处理器,其中每个处理器耦联至至少一个其它的处理器,并且其中在相应的处理器之间具有多个通信机构。多处理器系统可包括耦联至处理器的多个存储器。例如,存储器可散布在处理器中间。更具体而言,多处理器系统可包括散布在处理器中间的多个通信单元,其中每个通信单元包括存储器和路由选择逻辑。如在此使用的,术语“耦联”意味着直接或间接地连接。
这样的多处理器系统的示例是2003年6月24日提交的、专利公开号为US20040030859、发明人为Michael B.Doerr,William H.Hallidy,David A.Gibson和Craig M.的、名称为“具有散布处理器和通信元件的处理系统”的未决专利申请No.10/602,292中披露的多芯HyperX结构。
总之,HyperX结构的中心核心构件块是可升级的基于单元体的硬件架构、HyperSlice。整个硬件结构通过复制该核心单元体以产生多芯并行处理系统而形成。各个HyperSlice包含DMR(数据存储器和路由器)和处理元件(PE)。
DMR提供数据存储器、控制逻辑、寄存器、和用于到处理资源的快速路由选择服务的路由器。通过将HyperSlice结合到一起以产生硬件构架,形成片上(on-chip)网络。该片上网络对处理资源独立地 并且透明地操作。其在支持功能或系统实现地任意网络拓扑地HyperSlice之间提供通过实时可编程并且可适应的通信构架的有求必应的带宽。可在软件控制下“即时生成(on-the-fly)”地形成并重新形成HyperSlice协同组。动态地改变用于评估功能的硬件值的该能力允许硬件资源的最佳应用,以减轻处理瓶颈。
DMR提供横跨芯片的和从芯片到芯片的最近邻、区域的、和全体的通信。DMR通过四种不同传送模式完成以上通信;存储器到存储器、存储器到寄存器、寄存器到存储器、和寄存器到寄存器。每个传送模式可物理地使用DMR资源,以不同地根据数据位置和软件算法必要条件发送数据/消息。提供“Quick Port(快速端口)”设备以将数据字从处理器快速地传送至任何地方。对于块传送,DMR内的直接存储器存取(DMA)引擎可用来管理横跨存储器和路由选择构架的数据运动。对于最近邻的通信,共享存储器和寄存器的使用是数据传送最有效的方法。对于区域的和全体的数据传送,利用路由选择构架是最有效的方法。通信通道可以是动态的或者静态的。动态路由选择设置用于数据传送并且在传送完成时拆开以便为其它数据传送释放路由选择资源。静态路由选择贯穿程序执行保持就位并且主要用于高优先级和危急的通信。所有的数据传送以及通信通道的选择都在软件程序的控制下。存在多路通信通道以支持任何发送器与接收器之间同时的数据传送。
DMR的结构允许在多处理器构架中使用不同的可互换的PE,以便为特定应用优化系统。HyperX多处理器系统可包括异类或同类阵列的PE。PE可以是常规处理器,或者替代地PE可不与处理器的常规定义一致。在可编程性换位成较高性能、较小区域、和/或较低功率的情况下,PE简单地可以是用于某些逻辑功能的用作硬接线的处理器的逻辑门的集合。
图1-6:示例性多处理器系统
图1中,示出HyperX系统的处理元件(PE)和数据存储器路由器(DMR)的网络的视图。PE示出为方框而DMR示出为圆圈。 DMR之间的路由选择通道示出为虚线。实心三角形示出网格外的通信,而实线示出DMR之间的有效数据通信。计算任务通过其数字标识符示出并设置在执行它的PE上。用于通信的数据变量通过其名称示出并设置在包含其的DMR上。
在该部分中,我们将示出在该计算网格上执行的算法的跟踪。该算法为例证目的有意地简单和稀疏。
算法使采样数据到网格上、处理该数据、然后将结果发送离开网格。然后,算法重复地在开始处开始,并且使使下一组采样数据到网格上。
在图2中,任务62从网格外的源读取数据,并将该数据存储在变量“t”和“u”中。同时,任务62结合变量“t”和“u”并将结果写入变量“w”中。同时,任务71从网格外带来数据并将其存储在变量“x”中。
在稍后的某时(图3),任务62完成读取变量“t”和“u”并开始将变量“w”传递至其将被进一步处理的任务12。任务12必须等待,直到变量“w”和变量“x”可用才开始其下一计算任务。
一旦数据就绪,任务12就由其输入“x”和“y”计算变量“sv”(图4)。“sv”是共享变量。
在图5中,由任务5作用于共享变量“sv”,以产生变量“z”。由于“sv”是共享的,所以在任务12与5之间无明确的通信,但在任务之间存在同步。同时,任务62和71开始从网格外读取下次数据抽样(如图2)。
在图6中,任务5在任务62和71继续读取下次数据抽样的同时将最终结果(变量“z”)发送出网格。
图1-6还可表示用于指定系统的“程序”或期望的操作的图形用户界面(GUI)。因此,图1-6可包括在指定期望的功能性中由用户使用的显示器上表示的屏幕截图。图1-6还可在执行期间显示,以在执行操作时可见地向用户指示操作。因此,图1-6可用作观察/调试/优化工具。
尽管在以上示例中未示出,但该图形方法还示出其它详细的网格 活动。例如:
1.通过改变其颜色示出每个PE的状态。PE状态包括:未启动、运转、停顿、和等待。
2.可引导某些PE以串行地运行多于一个的任务。通过改变任务标识符的颜色、使其更显眼、或使其区别于分配给该PE的其它任务的其它手段示出正在执行哪个任务。
3.示出同步性态。例如,如果任务等待与两个其它任务同步,则显示其在等待哪个任务。
4.示出停顿性态。例如,任务可停顿,因为其等待某些其它任务以放弃公共资源的所有权。图形地显示停顿关系。
5.示出同步变量的状态,例如互斥、条件变量、和信号。还示出哪个PE与同步变量相关。
6.利用用于各种严重性水平的不同颜色示出路由选择资源冲突。
产生和编译用于多处理器系统的源代码
该方法可首先包括产生指定对期望执行的程序进行指定的源代码。如下所述,可以任何不同的程序设计语言产生源代码,包括文本语言(例如C或C++)和图形程序设计语言(例如Simulink和LabVIEW)。源存储在存储介质上。源代码包括/指定多个任务和多个任务之间的通信。
在本发明的一个实施方式中,ANSI C/C++用作程序设计语言。将C程序编写成在它们之间具有通信的计算任务的集合,如图8a和8b所示的。图8a示出表示ANSI-C中的系统/算法并使用MPI API的示例性主程序。图8b是从主程序(图8a)提取以驱动优化自动化的任务列表和连通性信息。
图8c示出以源自主程序和提取的任务信息列表(图8b)的3-D示出的4-D+最佳程序模型。涵盖尺寸的最优化包括空间的(在特定时间点使用的硬件结构资源)、时间的(在该图[0;16,384;24,576;25,600;33,792]的循环计数中表示的时间线)、和系统的约束条件。图8d示出图8c的表示响应于系统约束条件(例如通过量、等待时间、功率 等等)在资源利用方面的最优化过过程的结果的时间片。
在单程序包含用于所有处理器的指令的情况下,“C”程序可编写成类似于常规的SPMD(单程序多数据)程序。不同于将程序编译成用于所有处理器的单目标代码程序的常规SPMD编辑习惯,本发明的一个实施方式将代码分开并为每个处理器产生独特的目标文件,以便保存存储器。替代地,程序不必是SPMD而是可实现为以下的混合:
1.每处理器的独特的源代码。
2.两个或更多的处理器之间的共享源代码。在该情况下,一组处理器可都执行相同的功能,并且不需要复制代码。
在另一实施方式中,例如来自MATHWORKS的Simulink工具或来自NATIONAL INSTRUMENTS的Lab VIEW的图形输入机构(图形程序设计系统)用于产生源代码。图形程序设计语言可更容易地模仿并行性。Simulink和Lab VIEW具有许多优点。它们分别是用于算法开发的交互图形环境。例如,Simulink系统提供完全的图形输入系统以及验证环境。由于Simulink建立在来自MATHWORKS的另一产品的Matlab顶部,所以用户能够自由地将Matlab和Simulink混合用于设计和验证、然后设计到用于实现的纯Simulink的过渡。来自National Instruments的LabVIEW和MathScript可以类似的方式一起使用。术语“Simulink”、“Matlab”和“MATHWORKS”是MATHWORKS的商标。术语“LabVIEW”、“MathScript”和“NationalInstruments”商标是National Instruments的商标。
图7示出利用Simulink软件产生的示例性图形框图。图7的框图指定希望执行的系统或应用的模型。图7的框图主要包括用于期望的程序的源代码。
在Simulink中,设计标识为许多连接的功能块。这些块假定独立地起作用并通过在块之间传递变量通信。变量可以是固定或浮点数据的标量、矢量、或矩阵。在块级别,计算模型是众所周知的“同步数据流”模型。在该模型中,每个块只在收到其所有的必要输入之后才产生其输出。另外,到设计的外部输入中的每个外部输入以固定速 率出现,但允许具有不同速率的输入。因此,Simulink固有地表示块级别的并行性。块可分层地限定或者它们可以是具有相关功能的本原。本原的功能性可简单如逆变器或者复杂如FFT(快速傅里叶变换)。
块内的并行性通过块的实现操纵。为了指定块级别并行性,我们采用与并行VSIPL++中限定的“映射”思想类似的方法。各功能块具有指定块的计算和变量如何分配横跨处理器阵列上的一个或多个处理器的相关“映射”。例如,映射限定要使用的一组处理器和各I/O标量/矢量/矩阵的数据如何在处理器中间分配。
“映射”的简单示例是矩阵乘法算子。假定在100×100的元件矩阵上操作。“映射”可指定块使用1、10、或100个处理器,通过这种方式可产生实现并计算性能。
基于并行性的级别、数据分配方案、不同的物理实现、或不同的算法实现;性能、区域、和功率之间表示的不同折衷使构件块的库参数化。每个块实现在优化过程中具有相关的模型使用。在设计优化期间,设计系统从库选择最佳的块实现并选择块之间最佳的通信方式以满足系统要求。构件块的不同变体也可基于优化过程的结果和必要条件即时生成地和有求必应地产生。
在另一实施方式中,利用汇编语言以最低的机器级别表达和模仿并行性。
图9示出整个编译过程。术语“编译过程”可用于指图9所示的大部分或所有的过程,包括C编译、汇编和任务连接步骤、以及布局布线步骤和连接/仿真步骤。
如所示,程序或源代码(在图9中称作“C程序”)可如上所述地由用户产生。如上所述,源代码可以任何不同的程序设计语言产生,包括文本语言和图形语言。如在此所述的,任务之间的通信可以符号形式、例如“发送”和“接收”的符号形式在程序中指定。术语“符号形式”意味着引导通信的程序中的相应语句不与任何特定的硬件相关,例如独立于硬件、路径等等。
在产生程序之后,可执行C编译、汇编和任务连接步骤。可利用标准的现行软件执行C编译、汇编和任务连接步骤。C编译、汇编和任务连接步骤可操作以产生机器语言指令。
然后执行如图9所示的布局和布线步骤。这可包括将任务分配给处理器、分配存储器、和在处理器之间产生通信连接。布局和布线步骤可手动地、自动地、或两者结合地执行。关于这一点,术语“自动地”是指在无指定布局(将任务分配给处理器和将变量分配给存储器)和布线(为通信分配路由选择资源)的直接用户输入的情况下执行布局和布线。如何对设计进行布局和布线的选择是取决于许多因素的优化练习:等待时间和通过量必要条件、功率要求、设计尺寸、数据量、和阵列大小。
基于特定DMR内的数据量和资源可用性,将局部变量分配给紧邻的DMR——所述DMR围绕执行拥有该局部变量的任务的PE。利用共享变量通信的任务被集束并分配给共享到相同存储位置的访问的邻近的PE。局部变量和共享变量因为接近消耗它们的PE,所以具有低的通信开销。共享变量和强制变量的任务在将任务设置到PE中的过程中具有最高的优先级。强制变量的示例包括来自片外的通过用户为高优先级放置供应的约束必须放置在IO框架和其它变量附近的数据。然后基于使PE之间的通信距离最小来分配其它任务。短的通信距离减少等待时间、改善性能、和减小功率消耗。沿通信路径根据发送器与接收器之间的大量跃距测量通信距离。例如,通过DMR则向通信距离增加一个跃距。
一旦已知数据的位置、特定通信的发送处理器和接收处理器,则系统产生用于该通信的性能模型,以优化设计的系统级别性能。然后自动地合成处理器之间的通信。为便于通信连接的自动产生,在程序中以符号“发送”和“接收”形式指定通信。例如,给予所有信息传递或任务独特的符号名称(“a”、“b”、“c”...)。这使所有的通信独特但不给出绝对处理器阵列位置(例如,发送数据(“a”,数据)而不是发送数据((1、4),数据),其中(1、4)是指多处理器阵列中特 定的处理器位置)。然后,分配步骤可手动地或自动地将任务分配给任何处理器阵列位置。用于不需要指定在通信连接中使用地硬件机构。通信合成包括最佳通信方式的自动选择。通信可以是连续的(流动转移)、分批的(块转移)、和/或与依赖发送和接收块的特性和要求的计算重叠。在HyperX系统的情况下,在由共享存储器、快速端口或DMA机构实现的共享存储器、存储器到存储器、存储器到寄存器、寄存器到存储器、和寄存器到寄存器的转移或者这些通信方式的组合之间作出选择。
放置之后,引用路由选择步骤以通过将程序中的通信必要条件绑定至物理硬件路由选择资源以合成PE之间的全部通信连接。路由选择步骤基于所有可用的路由选择资源的最高利用系数分配路由选择资源,以使掠夺性能的通信拥塞和冲突最少并减少致命通信死锁的潜在可能。
例如,任务A期待通过通信通道B来自任务B的数据和通过通信通道C来自任务C的数据,而通道B和通道C是给予最小通信距离标准分配给相同物理路由选择资源的动态通道。在任务B试图同时在相同的物理通道上向任务A发送数据的同时,当任务A期待来自任务C的数据时出现死锁。在这种情况下,任务C不能建立通道C,因为路由选择硬件由停顿(等待任务A响应)并且不会将路由选择资源释放给通道C的通道B使用。
即使程序逻辑上是无死锁的,但因为有限的通信资源、通信的动态特性和/或异步特性以及通信在编译时间期间分解并与硬件结合起来的事实,所以仍然可能具有通信死锁。因此,在路由选择过程的最后阶段使用明确的死锁去除过程,以确保无死锁程序。
现今多处理器系统中存在用于去除死锁的许多技术。这些技术主要在运行时间期间使用,以基于某些形式的暂停、查询、和监控机构分解死锁。尽管现有技术可应用于本发明以破坏死锁,但除由死锁去除机构引入的潜在数据丢失以外,其收到高性能的退化和高度的硬件系统开销。本发明的一个实施方式采用低成本死锁去除方案,以在编 译时间期间产生无死锁的程序。
为了检测潜在的死锁,对于支持多路消息传递的所有通信通道形成通信依赖图。如果利用相同通道的通信之间不存在相关性,则不可能有死锁。如果存在相关性,则可重新分配路由选择通道,以便冲突通信出现在不同的物理路由上。如果重新分配不可能,如在资源强制或性能强制情形的情况下,明确为通信通道的使用列表并且以死锁不出现的方式排序。例如,为了去除上述死锁示例中的死锁,在完成通道C转移之后修改任务A以通过快速端口向任务B发送信号。修改任务B以在其能够向任务A转移数据之前等待来自任务A的信号。增加到任务A和任务B的附加握手确保通道B和通道C在分享相同物理路由选择硬件的同时无死锁。在连接阶段期间在没有程序员介入的情况下通过将代码自动地插入相应任务的目标码来执行任务A和任务B的修改。
取决于资源约束、通过量必要条件、等待时间、功率、和通信效率可将一个或多个任务分配给一个处理器。当任务的数量超过系统中处理器的数量时,需要将多任务分配给一个处理器。如果其产生低功率解决方案或改善通信效率,则常常希望将多任务分配给处理器。处理器资源由指令和数据(局部和共享)存储容量、以及向其它处理器上的其它任务发送数据或从其它处理器上的其它任务接收数据所需的通信资源约束。为了将多任务分配给处理器,基于例如等待时间、通过量、区域、和功率的规格将任务与将程序嵌合在可用处理器资源中并优化应用性能的目标“集束”。
当多任务分配给处理器时,动态地在运行时间期间或静态地在编译时间期间确定执行次序。在动态调度中,各处理器记住能够执行各任务和然后当它们就绪时执行它们的条件。静态调度在编译时间期间产生执行顺序,以便预定的任务只有在其所有前提数据可用时才执行。调度过程使并行任务串行化,用于无死锁地由单处理器执行。通过向任务图增加由集束和调度过程引入的相关性来检测死锁。任务图中的循环对应于潜在可能的死锁条件,通过改变集束或调度方案去除 该潜在可能的死锁条件。
分配给相同处理器的任务之间的通信利用处理器内在任务之间共享的变量/存储器执行,导致任务之间最有效的通信形式。由于任务不能同时执行,所以不需要这种类型的数据的同步。
存储器分配遵循通过量、等待时间、功率、和资源约束的类似的折衷。例如,数据的矢量可以许多不同方式布置:
·整个在一个存储器中。
·拷贝至N个存储器。
·(通过分解数据的许多不同的方式)打断成N片并分配给N个存储器。
打断成N片并拷贝至许多存储器,以便参与计算的各处理器能访问特别有用的整组数据。
·存储在片外存储器中。
另外,利用对数据生存期的理解产生数据存储器“重新使用”的模型。存储重新使用意味着到块的输入的存储能重新用于存储块的输出数据或临时数据。例如,如果你计算o=a+b+c+,你可能需要用于部分结果的2个临时存储器单元:tmp1=c+d,tmp2=b+tmp1,然后o=a+tmp2。通过采用重新使用,能够一起消除暂时存储器并且输出数据可重新使用a、b、c、或d的存储。这在a、b、c、和d是非常长的矢量或非常大的矩阵时特别重要。因此,根据数据类型,能够限定算法中的操作以使得能够重新使用。此外,如果等待时间非常需要并且用于矩阵乘块的输入矩阵数据完全布置在一个存储器中,则块实现可作的第一件事是将数据拷贝至更多的存储器,然后从那里开始并行计算。
关键字_shared识别将横跨任务共享的变量。例如,_sharedintxyz将整型变量xyz识别成共享变量。共享变量用作任务之间的通信形式。访问共享变量中任务之间的同步通过使用信号。在HyperX示例中,信号是具有特殊硬件支持的寄存器。互斥(相互排斥)的信号是用于对通过任务的某些资源的相互排斥的所有权进行标记的1位寄存器。 当互斥信号(和隐含的共享资源)由任务所拥有时,其被锁定并且共享资源不能同时被遵守该信号的其它任务访问。通信合成步骤自动地确保利用信号合适地保护利用共享变量的通信。
对于处理器之间明确的模型通信,使用称为信息传递接口(MPI)的并行程序设计工业标准。MPI是其实现具体到特定平台的API。例如,MPI库存在用于PC横跨通常的局域网通信的系统。MPI标准包含超过120个功能,但只有子集需要用于类似HyperX的单芯片多处理器系统。这些功能以软件实现,或者因为效率可以硬件实现。
MPI功能的示例如下:
MPI Call | 作用 |
MPI_Init | 初始化 |
MPI_Finalize | 清理 |
MPI_Send | 向另一任务发送数据 |
MPI_Receive | 从另一任务接收数据 |
MPI_Initroute | 产生从一个处理器到另一处理器的路由 |
MPI_Endroute | 去除从一个处理器到另一处理器的路由 |
MPI_Wait | 等待通信完成 |
MPI_Test | 测试通信是否完成 |
MPI_Lock | 锁定互斥变量 |
MPI_Unlock | 解锁互斥变量 |
MPI_Broadcast | 向选定的处理器组发送数据 |
MPI_Barrier | 通过使每个任务处于等待状态来使一组处理器同步,直到所有参与的任务到达某一点 |
MPI_Reduce | 例如结合来自处理器组的部分结果,以增加调用该组处理器上的“Reduce ADD”操作的N个整数 (分别位于独立的处理器上) |
在这点上,所有的变量分配、共享存储器、和内部处理通信以流程的形式分解和实现。工具流程的最终步骤是将代码流汇编成适于由处理器执行的可执行目标图像文件。有效地,形成编译方法学以利用 常规编译器从C产生用于处理器的异类或同类阵列的目标代码,其中该常规编译器编写成产生用于单处理器系统的代码。在不重新为多处理器系统编写编译器的情况下使用常规编译器的能力是重要的,因为需要构建利用不同处理器的各种多处理器系统。
空间时间算法观察器/编辑器允许算法设计者理解算法计算什么、算法在哪里计算、和算法在什么时候计算之间的关系。
图10示出图形布局工具(GLT)/图形程序设计工具(GPT)视图,以提供具有分配的任务和通信的目标结构的低级别视图。每个矩形表示PE或DMR,以示出相应块的内部状态。PE与DMR之间的线表示它们之间的数据通信。该视图提供完全交互的仿真和硬件设计/调试环境,并且能够跟踪性能、功率、和其它有用的量度,以帮助设计/开发。
图11示出性能捕获仿真器和开发的程序能够连接到第三方系统级开发工具,以提供系统级的极好的验证。来自系统级模型的相同输入可用于验证设计。将设计的输出与系统模型极好的输出相比较。这使得能够实现快速的开发和验证流程。
因此,在此描述的方法提供许多优点。如上所述,在多处理器系统中,处理器之间存在分别表示等待时间、通过量、和功率之间的折衷的多种方式的通信。用户程序不需要明确选择使用哪个通信机构。相反地,基于处理器位置的知识和能够手动地或自动地得到的数据布局合成通信。该系统可产生优化用于等待时间、通过量、和功率的性能模型和选定的最佳通信机构。
任务通过符号通信连接而连接并分配给处理器以满足设计约束条件。决定符号连接并且选择最佳通信模式以满足设计约束条件。因此,程序员不需要担心处理器的物理位置。消息发送和接收命令的源和目的地以符号术语表示,以便能够最佳地分配处理器的准确位置以满足设计约束条件。共享变量可用作在处理器上执行的任务之间通信的手段。
因此,在此描述的方法提供用于多处理器系统的支持在多处理器 系统中使用不同处理器的以便编译策略。在一个实施方式中,该方法在不开发特定并行编译器的情况下使用用于串行代码的常规(现有)编译器。不同于多处理器系统中的所有处理器的指令存储器加载相同的目标代码图像的常规方法,在一个实施方式中,目标码分开以便处理器的指令存储器仅加载分配给它的指令。
在一个实施方式中,在设计表示为许多连接的功能块、例如数据流程图的情况下使用图形程序设计规范。图形数据流程图提供表达和指定并行性的图形方式。可基于处理器和存储器使用模型的数量使功能块参数化。参数化的块实现被选定并优化以满足设计约束条件。因此,优化存储器的使用和分配,优化块之间的通信,并且可调度功能块以由单个或多个处理器执行。在替代的实施方式中,并且通过编写SPMD程序以C模仿并行性。
信息传递接口(MPI)可用于通信。如在局域网上通信的常规多处理器系统中使用的MPI信息传递相对于存储器访问具有高的系统开销。在优选实施方式中使用Hyper X结构的情况下,通信系统开销因广泛的片上通信设备而与存储器访问相比较相对小,因此使得能够实现每处理器具有相对小的存储器的结构。
空间-时间发展GUI/浏览器可用于使用户能够可视地指定程序和/或观察程序的运行。
Claims (27)
1.一种用于为多处理器系统产生程序的计算机实现的方法,其中所述多处理器系统包括多个处理器和耦联至所述处理器的多个存储器,其中所述处理器中的每个处理器耦联至至少一个其它处理器,其中在相应的处理器之间具有多个通信机制,所述方法包括:
响应于用户输入存储源代码,其中所述源代码指定第一功能性,其中所述源代码用于在所述多处理器系统上执行,其中所述源代码指定多个任务和所述多个任务之间的数据通信,其中所述源代码不进一步指定在所述多个任务之间使用哪个通信机制;
基于所述源代码产生机器语言指令,其中所述机器语言指令被设计用于在所述多个处理器上执行,
基于所述相应的处理器的位置和所需的数据通信而选择所述处理器之间的通信机制;
将所述机器语言指令存储在所述多个存储器中的不同存储器中,其中所述多处理器系统操作来使用所选择的通信机制执行所述机器语言指令,以实现所述第一功能性。
2.如权利要求1所述的方法,
其中所述通信机制包括在所述处理器中相应的处理器之间传递的消息和在所述处理器中相应的处理器之间的共享变量;
其中所述选择处理器之间的通信机制包括选择共享变量或消息传递中的一个。
3.如权利要求1所述的方法,所述方法还包括将局部变量分配给与执行拥有所述局部变量的任务的处理器相临近的存储器。
4.如权利要求3所述的方法,
其中所述将局部变量分配给存储器是基于所述存储器内的数据量和资源可用性而执行的。
5.如权利要求1所述的方法,
其中所述多处理器系统包括耦联至所述处理器的多个通信单元,其中所述通信单元中的每个通信单元包括存储器和路由选择逻辑;
所述方法还包括将局部变量分配给相应通信单元中的存储器,其中所述通信单元靠近执行拥有所述局部变量的任务的处理器;
其中基于数据量和所述通信单元内的资源可用性执行所述局部变量分配。
6.如权利要求1所述的方法,
其中所述选择所述处理器之间的通信机制包括为所述任务的至少一个子集选择共享变量;
所述方法还包括将使用公共共享变量的任务分配给邻近的处理器,所述邻近的处理器共享对相同存储器的访问。
7.如权利要求6所述的方法,还包括:
在分配不具有公共共享变量的任务之前分配使用公共共享变量的任务。
8.如权利要求1所述的方法,还包括:
基于所述源代码产生性能模型,其中所述性能模型设计用于为等待时间、通过量和功率中的一个或多个而优化;
其中所述选择所述处理器之间的通信机制包括基于所述性能模型选择通信机制。
9.如权利要求1所述的方法,还包括:
对于一个或多个相应通信中的每个通信,确定所述相应通信的发送和接收块的数据位置;
为所述相应通信产生性能模型;
其中所述选择所述处理器之间的通信机制包括基于所述性能模型选择通信机制。
10.如权利要求1所述的方法,其中所述源代码以不指定用于执行通信的硬件的符号形式指定通信。
11.如权利要求1所述的方法,
其中所述源代码指定第一消息、用于所述第一消息的至少一个消息发送命令、用于所述第一消息的至少一个消息接收命令、用于所述第一消息的源信息、和用于所述第一消息的目的信息;
其中所述源信息和所述目的信息以符号术语表示,其中所述源信息和所述目的信息不指定执行所述至少一个消息发送命令和所述至少一个消息接收命令的处理器的位置;
所述方法还包括将任务发送和/或接收消息分配给特定处理器。
12.如权利要求1所述的方法,
其中所述多处理器系统包括耦联至所述处理器的多个存储器单元,其中所述存储器单元中的每个存储器单元包括存储器和路由选择逻辑;
所述方法还包括通过将所述源代码中的通信需求绑定至所述路由选择逻辑而合成处理器之间的通信连接。
13.如权利要求12所述的方法,
其中基于可用路由选择资源的最高利用而执行所述绑定,以使掠夺性能的通信拥塞和冲突最小化并减少致命通信死锁的潜在可能。
14.如权利要求1所述的方法,还包括:
为支持多路消息传递的所有通信通道产生通信依赖图;
确定利用相同通道的通信之间是否存在相关性;
如果在利用相同通道的通信之间存在相关性,则自动地重新分配路由选择通道,使得冲突通信出现在不同的物理路由上。
15.如权利要求14所述的方法,还包括:
如果重新分配不可行,则自动地明确调度所述通信通道以防止出现死锁。
16.如权利要求1所述的方法,
其中所述产生机器语言指令包括将所述源代码分解成用于多处理器系统中的每个处理器的多个常规串行程序;和
执行设计用于单处理器系统的常规编译器,以编译多个常规串行程序中的每个常规串行程序。
17.如权利要求1所述的方法,还包括:
所述多处理器系统利用所选择的通信机制执行所述机器语言指令,以实现所述第一功能性;和
显示视觉地描绘多处理器系统的图形用户界面,其中所述图形用户界面在所述执行期间更新以视觉地指示正在执行的操作。
18.如权利要求17所述的方法,
其中所述图形用户界面视觉地描绘所述多个处理器的至少一个子集和所述多个存储器的至少一个子集;
其中所述显示所述图形用户界面包括在相应处理器上显示视觉指示,以指示所述相应处理器的状态。
19.如权利要求18所述的方法,其中所述视觉指示包括颜色。
20.如权利要求18所述的方法,其中所述相应处理器的所述状态包括未启动、运转、停止、停顿和等待中的一个或多个。
21.如权利要求18所述的方法,
其中所述显示所述图形用户界面包括显示在所述多处理器系统中执行的相应任务。
22.如权利要求21所述的方法,
其中多个任务被分配为在第一处理器上运行;
其中所述多个任务中的每个任务图标地示出在所述图形用户界面上;
其中所述显示图形用户界面包括将视觉指示显示在指示多个任务中哪个任务正在执行的相应任务图标上。
23.如权利要求18所述的方法,
其中所述显示所述图形用户界面包括显示在所述多个处理器上执行的任务的同步性态。
24.如权利要求18所述的方法,
其中所述显示所述图形用户界面包括显示在所述多个处理器上执行的任务的停顿性态。
25.如权利要求18所述的方法,
其中所述显示所述图形用户界面包括显示对所述多处理器系统中的路由选择资源冲突的严重性进行指示的视觉指示。
26.如权利要求1所述的方法,还包括:
基于所述源代码产生性能模型,其中所述性能模型设计用于为等待时间、通过量和功率中的一个或多个而优化;以及
基于所述性能模型选择任务之间的通信机制。
27.如权利要求1所述的方法,还包括:
对于一个或多个相应通信中的每个通信,确定所述相应通信的发送和接收块的数据位置;
为所述相应的通信产生性能模型;以及
基于所述性能模型选择任务之间的通信机制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310366809.1A CN103530187B (zh) | 2006-03-27 | 2007-03-27 | 为多处理器系统设计程序 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US78658206P | 2006-03-27 | 2006-03-27 | |
US60/786,582 | 2006-03-27 | ||
PCT/US2007/065268 WO2007112406A2 (en) | 2006-03-27 | 2007-03-27 | Programming a multi-processor system |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310366809.1A Division CN103530187B (zh) | 2006-03-27 | 2007-03-27 | 为多处理器系统设计程序 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101479704A CN101479704A (zh) | 2009-07-08 |
CN101479704B true CN101479704B (zh) | 2013-09-04 |
Family
ID=38349549
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310366809.1A Active CN103530187B (zh) | 2006-03-27 | 2007-03-27 | 为多处理器系统设计程序 |
CN200780019634XA Active CN101479704B (zh) | 2006-03-27 | 2007-03-27 | 为多处理器系统设计程序 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310366809.1A Active CN103530187B (zh) | 2006-03-27 | 2007-03-27 | 为多处理器系统设计程序 |
Country Status (5)
Country | Link |
---|---|
US (4) | US8826228B2 (zh) |
EP (1) | EP2008182B1 (zh) |
CN (2) | CN103530187B (zh) |
DE (1) | DE602007006467D1 (zh) |
WO (1) | WO2007112406A2 (zh) |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9088474B2 (en) | 2002-10-08 | 2015-07-21 | Broadcom Corporation | Advanced processor with interfacing messaging network to a CPU |
US7627721B2 (en) | 2002-10-08 | 2009-12-01 | Rmi Corporation | Advanced processor with cache coherency |
US8478811B2 (en) * | 2002-10-08 | 2013-07-02 | Netlogic Microsystems, Inc. | Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip |
US7334086B2 (en) | 2002-10-08 | 2008-02-19 | Rmi Corporation | Advanced processor with system on a chip interconnect technology |
US8037224B2 (en) | 2002-10-08 | 2011-10-11 | Netlogic Microsystems, Inc. | Delegating network processor operations to star topology serial bus interfaces |
US7346757B2 (en) * | 2002-10-08 | 2008-03-18 | Rmi Corporation | Advanced processor translation lookaside buffer management in a multithreaded system |
US7961723B2 (en) | 2002-10-08 | 2011-06-14 | Netlogic Microsystems, Inc. | Advanced processor with mechanism for enforcing ordering between information sent on two independent networks |
WO2007108133A1 (ja) * | 2006-03-23 | 2007-09-27 | Fujitsu Limited | マルチプロセッシング方法及びマルチプロセッサシステム |
US8010953B2 (en) * | 2006-04-04 | 2011-08-30 | International Business Machines Corporation | Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine |
US7761817B2 (en) * | 2006-05-22 | 2010-07-20 | Coherent Logix, Incorporated | Designing an ASIC based on execution of a software program on a processing system |
US8161480B2 (en) | 2007-05-29 | 2012-04-17 | International Business Machines Corporation | Performing an allreduce operation using shared memory |
US20090006663A1 (en) * | 2007-06-27 | 2009-01-01 | Archer Charles J | Direct Memory Access ('DMA') Engine Assisted Local Reduction |
US7809970B2 (en) | 2007-08-27 | 2010-10-05 | International Business Machines Corporation | System and method for providing a high-speed message passing interface for barrier operations in a multi-tiered full-graph interconnect architecture |
US7904590B2 (en) | 2007-08-27 | 2011-03-08 | International Business Machines Corporation | Routing information through a data processing system implementing a multi-tiered full-graph interconnect architecture |
US8140731B2 (en) | 2007-08-27 | 2012-03-20 | International Business Machines Corporation | System for data processing using a multi-tiered full-graph interconnect architecture |
US7840703B2 (en) | 2007-08-27 | 2010-11-23 | International Business Machines Corporation | System and method for dynamically supporting indirect routing within a multi-tiered full-graph interconnect architecture |
US7793158B2 (en) | 2007-08-27 | 2010-09-07 | International Business Machines Corporation | Providing reliability of communication between supernodes of a multi-tiered full-graph interconnect architecture |
US7769892B2 (en) | 2007-08-27 | 2010-08-03 | International Business Machines Corporation | System and method for handling indirect routing of information between supernodes of a multi-tiered full-graph interconnect architecture |
US8185896B2 (en) | 2007-08-27 | 2012-05-22 | International Business Machines Corporation | Method for data processing using a multi-tiered full-graph interconnect architecture |
US7958183B2 (en) | 2007-08-27 | 2011-06-07 | International Business Machines Corporation | Performing collective operations using software setup and partial software execution at leaf nodes in a multi-tiered full-graph interconnect architecture |
US8108545B2 (en) | 2007-08-27 | 2012-01-31 | International Business Machines Corporation | Packet coalescing in virtual channels of a data processing system in a multi-tiered full-graph interconnect architecture |
US8014387B2 (en) | 2007-08-27 | 2011-09-06 | International Business Machines Corporation | Providing a fully non-blocking switch in a supernode of a multi-tiered full-graph interconnect architecture |
US7958182B2 (en) | 2007-08-27 | 2011-06-07 | International Business Machines Corporation | Providing full hardware support of collective operations in a multi-tiered full-graph interconnect architecture |
US7769891B2 (en) | 2007-08-27 | 2010-08-03 | International Business Machines Corporation | System and method for providing multiple redundant direct routes between supernodes of a multi-tiered full-graph interconnect architecture |
US7822889B2 (en) | 2007-08-27 | 2010-10-26 | International Business Machines Corporation | Direct/indirect transmission of information using a multi-tiered full-graph interconnect architecture |
US20090064166A1 (en) * | 2007-08-28 | 2009-03-05 | Arimilli Lakshminarayana B | System and Method for Hardware Based Dynamic Load Balancing of Message Passing Interface Tasks |
US8108876B2 (en) * | 2007-08-28 | 2012-01-31 | International Business Machines Corporation | Modifying an operation of one or more processors executing message passing interface tasks |
US8234652B2 (en) | 2007-08-28 | 2012-07-31 | International Business Machines Corporation | Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks |
US8127300B2 (en) * | 2007-08-28 | 2012-02-28 | International Business Machines Corporation | Hardware based dynamic load balancing of message passing interface tasks |
US8312464B2 (en) * | 2007-08-28 | 2012-11-13 | International Business Machines Corporation | Hardware based dynamic load balancing of message passing interface tasks by modifying tasks |
US7827428B2 (en) | 2007-08-31 | 2010-11-02 | International Business Machines Corporation | System for providing a cluster-wide system clock in a multi-tiered full-graph interconnect architecture |
US7921316B2 (en) | 2007-09-11 | 2011-04-05 | International Business Machines Corporation | Cluster-wide system clock in a multi-tiered full-graph interconnect architecture |
US8077602B2 (en) | 2008-02-01 | 2011-12-13 | International Business Machines Corporation | Performing dynamic request routing based on broadcast queue depths |
US7779148B2 (en) | 2008-02-01 | 2010-08-17 | International Business Machines Corporation | Dynamic routing based on information of not responded active source requests quantity received in broadcast heartbeat signal and stored in local data structure for other processor chips |
EP2257874A4 (en) | 2008-03-27 | 2013-07-17 | Rocketick Technologies Ltd | DESIGN SIMULATION ON THE BASIS OF PARALLEL PROCESSORS |
US8422402B2 (en) | 2008-04-01 | 2013-04-16 | International Business Machines Corporation | Broadcasting a message in a parallel computer |
US20090254319A1 (en) * | 2008-04-03 | 2009-10-08 | Siemens Aktiengesellschaft | Method and system for numerical simulation of a multiple-equation system of equations on a multi-processor core system |
US9032377B2 (en) * | 2008-07-10 | 2015-05-12 | Rocketick Technologies Ltd. | Efficient parallel computation of dependency problems |
US8281053B2 (en) | 2008-07-21 | 2012-10-02 | International Business Machines Corporation | Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations |
EP2361408A4 (en) | 2008-12-01 | 2012-05-23 | Kpit Cummins Infosystems Ltd | METHOD AND SYSTEM FOR PARALLELIZING SEQUENCEL COMPUTER PROGRAM CODES |
CN102105866B (zh) * | 2009-05-25 | 2014-02-26 | 松下电器产业株式会社 | 多处理器系统、多处理器控制方法、以及多处理器集成电路 |
US8417778B2 (en) * | 2009-12-17 | 2013-04-09 | International Business Machines Corporation | Collective acceleration unit tree flow control and retransmit |
US9424087B2 (en) | 2010-04-29 | 2016-08-23 | International Business Machines Corporation | Optimizing collective operations |
US8949577B2 (en) | 2010-05-28 | 2015-02-03 | International Business Machines Corporation | Performing a deterministic reduction operation in a parallel computer |
US8769496B2 (en) * | 2010-08-13 | 2014-07-01 | Accenture Global Services Limited | Systems and methods for handling database deadlocks induced by database-centric applications |
US8661424B2 (en) | 2010-09-02 | 2014-02-25 | Honeywell International Inc. | Auto-generation of concurrent code for multi-core applications |
US8776081B2 (en) * | 2010-09-14 | 2014-07-08 | International Business Machines Corporation | Send-side matching of data communications messages |
US8880866B2 (en) | 2010-10-15 | 2014-11-04 | Coherent Logix, Incorporated | Method and system for disabling communication paths in a multiprocessor fabric by setting register values to disable the communication paths specified by a configuration |
KR101623564B1 (ko) * | 2010-10-19 | 2016-05-24 | 삼성전자주식회사 | 멀티쓰레드 환경을 테스트하는 커버리지 장치 및 방법 |
US8566841B2 (en) | 2010-11-10 | 2013-10-22 | International Business Machines Corporation | Processing communications events in parallel active messaging interface by awakening thread from wait state |
GB2529075A (en) | 2011-06-16 | 2016-02-10 | Imagination Tech Ltd | Graphics processor with non-blocking concurrent architecture |
US8893083B2 (en) | 2011-08-09 | 2014-11-18 | International Business Machines Coporation | Collective operation protocol selection in a parallel computer |
US8667501B2 (en) | 2011-08-10 | 2014-03-04 | International Business Machines Corporation | Performing a local barrier operation |
US8910178B2 (en) | 2011-08-10 | 2014-12-09 | International Business Machines Corporation | Performing a global barrier operation in a parallel computer |
US9003383B2 (en) * | 2011-09-15 | 2015-04-07 | You Know Solutions, LLC | Analytic engine to parallelize serial code |
US8799693B2 (en) * | 2011-09-20 | 2014-08-05 | Qualcomm Incorporated | Dynamic power optimization for computing devices |
US9098309B2 (en) | 2011-09-23 | 2015-08-04 | Qualcomm Incorporated | Power consumption optimized translation of object code partitioned for hardware component based on identified operations |
US9495135B2 (en) | 2012-02-09 | 2016-11-15 | International Business Machines Corporation | Developing collective operations for a parallel computer |
US8706847B2 (en) | 2012-02-09 | 2014-04-22 | International Business Machines Corporation | Initiating a collective operation in a parallel computer |
US8769549B2 (en) * | 2012-04-30 | 2014-07-01 | National Instruments Corporation | Graphical programming system enabling data sharing from a producer to a consumer via a memory buffer |
KR101926464B1 (ko) * | 2012-10-11 | 2018-12-07 | 삼성전자 주식회사 | 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법 |
CN109240704B (zh) * | 2012-11-06 | 2022-06-14 | 相干逻辑公司 | 用于设计重用的多处理器编程工具包 |
EP2923279B1 (en) * | 2012-11-21 | 2016-11-02 | Coherent Logix Incorporated | Processing system with interspersed processors; dma-fifo |
US9292464B2 (en) | 2012-12-13 | 2016-03-22 | Coherent Logix, Incorporated | Multiprocessor system with improved secondary interconnection network |
US9195575B2 (en) | 2013-05-17 | 2015-11-24 | Coherent Logix, Incorporated | Dynamic reconfiguration of applications on a multi-processor embedded system |
US9870204B2 (en) | 2014-11-14 | 2018-01-16 | Cavium, Inc. | Algorithm to achieve optimal layout of instruction tables for programmable network devices |
US10528525B2 (en) * | 2015-03-19 | 2020-01-07 | International Business Machines Corporation | Establishing connections in a multi-tenant environment |
US20170147402A1 (en) * | 2015-11-25 | 2017-05-25 | GM Global Technology Operations LLC | Optimized task partitioning through data mining |
JP6522537B2 (ja) * | 2016-03-09 | 2019-05-29 | ソフトバンク株式会社 | コマンド処理装置及びプログラム |
US9705978B1 (en) * | 2016-07-01 | 2017-07-11 | Red Hat Israel, Ltd. | Dependency graph management |
US10860332B2 (en) * | 2017-09-25 | 2020-12-08 | Qualcomm Incorporated | Multicore framework for use in pre-boot environment of a system-on-chip |
US11755382B2 (en) * | 2017-11-03 | 2023-09-12 | Coherent Logix, Incorporated | Programming flow for multi-processor system |
CN108132834B (zh) * | 2017-12-08 | 2020-08-18 | 西安交通大学 | 多级共享高速缓冲存储器架构下的任务分配方法和系统 |
CN108632142B (zh) * | 2018-03-28 | 2021-02-12 | 华为技术有限公司 | 节点控制器的路由管理方法和装置 |
EP3575976A1 (de) * | 2018-05-29 | 2019-12-04 | dSPACE digital signal processing and control engineering GmbH | Verfahren zum bestimmen einer physikalischen verbindungstopologie eines für die steuergerätentwicklung eingerichteten, echtzeitfähigen testgeräts |
US20190369585A1 (en) * | 2018-05-29 | 2019-12-05 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for determining a physical connectivity topology of a controlling development set up for a real-time test apparatus |
CN111381958B (zh) * | 2018-12-29 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 通信装置、神经网络处理芯片、组合装置和电子设备 |
US10970132B2 (en) * | 2019-03-19 | 2021-04-06 | International Business Machines Corporation | Deadlock resolution between distributed processes |
CN111467796B (zh) * | 2020-04-02 | 2023-05-02 | 北京代码乾坤科技有限公司 | 分布式物理结算方法和装置 |
US11269526B2 (en) | 2020-04-23 | 2022-03-08 | Next Silicon Ltd | Interconnected memory grid with bypassable units |
US11275586B2 (en) * | 2020-05-29 | 2022-03-15 | Advanced Micro Devices, Inc. | Task graph generation for workload processing |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1329815A2 (en) * | 2002-01-17 | 2003-07-23 | Raytheon Company | Reconfigurable processor architectures |
CN1605066A (zh) * | 2001-12-14 | 2005-04-06 | 皇家飞利浦电子股份有限公司 | 数据处理系统 |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5459846A (en) * | 1988-12-02 | 1995-10-17 | Hyatt; Gilbert P. | Computer architecture system having an imporved memory |
US4493048A (en) * | 1982-02-26 | 1985-01-08 | Carnegie-Mellon University | Systolic array apparatuses for matrix computations |
US4945479A (en) * | 1985-07-31 | 1990-07-31 | Unisys Corporation | Tightly coupled scientific processing system |
US4873630A (en) * | 1985-07-31 | 1989-10-10 | Unisys Corporation | Scientific processor to support a host processor referencing common memory |
US4739476A (en) * | 1985-08-01 | 1988-04-19 | General Electric Company | Local interconnection scheme for parallel processing architectures |
US4720780A (en) * | 1985-09-17 | 1988-01-19 | The Johns Hopkins University | Memory-linked wavefront array processor |
US4807183A (en) * | 1985-09-27 | 1989-02-21 | Carnegie-Mellon University | Programmable interconnection chip for computer system functional modules |
US4933836A (en) * | 1986-10-29 | 1990-06-12 | United Technologies Corporation | n-Dimensional modular multiprocessor lattice architecture |
EP0266300B1 (en) | 1986-10-29 | 1994-12-07 | United Technologies Corporation | N-dimensional modular multiprocessor lattice architecture |
GB8914983D0 (en) * | 1989-06-29 | 1989-08-23 | Digital Equipment Int | Congestion control in computer networks |
US5109512A (en) * | 1990-05-31 | 1992-04-28 | International Business Machines Corporation | Process for dispatching tasks among multiple information processors |
US5963746A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | Fully distributed processing memory element |
US5630162A (en) * | 1990-11-13 | 1997-05-13 | International Business Machines Corporation | Array processor dotted communication network based on H-DOTs |
US5689719A (en) * | 1991-06-28 | 1997-11-18 | Sanyo Electric O., Ltd. | Parallel computer system including processing elements |
JP2642039B2 (ja) * | 1992-05-22 | 1997-08-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | アレイ・プロセッサ |
US5634043A (en) * | 1994-08-25 | 1997-05-27 | Intel Corporation | Microprocessor point-to-point communication |
US5944779A (en) * | 1996-07-02 | 1999-08-31 | Compbionics, Inc. | Cluster of workstations for solving compute-intensive applications by exchanging interim computation results using a two phase communication protocol |
US6226776B1 (en) * | 1997-09-16 | 2001-05-01 | Synetry Corporation | System for converting hardware designs in high-level programming language to hardware implementations |
US6106575A (en) * | 1998-05-13 | 2000-08-22 | Microsoft Corporation | Nested parallel language preprocessor for converting parallel language programs into sequential code |
JPH11353288A (ja) * | 1998-06-04 | 1999-12-24 | Toshiba Corp | 並列計算機及びメモリ装置 |
US6473805B2 (en) * | 1998-06-08 | 2002-10-29 | Telxon Corporation | Method and apparatus for intergrating wireless and non-wireless devices into an enterprise computer network using an interfacing midware server |
US6289369B1 (en) * | 1998-08-25 | 2001-09-11 | International Business Machines Corporation | Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system |
US6269467B1 (en) * | 1998-09-30 | 2001-07-31 | Cadence Design Systems, Inc. | Block based design methodology |
US6433802B1 (en) * | 1998-12-29 | 2002-08-13 | Ncr Corporation | Parallel programming development environment |
US6865541B1 (en) * | 1999-11-18 | 2005-03-08 | International Business Machines Corporation | Replaceable outcome decider |
US20010042138A1 (en) * | 1999-12-23 | 2001-11-15 | Reinhard Buendgen | Method and system for parallel and procedural computing |
US6766437B1 (en) * | 2000-02-28 | 2004-07-20 | International Business Machines Corporation | Composite uniprocessor |
US6651163B1 (en) * | 2000-03-08 | 2003-11-18 | Advanced Micro Devices, Inc. | Exception handling with reduced overhead in a multithreaded multiprocessing system |
US6938252B2 (en) * | 2000-12-14 | 2005-08-30 | International Business Machines Corporation | Hardware-assisted method for scheduling threads using data cache locality |
US7555566B2 (en) * | 2001-02-24 | 2009-06-30 | International Business Machines Corporation | Massively parallel supercomputer |
US6968447B1 (en) * | 2001-04-13 | 2005-11-22 | The United States Of America As Represented By The Secretary Of The Navy | System and method for data forwarding in a programmable multiple network processor environment |
US7152151B2 (en) * | 2002-07-18 | 2006-12-19 | Ge Fanuc Embedded Systems, Inc. | Signal processing resource for selective series processing of data in transit on communications paths in multi-processor arrangements |
US7130457B2 (en) * | 2001-07-17 | 2006-10-31 | Accuimage Diagnostics Corp. | Systems and graphical user interface for analyzing body images |
US20030163507A1 (en) * | 2002-02-26 | 2003-08-28 | Zarlink Semiconductor V.N. Inc. | Task-based hardware architecture for maximization of intellectual property reuse |
US7415594B2 (en) * | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
US7143412B2 (en) * | 2002-07-25 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Method and apparatus for optimizing performance in a multi-processing system |
GB0224023D0 (en) * | 2002-10-16 | 2002-11-27 | Roysmith Graeme | Reconfigurable integrated circuit |
US7318128B1 (en) * | 2003-08-01 | 2008-01-08 | Sun Microsystems, Inc. | Methods and apparatus for selecting processes for execution |
US20060025984A1 (en) * | 2004-08-02 | 2006-02-02 | Microsoft Corporation | Automatic validation and calibration of transaction-based performance models |
US7814462B2 (en) * | 2004-10-29 | 2010-10-12 | Massachusetts Institute Of Technology | Methods and apparatus for parallel execution of a process |
EP1828893A1 (en) * | 2004-10-29 | 2007-09-05 | Interactive Supercomputing Inc. | Methods and apparatus for parallel execution of a process |
US8447580B2 (en) * | 2005-05-31 | 2013-05-21 | The Mathworks, Inc. | Modeling of a multiprocessor system |
EP1783604A3 (en) * | 2005-11-07 | 2007-10-03 | Slawomir Adam Janczewski | Object-oriented, parallel language, method of programming and multi-processor computer |
US7451416B2 (en) * | 2006-03-17 | 2008-11-11 | International Business Machines Corporation | Method and system for designing an electronic circuit |
US7487229B2 (en) * | 2006-03-30 | 2009-02-03 | Intel Corporation | Methods and apparatus to synchronize local times at nodes in a computer network |
US8843682B2 (en) * | 2010-05-18 | 2014-09-23 | Lsi Corporation | Hybrid address mutex mechanism for memory accesses in a network processor |
US8904398B2 (en) * | 2011-03-31 | 2014-12-02 | International Business Machines Corporation | Hierarchical task mapping |
-
2007
- 2007-03-27 EP EP07759497A patent/EP2008182B1/en active Active
- 2007-03-27 WO PCT/US2007/065268 patent/WO2007112406A2/en active Application Filing
- 2007-03-27 DE DE602007006467T patent/DE602007006467D1/de active Active
- 2007-03-27 US US11/691,889 patent/US8826228B2/en active Active
- 2007-03-27 CN CN201310366809.1A patent/CN103530187B/zh active Active
- 2007-03-27 CN CN200780019634XA patent/CN101479704B/zh active Active
-
2014
- 2014-05-22 US US14/284,573 patent/US9250867B2/en active Active
-
2015
- 2015-12-17 US US14/972,815 patent/US9965258B2/en active Active
-
2018
- 2018-04-12 US US15/951,354 patent/US10776085B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1605066A (zh) * | 2001-12-14 | 2005-04-06 | 皇家飞利浦电子股份有限公司 | 数据处理系统 |
EP1329815A2 (en) * | 2002-01-17 | 2003-07-23 | Raytheon Company | Reconfigurable processor architectures |
Non-Patent Citations (1)
Title |
---|
PARKER等.《A component-based Architecture for Parallel Multi-Physics PDE Simulation》.《Future Generations Computer Systems》.Elsevier Science Publishers,2006,第22卷(第1-2期),204-216. * |
Also Published As
Publication number | Publication date |
---|---|
WO2007112406A3 (en) | 2007-11-15 |
US20180232218A1 (en) | 2018-08-16 |
US20070226686A1 (en) | 2007-09-27 |
DE602007006467D1 (de) | 2010-06-24 |
CN103530187A (zh) | 2014-01-22 |
US8826228B2 (en) | 2014-09-02 |
US20140258974A1 (en) | 2014-09-11 |
US9250867B2 (en) | 2016-02-02 |
EP2008182A2 (en) | 2008-12-31 |
US20160103663A1 (en) | 2016-04-14 |
US9965258B2 (en) | 2018-05-08 |
WO2007112406A2 (en) | 2007-10-04 |
CN101479704A (zh) | 2009-07-08 |
EP2008182B1 (en) | 2010-05-12 |
US10776085B2 (en) | 2020-09-15 |
CN103530187B (zh) | 2017-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101479704B (zh) | 为多处理器系统设计程序 | |
US20230023303A1 (en) | Machine learning network implemented by statically scheduled instructions | |
Rosvall et al. | A constraint-based design space exploration framework for real-time applications on MPSoCs | |
Xiao et al. | Plasticity-on-chip design: Exploiting self-similarity for data communications | |
Theodoropoulos et al. | The AXIOM platform for next-generation cyber physical systems | |
Emau et al. | A multi-process library for multi-agent and spatial simulation | |
de Jong et al. | An environmental modelling framework based on asynchronous many-tasks: Scalability and usability | |
Davis et al. | Paradigmatic shifts for exascale supercomputing | |
Manolakos et al. | Distributed Matlab based signal and image processing using JavaPorts | |
Bloch et al. | Methodologies for synthesizing and analyzing dynamic dataflow programs in heterogeneous systems for edge computing | |
Reder et al. | Worst-case execution-time-aware parallelization of model-based avionics applications | |
Desnos | Memory study and dataflow representations for rapid prototyping of signal processing applications on mpsocs | |
Pino et al. | Automatic code generation for heterogeneous multiprocessors | |
Jordans et al. | Automatic instruction-set architecture synthesis for VLIW processor cores in the ASAM project | |
Aggarwal et al. | SCF: A framework for task-level coordination in reconfigurable, heterogeneous systems | |
Chuang | Design and qualitative/quantitative analysis of multi-agent spatial simulation library | |
Cao | Task-based Runtime Optimizations Towards High Performance Computing Applications | |
Krawczyk et al. | Hardware models for automated partitioning and mapping in multi-core systems | |
Jain et al. | Hyaline: A Transparent Distributed Computing Framework for CUDA | |
Roloff et al. | ActorX10 and run-time application embedding | |
Bennett et al. | ASC ATDM Level 2 Milestone# 6015: Asynchronous Many-Task Software Stack Demonstration | |
Omidian Savarbaghi | Automated space/time scaling of streaming task graphs on field-programmable gate arrays | |
Steinman et al. | A proposed open cognitive architecture framework | |
Jesshope | SVP and µTC-A dynamic model of concurrency and its implementation as a compiler target | |
Bertozzi et al. | Tools for code optimization and system evaluation of the image processing system PAPRICA-3 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |