背景技术
集成电路是由例如电阻、电容、电感器、互感器、传输线、二极管、双极结型晶体管(BJT)、结型场效应晶体管(JFET)、金属氧化物半导体场效应晶体管(MOSFET)、金属T半导体场效应晶体管(MESFET)、薄膜晶体管(TFT)等电路元件构成的网络。
随着技术的发展,集成电路越来越复杂,需要使用强大的数值模拟程序。例如,电路仿真是集成电路的设计流程中必不可少的环节,它能帮助电路设计人员无需通过昂贵的制造工艺验证其设计的功能和性能。随着半导体加工技术发展到纳米尺寸,新的仿真方法需要解决纳米级电路设计所固有的新问题。现代集成电路快速发展、更新换代,不断挑战着电路仿真的算法和实现。半导体行业需要EDA软件有能力来分析与动态电流相关的纳米效应,比如耦合噪声(coupling noise)、接地反弹(ground bounce)、传输线波传播(transmission line wave propagation)、动态漏电流(dynamic leakage current)、电源电压降(supply voltage drop)、器件和电路的非线性行为等。因此,精准的电路模拟和晶体管级仿真已经成为解决纳米设计所面临问题的最有效的途径之一。
电子电路仿真器包括美国加州大学伯克利分校(UC Berkeley)开发的面向集成电路的仿真程序——SPICE(Simulation Program with Integrated Circuit Emphasis)以及各种增强或衍生版本的SPICE仿真程序。SPICE及其增强、衍生版本将在本文被简称为SPICE电路仿真器或SPICE。SPICE方法认为电路是一个不可分割的整体。
SPICE仿真可以提供对电路行为相当准确的预测。这种预测不局限于个别的子电路,它涵盖整个系统(例如,整个集成电路),因而可以发现、处理全系统范围关于噪声之类的问题。一般的SPICE仿真处理流程,模拟集成电路通常被表示为一个网表描述的形式。网表是一种由SPICE语言编写的用于仿真的对模拟电路的电路描述。SPICE网表是包含仿真控制语句的纯结构性语言。其他语言如Verilog-ATM,还具有行为构建的能力。通过结构性网表,连同预定义电路元件,根据特定的电路建模方法(在本申请中不再详述),SPICE可以将模拟集成电路据表示为矩阵形式的数学表达。非线性微分方程解的维度范围从1到n。线性方程组的n维输入向量被表示为{I1,I2,..In}。由输入向量,可以求得线性矩阵的解向量{V1,V2,..Vn}。由解向量,通过电路模型方法,可以得到另一组输入向量。重复以上计算,直到解向量收敛。一系列的解向量,可以转换输出为波形、测量值或者核查结果,这样工程师就可以通过计算机屏幕检查仿真的结果。
然而,随着集成电路行业的发展,器件尺寸不断减小、互联效应日益增加,SPICE全系统仿真变得越来越困难。一个例子是晶体管沟道长度微米尺寸变化为深亚微米尺寸。由于更小的器件尺寸,电路设计者在集成电路中能够运用电路元件(例如,晶体管、二极管、电容)数量呈指数级增长,对应于SPICE矩阵的维数也量级增长,巨大的计算复杂度使得计算不能在有效时间内完成。
一个电路可以表示为大规模离散非线性矩阵用于分析瞬间电流。矩阵维数和电路中节点的数目相同。对于瞬态分析,这个巨大的非线性系统需要求解几十万次,这限制了SPICE方法的容量和性能。一般的SPICE方法可以模拟不超过约50,000个节点的电路。因此,对于全芯片设计,SPICE方法不可行。SPICE在实际应用中被广泛应用于单元设计、库生成和准确性验证。
相对于传统SPICE,在20世纪90年代初开发的快速SPICE方法(Fast SPICE)在一定精度损失的情况下,有两个数量级以上的容量和速度提升。性能上的提升主要由于使用简化模型、电路划分技术、事件驱动的算法以及对电路延迟的利用。
SPICE将电路模型化为节点、元件集,也就是说一个电路被视为通过节点相连接的各种电路元件的集合。SPICE的核心是所谓的节点分析,通过节点方程(或者电路方程)以矩阵形式表示电路,求解节点方程对电路进行仿真。电路元件被表示为器件模型,产生表现为电路方程的矩阵元素的模型解。
电路元件的器件模型模拟,比如加州大学伯克利分校开发MOSFET器件SPICE模型,通常以模型方程和模型参数表示在变化偏置电压下的电路元件特性。例如,具有n个端子的电路元件,可以由下述的电流-电压关系建模:
Ii=fi(V1,...,Vn,t),其中i=1,…,n,
Ii表示流入第i个端口的电流,Vj(j=1,…,n)表示电压或者端口j相对于参考端口(例如地)的偏置电压,t表示时间。由基尔霍夫电流定律,流入端口n的电流为电路元件的电导矩阵为:
为了模拟电路元件在变化电流的行为,需要考虑节点电荷及端口偏压之间的关系:
Qi=qi(V1,...,Vn,t),其中i=1,…,n.
Qi表示端口i的节点电荷。电路元件n端口的电容矩阵为:
在以分层数据结构表示的模拟电路中,理想的情况是将某一层的实例全部处理完成,然后处理更高层的实例。每个实例是一个矩阵块,它是一个更大的矩阵的一部分。因此,理想的情况是将某一层的矩阵计算全部完成,然后移到上一层,处理的代表那一层实例的矩阵块计算。在传统的电路仿真解决方案中,我们可以观察到在处理某一层的时候,一些处理器可能需要等待其他处理器来完成处理任务,然后所有处理器才可以处理在上一层的其他任务。
因此,需要新的方法和系统来解决常规系统所面临的问题。具体而言,是达到电路仿真中的动态负载平衡的方法和系统。
具体实施方式
本发明提供了电路仿真动态负载平衡的方法和系统。下面的描述可以使任何本领域技术人员利用本发明。具体实施例和应用中所提供的描述信息仅为示例。这里所描述的实施例的各种延伸和组合对于本领域的技术人员是显而易见的,在不脱离本发明的实质和范围的情况下,本发明定义的一般原则可以应用到其他实施例和应用中。因此,本发明不只限于所示的实施例,本发明涵盖与本文所示原理和特征相一致的最大范围。
某些部分的详细说明,如下给出的流程图,逻辑块,和其他的信息,可以在计算机系统上执行的操作的符号表示的。的过程,计算机执行的步骤,逻辑块,过程等,这里设想为导致所希望的结果的一个或多个步骤或指令的自洽序列。的步骤是那些利用物理量的物理操作。这些量可以采取的形式,电,磁,或无线电信号能够被存储,传输,组合,比较,和以其他方式操纵的计算机系统中。这些信号可被称为比特,值,元件,符号,字符,术语,数字,或类似物的倍。可以通过硬件,软件,固件,或它们的组合中的每个步骤。
图1给出了根据本发明的一个实施例一个用于实现可重复电路仿真方法的系统。在一个实施例中,可以使用计算机系统实现可重复电路仿真的方法。该计算机系统可以包括一个或多个图形处理单元(GPU)和/或中央处理单元(CPU)100(下文简称处理器)、至少一个用于显示计算结果和波形的用户接口102、存储器装置104、系统总线106以及一个或多个连接GPU/CPU、用户界面、存储器装置和系统总线的总线接口。所述计算机系统还包括至少一个用于与其他设备105在计算机网络上通信的网络接口103。在可选的实施例中,系统和方法的某些功能可以在一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)中实现,从而减轻GPU/CPU的作用。
存储装置104可以包括高速随机访问存储器,还可以包括非易失性存储器,比如一个或多个磁盘存储设备。存储装置还包括与所述GPU/CPU远距离的海量存储。存储设备优选的存储:
●操作系统108,用于处理各种基本的系统服务和硬件相关的任务。
●应用程序110,用于执行用户定义的应用和任务,诸如电路仿真和设备评估。
●数据库112,用于存储集成电路的信息,包括数据结构、器件模型以及矩阵。
●动态负载平衡模块114被配置为提高电路仿真的效率。
数据库、应用程序、和用于实现可重复电路仿真方法的程序包括可执行程序、子模块、表和其他数据结构。在其它实施例中,可能会用到额外的或者不同的模块和数据结构,并且上述列出的一些模块和/或数据结构可能不会被用到。
图2所示为根据本发明的关于多核心处理器(或图形处理器单元,GPU)的示例性架构。如图2中所示,每个GPU或多核心处理器包括N个多处理器。每个多处理器204进一步包括:M个处理器206和一个指令单元207。每个处理器都有自己的寄存器208。在一个多处理器204中,所有的处理器20的共享一块共享存储器210。所有的处理器共享相同的一组常量缓存212和纹理缓存214的存储。处理器还可以访问设备存储器216中的数据,该设备存储器216也被称为全局存储器。
在这个例子中,每个多处理器204具有一块共享存储器。从共享存储器210中访问数据相比于从设备(全局)存储器216访问数据,要快很多。出于这个原因,提高计算效率的一个方法是将数据从全局存储器216加载到共享存储器210,使用共享存储器210进行大多数的计算/操作,然后将结果从共享存储器210写回到全局存储器216。
根据本发明,动态负载平衡的功能可以在一个或多个CPU上并行、在一个或多个GPU上并行、以及在多个CPU、GPU的组合上并行,CPU和GPU可以分布在不同的地理位置(如服务器群),也可以位于一个中心位置。
根据本发明,图3示出了一个执行电路仿真的方法。在图3中所示的例子中,电路可以表示为一个分层的数据结构,电路实例被复数个处理器并行处理。在一个实现中,电路可以被表示的根实例302,和多层子实例,比如实例0(304a)、实例1(304b)和实例M(304c),以及多个叶实例,如叶实例0(306a)、叶实例1(306b)和叶实例N(306c)。所述根实例302包括一个指针数组,例如指针0(308a)、指针1(308b)、指针2(308c)和指针X(308d),以及更低层的引用实例(该指针引用更低层的实例)。例如,被实例0(304A)可以被指针0(308a)、指针1(308b)和指针2(308c)所引用;实例M(304d)可以被指针X(308d)所引用。每个实例还包括指针的数组(未示出),允许实例引用较低层的其他实例。请注意,在一些实现中,电路既可以被表示为多层数据结构也可以被表示为平坦化的数据结构,包括但不限于以自顶向下的方式、自底向上的方式、或两种方式的组合。
每层可以有另一级别层次式结构。根据本发明,理想的情况是在一个级别的实例处理(或计算)之前,该方法已经处理了较高层的实例。每个实例可以表示一个电路分区,它包含一个或多个仿真的任务,如器件模型加载、器件模型计算、矩阵求解以及收敛性检验等。每个实例可以表示为一个块矩阵,这个块矩阵可能是更大的块矩阵的一部分。因此,理想的情况是该方法在转移到更高的层次结构以处理矩阵块所代表更高层的实例之前,完成本层的所有块计算。图3右侧示出了电路仿真的一个示例性的场景。在图3中,多个处理器P0,P1,...Pn被分配处理的一个或多个任务。纵轴表示处理一个或多个任务的时间总量估计。例如,P0被分配处理任务A0、任务B0、任务C0和任务D0,四个任务的处理时间总量为T1。同样,P1被分配处理任务A1、任务B1、任务C1;Pn被分配处理任务An、任务Bn、任务Cn。在这个例子中,当处理器P1至Pn完成相应的任务处理时,P0可能仍在处理任务D0。处理器P1至Pn会一直空闲等待,直到P0完成D0的处理,这是一个计算资源的浪费。某些处理器由于上述原因而不得不等待其他处理器完成同层实例的任务处理,这就需要一个负载平衡的解决方案,用于仿真由一个分层数据结构所表示的电路。
图4根据本发明示出了在电路仿真中的一个执行动态负载平衡的方法。图4中的电路元素与图3相同,对它们的描述,这里不再重复。图4中所示的示例性实施例中,采用动态负载平衡的方法,P0被分配处理任务D0,P1被分配处理任务B0、任务A0、任务C0等;Pn被分配处理任务An、任务Bn、任务Cn等。换句话说,根据每个任务处理的持续(时间)的总量,把它们分配给不同处理器。在此示例中,负载比较平衡,所有的处理器完成所分配任务的时间是T2,小于在图3的例子中的时间T1。因此,动态负载平衡情况下,有较少数量的处理器在空闲等待其他处理器完成任务,因而等待时间总量比较少,在这个例子中只有P0等待较少的时间,而图3示例中P1到Pn全都等待较多的时间。
请注意,为了简化说明,图3和图4的例子中的仿真任务使用字母如A0、B0、C0和D0标记。这些任务相同对应的实例相关联。实例确定了任务之间的依赖关系。任务的标记不影响或限制这些任务在仿真中的顺序。根据本发明,这些任务可以根据不同规则排序,包括但不限于:任务的持续时间、处理器的负载、以及仿真中实例所表达的电路活性。
根据本发明,动态负载平衡的方法,为仿真任务识别最优顺序。在一些实现中,每个实例和相应矩阵块的计算时间可以被测量。请注意,每个实例的计算时间可以随矩阵的活动而改变,例如每个实例可以具有不同的模型计算时间、加载模型时间、求解模型时间。此外,根据仿真环境的变化,某些部分的矩阵处理可能省略某些处理步骤。其结果是,矩阵的计算(处理任务)的时间可能随时间而改变。通过动态的平衡处理或计算负载,仿真效率可以提高。
例如,如果一个任务需要100秒来求解,和其他的任务只需要1或2秒。如果有很多的小任务只需1或2秒,更有效的方法是,首先由一个处理器处理100秒的任务,而由其他处理器处理较小的任务。如果最后处理100秒的任务,其他处理器将不得不等待更长的时间才能处理下一层(更高层)的任务。即使当电路可以是静态的,没有电路活动的动态变化,这种负载均衡的方法仍然是有益的。请注意,在这个例子中,任务是从大(需要较长的计算时间)到小(需要更少的计算时间)排序。最耗时(或最大)的任务优先处理。这种方法使得其他任务有更大的机会在最长的任务结束前结束。
正前所述,每个任务的计算时间可能随时间动态变化。可能导致计算时间变化的条件包括但不限于:电路实时变化的程度和引起电路实时变化的激励的变化程度。例如,某些部分的电路可能在休眠而不需要模型计算和矩阵求解。在其他一些情况下,可能会随着时间改变电路的活动模式,这可能会导致相应的矩阵求解在仿真过程中有时困有时容易,因而造成了相应矩阵的计算时间随时间而改变。在一些实现中,本方法为了测量仿真中电路的每个节点的计算时间,对来自于所述处理器的每个处理进行最小单位的计时,因而需要每一个周期都对计算或处理任务排序。在其他的一些实现中,周期性的测量电路活动。而在另外的某些实现中,则根据预先指定的仿真周期测量不同的仿真任务所需的时间,如每10个时间步长或每100时间步长。
根据本发明,图5示出了另一种对于电路仿真执行动态负载平衡的方法。如图5所示,一个示例性的仿真过程可以被描述为三个步骤:模型计算(ME)502,加载矩阵(LM)504,和求解矩阵(SM)506。在这个例子中,模型计算任务的时间最长,加载模型任务次之,求解矩阵任务用时最少。
根据本发明,每个ME、LM和SM任务可以被进一步划分为对应的子任务。例如,模型计算任务502可进一步划分成ME_Subtask0、ME_Subtask1、ME_Subtask2、ME_Subtask3ME_Subtask4、…、ME_SubtaskN等,其中ME_Subtask能够被分配给多处理器进行处理。加载模型任务504可被进一步划分成LM_Subtask0、LM_Subtask1等,其中LM_Subtask能够被分配给多处理器进行处理。求解矩阵任务506可被进一步划分成SM_Subtask0等,其中,SM_Subtask能够被分配给多处理器进行处理。这些子任务可以被分配到多个处理器中进行并行处理。需要注意的,任务分配由测量的子任务时间决定,根据子任务时间,可以重新分配任务以提高仿真的负载平衡。在图5所示例子中,在ME、LM和SM被分成相应子任务后,如果一个处理器正在处理ME502的一部分子任务,另一个处理器可以获取一个或多个剩余的ME子任务并处理。
请注意,上述技术子任务分配并为多个处理器所共享的技术可以同样适用于加载矩阵和求解矩阵任务的处理。例如,为了执行加载矩阵任务,一种方法是遍历所有的模型计算输出,然后加载每个输出值到矩阵中。这种方法在访问计算机的内存时可能会遇到冲突访问,不得不产生很大的开销,以避免写入相同的内存位置。另一种方法是遍历矩阵中的每个位置,从相对应的模型计算输出中取得所需值,并将其加到这个位置上。
根据本发明,诸如ME、LM、SM的仿真任务可视为主任务,主任务可以进一步被分为多个子任务,如图5中所示。分配和共享处理主任务的一种方法是周期的测量主任务所需时间,并以此调整负载平衡。
分配和共享处理主任务的另一种方法是,当一个处理器处于空闲状态时,如果有主任务还在等待被处理,那么这个处理器将永久获取某些等待状态的主任务并处理之。需要注意的是,“永久获取”的主要任务的意思是这个处理器将某个主任务放入该处理器自己的任务队列中并负责处理这个任务,直到另外的处理器将这个主任务取走。根据本发明,主任务可以被永久获取,而子任务则被临时获取以分配和共享任务处理,这意味着子任务的所有权仍属于该子任务相关联的主任务所属的处理器。这样,任务处理的顺序和不同子任务之间的关系都得以保持。
根据本发明,图6示出了另一种进行电路仿真的方法。如图6所示,该方法包含矩阵602,在矩阵602的位置A(604)和位置B(606)上集合了模型计算的输出。在这个例子中,位置A(604)需要ME Output1(模型计算输出1)、ME Output4和ME Output6的数据。这三个收集操作可以由多个处理器并行执行。同样,位置B(606)需要MEOutput7、ME Output28和ME Output30的数据。这三个收集操作可以由多个处理器并行执行。请注意,当一个处理器为一个位置收集数据时,该处理器将必须等待,直到相应数据变为可用。处理器之间通信的一种方法是提供一个标识,指示某个任务,例如MEOutput7,是否已经完成。在ME Output7结束之后,位置B的收集可以继续进行。这种方法好处是收集操作可以以任何顺序执行,只要用于收集从相应的模型计算输出数据变得可用。需要注意的是,从不同层次的电路结构的加载矩阵任务可以被分割并由多个处理器并行执行。在这种情况下,一个较低层的矩阵可以被加载到一个更高层的矩阵。
根据本发明,一电路的仿真任务可以由一组CPU和一组GPU所分配和共享。每个仿真任务可以包括但不限于,模型计算、矩阵求解、检查收敛性和预测下一时间步。GPU对模型计算更有效,而CPU则更有效地矩阵求解、检查收敛性和预测下一时间步。因此,每个仿真任务可以被划分为两个阶段:CPU更有效的阶段和GPU更有效阶段。在处理每个时间步的仿真任务时,可以构造这样的系统,在任务队列和模型计算队列直接切换,以管理分配仿真任务和执行负载平衡,来确保最佳的系统性能。
请注意为了效率,优选配置的GPU来执行数量很多的任务。这个系统对于数百万器件的大型电路运作良好。对于小型电路的仿真,为提高GPU的效率,多个模型计算任务可以被组合到一起进行处理。在一些仿真应用中,许多较小电路的多个实例被创建,这可能涉及数万的彼此独立的仿真。GPU可以应用与这中仿真,以提高效率。因为GPU被设计为并行处理大量的模型计算。在这种方式中,足够的任务可以被收集起来,使GPU保持工作,从而提高仿真的工作效率。
根据本发明的实施例,该系统可以被配置为在包含于模型计算队列和任务队列的任务之间执行负载平衡。GPU操作比CPU操作速度慢的情况下,CPU和相应的CPU工作线程在等待GPU的时候可以获取模型计算队列中的一个或多个任务。这种方法,系统卸载部分GPU负荷给CPU,令CPU保持忙碌。同样,在CPU操作速度慢于GPU的情况下,GPU和相应的GPU辅助线程在等待CPU的时候,可以从任务队列中获取一个或多个任务。这时候,系统卸载CPU的一些负荷给GPU,令GPU保持忙碌。
根据本发明,图7示出了一个电路仿真中执行动态负载平衡的示例性流程图。在块702,该仿真器被配置为识别要执行的复数个仿真任务。在块704,该仿真器被配置为确定对应于复数个仿真任务性能的执行持续时间估计。在块706,该仿真器被配置为根据每个仿真任务的执行持续时间估计为复数个处理器分配所述复数个仿真任务。在块708,该仿真器被配置为可在所述复数个处理器并行执行所述复数个仿真任务。所述复数个仿真任务包括模型计算任务、加载矩阵任务、和求解矩阵任务。
根据本发明的实施例,实现于704的逻辑进一步包括在块710中描述的逻辑。在块710中,该仿真器可以包括被配置为如下的逻辑:测量电路实时活跃程度的变化,测量电路实时活动激励的变化,识别电路中休眠部分,省略电路休眠部分的模型计算,以及省略电路休眠部分的矩阵求解。实现于块706中的逻辑进一步包括在块712中描述的逻辑。在块712中,该仿真器可以包括被配置为根据相应的执行持续时间估计对所述复数个仿真任务进行排序的逻辑。
根据本发明的实施例,实现于块708的逻辑进一步包括在块714中描述的逻辑。在块714中,该仿真器可以包括被配置为如下的逻辑:根据对应于复数个仿真任务性能的执行持续时间估计生成降序序列,依照所述执行持续时间估计的降序序列执行所述复数个仿真任务,其中执行持续时间估计最长的仿真任务最先处理。
根据本发明的实施例,仿真器进一步包括被配置为如下的逻辑:将所述复数个仿真任务分割为相应的复数个子任务,将相应的复数个子任务存储于一任务队列,将该任务队列中的相应的所述复数个子任务分配给复数个处理器以使处理相应的复数个子任务的仿真时间相一致,如块716所示。
根据本发明的实施例,实现于块716的逻辑进一步包括在块718中描述的逻辑。在块718中,该仿真器可以包括被配置为如下的逻辑:将模型计算任务分割为多个模型计算子任务,将加载矩阵任务分割为多个加载矩阵子任务,将求解矩阵任务分割为多个求解矩阵子任务。
根据本发明的实施例,实现于块718的逻辑进一步包括在块720中描述的逻辑。在块720中,该仿真器可以包括被配置为如下的逻辑:获取多个模型计算任务的记录,对每个模型计算任务遍历矩阵中的每个位置,并加载模型计算的输出到所述矩阵中。
根据本发明的实施例,实现于块720的逻辑进一步包括在块722和724中描述的逻辑。在块722中,该仿真器可以包括被配置为如下的逻辑:将层次式数据结构中不同层的加载矩阵任务分配到复数个处理器中,所述复数个处理器并行执行所述矩阵加载矩阵任务。在块724中,该仿真器可以包括被配置为如下的逻辑:复数个处理器并行加载矩阵中多个位置。
根据本发明的实施例,一个计算机程序产品包含一个非易失性介质,用于存储执行于一台或多台计算机系统的计算机程序。该计算机程序产品包括识别复数个被执行的仿真任务的逻辑,确定对应于所述复数个仿真任务性能的执行持续时间估计的逻辑,根据每个仿真任务的执行持续时间估计为复数个处理器分配所述复数个仿真任务的逻辑,在所述复数个处理器并行执行所述复数个仿真任务的逻辑。
所述复数个仿真任务包括模型计算任务、加载矩阵任务和求解矩阵任务。确定执行持续时间估计的逻辑包括测量电路实时活跃程度的变化的逻辑,测量电路实时活动激励的变化的逻辑,识别电路中休眠部分的逻辑,省略电路休眠部分的模型计算的逻辑,以及省略电路休眠部分的矩阵求解的逻辑。
分配所述复数个仿真任务的逻辑包括根据相应的执行持续时间估计排序所述复数个仿真任务的逻辑。执行复数个仿真任务的逻辑包括根据对应于所述复数个仿真任务性能的执行持续时间估计生成降序序列的逻辑,依照所述执行持续时间估计的降序序列执行所述复数个仿真任务,其中,执行持续时间估计最长的仿真任务最先处理。
计算机程序产品进一步包括将复数个仿真任务分割为相应的复数个子任务的逻辑,将相应的所述复数个子任务存储于一个任务队列的逻辑,将任务队列中的相应的所述复数个子任务分配给复数个处理器以使处理与相应的所述复数个子任务的仿真时间相一致的逻辑。
分割所述复数个仿真任务的逻辑包括将模型计算任务分割为多个模型计算子任务的逻辑,将加载矩阵任务分割为多个加载矩阵子任务的逻辑,将求解矩阵任务分割为多个求解矩阵子任务的逻辑。
将加载矩阵任务分割为多个加载矩阵子任务的逻辑进一步包括被配置为自多个模型计算任务获取记录的逻辑,被配置为对每个模型计算任务遍历矩阵中的每个位置的逻辑,被配置为加载模型计算的输出到矩阵中的逻辑。
将加载矩阵任务分割为多个加载矩阵子任务的逻辑进一步包括将层次式数据结构中不同层的加载矩阵任务分配到复数个处理器中的逻辑,复数个处理器并行执行矩阵加载任务的逻辑。执行多个加载矩阵任务的逻辑包括复数个处理器并行加载矩阵中多个位置。
上文描述的本发明的实施例,参考了不同的功能单元和处理器。然而,显而易见的是,在无损本发明的情况下,可以使用不同功能单元或处理器之间的任何合适的功能组合。例如,一个在多处理器或控制器执行的功能可能在单个的处理器或控制器上执行。因此,特定功能单元的引用应当被视为用于提供所述功能的合适手段,而不是专指于某种特定的逻辑、物理结构或组织结构。
本发明可以以任何适当的形式实现,包括硬件、软件、固件或它们的任意组合。本发明可以根据情况有选择的部分实现,比如计算机软件执行于一个或多个数据处理器以及数字信号处理器。本文的每个实施例的元素和组件可以在物理上、功能上、逻辑上以任何适当的方式实现。事实上,一个功能可以在独立单元中、在一组单元中、或作为其他功能单元的一部分来实现。因此,该系统和方法既可以在独立单元中实现,也可以在物理上和功能上分布于不同的单元和处理器之间。
在相关领域中的技术人员将会认识到,本发明的实施例有许多可能的修改和组合,虽然形式略有不同,仍采用相同的基本机制和方法。为了解释的目的,前述描述参考了几个特定的实施例。然而,上述的说明性讨论不旨在穷举或限制本文所发明的精确形式。前文所示,许多修改和变化是可能的。所选和所描述的实施例,用以解释本发明的原理及其实际应用,用以使本领域技术人员能够最好地利用本发明和各个实施例的针对特定应用的修改、变形。