Multiprocessor modeler and simulator

JP7644908B2Active Publication Date: 2025-03-13グドラプラディープ
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2021565819
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-05-06
Filing Date
2020-05-06
Publication Date
2025-03-13
Estimated Expiration
2040-05-06

Smart Images

  • Figure 0007644908000001
    Figure 0007644908000001
  • Figure 0007644908000002
    Figure 0007644908000002
  • Figure 0007644908000003
    Figure 0007644908000003
Patent Text Reader

Abstract

A solver for differential equations associated with engineering problems for distributed computing environments employing a distributed queuing strategy that does not require synchronization.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] (CROSS REFERENCE TO RELATED APPLICATIONS) This application claims the benefit of co-pending U.S. Provisional Application No. 62 / 843,780, filed May 6, 2019, the entire disclosure of which is incorporated by reference as if set forth in its entirety herein.

[0002] This disclosure relates to apparatus and methods for solving engineering problems, and more particularly to apparatus and methods for computationally solving differential equations that represent engineering problems, including manufacturing problems as well as physics-based simulation and visualization problems such as in augmented reality, virtual reality, gaming, and soft tissue modeling. [Background technology]

[0003] Engineering problems are typically modeled using partial differential equations (PDEs), which are often solved using computers. As shown in Figure 1, PDEs are solved on a computer using a computational modeling framework that involves several steps.

[0004] These steps involve reducing hyperbolic or parabolic PDEs to a set of ordinary differential equations (ODEs) using space-discretization. The ODEs are then time-discretized to obtain a set of algebraic equations. The set of algebraic equations is then solved using principles of linear algebra. Often, these steps are repeated iteratively until the desired numerical solution is obtained.

[0005] Elliptic PDEs describing the steady-state behavior can be reduced, by spatial discretization alone, to algebraic equations, which are then solved using the principles of linear algebra, via direct or iterative techniques.

[0006] Common choices for spatial discretization of PDEs include the Finite Element Method (FEM), Finite Difference Method (FDM), Finite Volume Method (FVM), Particle Method (PM), and Meshless Method (MM), etc. Well-known methods for time discretization (or time integration) include explicit and implicit Euler's methods, Newmark method, Runga-Kutta method, and multistep methods, to name a few. Direct methods based on linear algebra for solving algebraic equations include Gauss elimination, LU decomposition, etc. Widely used iterative methods for solving algebraic equations include the multigrid method, the fixed point iterative method, the conjugate gradient method, and the like.

[0007] These methods have been widely used to successfully solve a number of problems. However, these techniques do not scale well for use in distributed computing environments or on today's multiprocessor chips because these methods were traditionally designed to produce serial instructions and be programmed on a single processor computer for execution.

[0008] Much effort has been expended on parallelizing serial implementation algorithms, especially on parallelizing the solution during time step updates or iterations. However, the synchronization requirement at the end of each time step or iteration incurs significant communication costs. As a result, in a distributed memory architecture, the maximum speedup achieved is determined by the communication bandwidth available for data exchange between processors. In a hierarchical or shared memory architecture, the bandwidth available for accessing remote memory locations will determine the maximum speedup achieved. Thus, the prior art approaches cannot fully utilize large-scale computing resources as well as new generation multiprocessor architectures. As hardware manufacturers increase the number of computing cores to improve performance, it will become increasingly difficult to leverage the benefits from these developments in architectures to solve engineering problems.

[0009] Therefore, there is a need for improved solutions that avoid the shortcomings of existing methods. Summary of the Invention

[0010] This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description section. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

[0011] The embodiments described herein relate to a distributed solver for differential equations commonly encountered when solving engineering problems. The embodiments of the invention eliminate the last vestiges of the serial nature of computational methods designed decades ago, ensuring that scientific computations are no longer limited by communication constraints and enabling faster simulations of all magnitudes in distributed computing environments.

[0012] In one aspect, embodiments of the present invention relate to a computer-implemented method for solving engineering problems, the method including receiving, at an interface, a geometric description of a problem domain, a partial differential equation, and a plurality of boundary conditions that represent an engineering problem. The partial differential equation and the plurality of boundary conditions in the problem domain are converted into at least one algebraic equation using a discretizer. The at least one algebraic equation is decomposed into a plurality of local vectors of solution using a partitioner. Each local vector is assigned to a processor for solving using a scheduler. An error controller keeps an error in each local vector below a particular value or minimizes the error for faster convergence. The solution to the partial differential equation and the plurality of boundary conditions is communicated using an interface.

[0013] In this manner, each processor solves its assigned local vectors without waiting for data from other processors or from a remote memory location while tracking the solution error associated with solving the local vector.

[0014] In some embodiments, converting the partial differential equations and the plurality of boundary conditions into at least one algebraic equation comprises at least one of a spatial discretization and a time discretization. In some embodiments, the converting comprises a spatial discretization selected from the group consisting of a finite element method (FEM), a finite difference method (FDM), a finite volume method (FVM), a particle method (PM) and a meshless method (MM). In some embodiments, the converting comprises a time discretization selected from the group consisting of an explicit Euler method, an implicit Euler method, a Newmark method, a Runge-Kutta method and a multi-step method.

[0015] In some embodiments, the error controller for time domain analysis adapts at least one discretization parameter of each local vector independent of other local vectors to keep the error of the solution below a certain value, in some embodiments, the at least one discretization parameter is related to a time discretization, a space discretization, or both.

[0016] In some embodiments, local vectors are reallocated at run-time by the scheduler among multiple processors to reduce time variation or evolution differences among the multiple processors.

[0017] In some embodiments, allocated local vectors with current data are prioritized over allocated local vectors waiting for data.

[0018] In another aspect, embodiments of the present invention relate to a system for solving engineering problems. The system includes a memory, a plurality of processors, an interface, a discretizer, a divider, a scheduler, and a bus. The memory has computer executable instructions and data stored in the memory. Each of the processors is in communication with the memory and the other processors and has a queue for computational tasks. The interface is configured to receive a geometric description of a problem domain, a partial differential equation, and a plurality of boundary conditions that represent an engineering problem, and to output a solution to the partial differential equation and the plurality of boundary conditions. The discretizer converts the partial differential equation in the problem domain into at least one algebraic equation. The divider converts the at least one algebraic equation into a plurality of local vectors for a solution. The scheduler assigns each local vector to a processor for solving. The bus is for intermittent communications between the processors and the memory.

[0019] In this manner, each processor solves its assigned local vector without waiting for data from other processors or from a remote memory location while tracking the solution error associated with solving the local vector.

[0020] In one embodiment, the memory is at least one of a distributed memory architecture, a shared memory architecture, and a hierarchical memory architecture.

[0021] In some embodiments, the discretizer converts the partial differential equation into at least one algebraic equation using at least one of a spatial discretization and a time discretization. In some embodiments, the discretizer utilizes a spatial discretization selected from the group consisting of a finite element method (FEM), a finite difference method (FDM), a finite volume method (FVM), a particle method (PM) and a meshless method (MM). In some embodiments, the discretizer utilizes a time discretization selected from the group consisting of an explicit Euler method, an implicit Euler method, a Newmark method, a Runge-Kutta method, and a multi-step method.

[0022] In some embodiments, the error controller for time domain analysis adapts at least one discretization parameter of each local vector independent of other local vectors to keep the error of the solution below a certain value, in some embodiments, the at least one discretization parameter is related to a time discretization, a spatial discretization, or both.

[0023] In some embodiments, the scheduler reallocates local vectors at run-time among the processors to reduce time-varying or evolution differences among the processors.

[0024] In some embodiments, allocated local vectors with current data are prioritized over allocated local vectors waiting for data. [Brief description of the drawings]

[0025] The accompanying drawings are not intended to be drawn to scale. In the drawings, each of the identical or nearly identical components shown in various figures may be represented by a like numeral. For clarity, not every component may be labeled in every drawing. Various embodiments will be described by way of example with reference to the accompanying drawings, in which: [Figure 1] 1 shows a computational modeling framework in the prior art. [Diagram 2] 1 illustrates an embodiment of a solver according to the present invention. [Diagram 3] 1 is a flow chart of a method for solving an engineering problem in accordance with the present invention. [Figure 4] 4 is a flowchart showing steps 312 to 316 of FIG. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0026] As a preliminary matter, it will be readily understood by those skilled in the art that the present invention has broad utility and application. As should be understood, any embodiment may include any one of the disclosed features or any combination of the disclosed features. Furthermore, many embodiments, such as adaptations, variations, modifications, and equivalent arrangements, are implicitly disclosed by the embodiments described herein and fall within the scope of the present invention.

[0027] Thus, although the present invention has been described in detail herein with respect to one or more embodiments, it should be understood that the disclosure is illustrative or exemplary of the present invention and is made merely for the purpose of providing a full and enabling disclosure of the present invention. The detailed disclosure herein of one or more embodiments is not intended, and should not be construed, as limiting the scope of patent protection afforded to the present invention, which scope should be defined by the claims and their equivalents. It is not intended that the scope of patent protection afforded to the present invention be defined by reading into any claim any limitations found in the specification that are not expressly appearing in the claim itself.

[0028] Thus, for example, any sequences and / or temporal orders of steps of various processes or methods described herein are illustrative and not limiting. Thus, although the steps of various processes or methods may be shown and described as being in a certain sequence or temporal order, it should be understood that the steps of any such process or method are not limited to being performed in any particular sequence or order unless otherwise indicated. In fact, steps in such processes or methods may generally be performed in a variety of different sequences and orders while still being within the scope of the invention.

[0029] In addition, it is important to note that the terms used herein refer to the meanings that a person of ordinary skill in the art would understand the meaning of such terms based on the contextual use of the term herein. If the meaning of such terms used herein (as understood by a person of ordinary skill in the art based on the contextual use of the term) differs in any way from any particular dictionary definition of such terms, it is intended that the meaning of the terms as understood by a person of ordinary skill in the art shall prevail.

[0030] With respect to the applicability of 35 U.S.C. ...

[0031] Moreover, it is important to note that, as used herein, "a" and "an" each generally mean "at least one," but do not exclude a plurality unless the contextual usage dictates otherwise. Thus, a "picnic basket with apples" refers to a "picnic basket with at least one apple" and a "picnic basket with multiple apples." In contrast, a "picnic basket with a single apple" refers to a "picnic basket with only one apple."

[0032] When "or" is used herein to join a list of items, it means "at least one item," but does not exclude more than one item of the list. Thus, a "picnic basket with cheese or crackers" refers to a "picnic basket with cheese but no crackers," a "picnic basket with crackers but no cheese," and a "picnic basket with both cheese and crackers." Finally, when "and" is used herein to join a list of items, it means "all of the items in the list." Thus, a "picnic basket with cheese and crackers" refers to a "picnic basket with cheese" (where the picnic basket also has crackers) and a "picnic basket with crackers" (where the picnic basket also has cheese).

[0033] Referring now to the drawings, in which like numerals represent like elements throughout the several views, one or more embodiments of the present invention will now be described. The following description of the one or more embodiments is merely exemplary in nature and is in no way intended to limit the invention, its application, or uses.

[0034] Embodiments of the present invention work particularly well in distributed computing environments or multi-processor chips because they employ a distributed queuing strategy that completely removes synchronization requirements and transforms communication bound simulations into embarrassingly parallel simulations using a combination of independent updates, error control and load distribution algorithms, as described below: That is, compared to prior art solvers (mentioned above), embodiments of the present invention do not require synchronization between distributed processors, nor do they require the satisfaction of causality conditions in time domain analysis, i.e., requiring that all calculations for adjacent subdomains at time t be completed before starting calculations for time t+dt.

[0035] 2 is a block diagram of one embodiment of a solver 200 implementing the distributed queuing strategy of the present invention. The solver 200 includes an interface 204, a discretizer 208, a partitioner 212, a scheduler 216, a number of processors 220(n), an error controller 224, a memory 228, and a system bus 232 that interconnects these components and allows them to communicate with each other.

[0036] Those skilled in the art will recognize that each of these depicted elements is somewhat abstract. Any or all of these elements may be implemented in software running on off-the-shelf hardware, as custom hardware (such as application specific integrated circuits), or as a combination thereof. Furthermore, the same hardware component may implement multiple elements. For example, discretizer 208 and divider 212 may be implemented as software processes running on the same general purpose central processing unit, "processor" 220(n) may be a physical or virtual processor running on a local integrated circuit or in a remote cloud computing platform, etc. Similarly, while certain embodiments feature a single element such as a scheduler or error controller and provide multiple processors and other elements, in other embodiments a "single" scheduler may fully include multiple schedulers, with each scheduler associated with a processor or other element.

[0037] The interface 204 enables communication with the solver 200. For example, a user may provide the solver 200 with one or more partial differential equations with boundary conditions, which represent an engineering problem, and a geometric description of the problem domain, using the interface 204, such as a keyboard, voice recognition, or an imager that captures and decodes images of the differential equations. In other embodiments, the interface 204 may enable programmatic communication, for example through a software or graphical user interface, that allows a three-dimensional model of the problem domain, the differential equations, and the boundary conditions to be presented directly or indirectly to the solver 200.

[0038] After the solver 200 receives one or more partial differential equations with boundary conditions and a three-dimensional model of the problem domain at the interface 204, the discretizer 208 applies a discretization technique to convert the partial differential equations into a system of algebraic equations. This may take the form of, for example, converting the partial differential equations into ordinary differential equations using spatial discretization, and then time-discretizing the ordinary differential equations to obtain a system of algebraic equations for the solution. Alternatively, a system of elliptic partial differential equations may be presented to the interface 204, which may eliminate the need for time discretization; a system of ordinary differential equations may be presented to the interface 204, which may eliminate the need for spatial discretization; a system of algebraic equations may be presented directly to the interface 204, which may eliminate the need for the discretizer 208 altogether, and so on.

[0039] The system of algebraic equations for the solution is provided to a divider 212 which decomposes a global vector associated with the system into a set of local vectors. Each set of local vectors is associated with a subdomain. Note that several of the sets of local vectors may be associated with the same subdomain, representing different physics or different length scales, etc.

[0040] The scheduler 216 assigns each local vector to a processor 220(n) for solving. Each processor has its own queue of computational tasks (not shown). In some embodiments, after a processor 220(n) finishes updating its assigned local vector, it returns its index to the scheduler 216, which then reallocates the local vector to another processor 220(n). This may or may not be the same processor 220(n) that returned the index to the scheduler 216, as described below. In some embodiments, this reallocation may be done to take into account resource constraints or to achieve a uniform time change or evolution between sub-regions or between errors introduced in the solving process.

[0041] This approach has the advantage of achieving near full utilization of processor computing cycles because the processor does not wait for data from other processors or from remote memory locations. This remains true not only in heterogeneous computing environments, such as cloud computing environments where the communication bandwidth between processors is not uniform, and multi-processor chips where the memory bandwidth for accessing memory is not uniform, but even in high latency computations, i.e., where all processors experience delays in receiving data in a consistent manner.

[0042] Computationally, the update of each local vector requires information from other local vectors that may or may not be assigned to the same processor 220(n). An index from the list on processor 220(n) is selected based on some criteria, and the local vector associated with the index is examined for updating. If all current data required to update the local vector is available, the update step is given higher priority and / or the update step is performed. If all or part of the current data required to update the local vector is not available, the selected index is pushed to a wait list queue. Another index is selected from the list and the process is repeated. When the list is empty, the local vector from the wait list queue is updated even though it does not have a current copy of the required data.

[0043] In essence, a local vector is updated without waiting for current data when there are no other local vectors on the processor for which all current data for updating is available. Overall, a processor is never idle while waiting for data from other processors, and there is a higher priority to evaluating local vectors for which all current data is available over local vectors that are waiting for data from other processors.

[0044] However, this independent update approach effectively translates communication costs into computational errors. The additional computational errors may result in an increased number of iterations before convergence during the solution of elliptic partial differential equations, which may lead to numerical instabilities in time-domain analysis. Therefore, embodiments of the present invention employ an error control strategy based on local error estimates. In particular, during each update of the local state vector, various parameters of the discretization (e.g., mesh size, time step length, etc.) may be adjusted by the error controller 224 to keep or minimize the estimated error below a desired threshold, thereby maintaining accuracy or improving the convergence of the solution.

[0045] The adjustment of the discretization by the error controller 224 may be a single-step process, where the discretization parameters are adapted as the local vectors are updated. This allows for independent updates of the local vectors, which plays an important role in translating the additional error resulting from delays in the current data into more arithmetic operations or flops for the time-domain analysis. As a result, asynchronous time stepping methods are a popular choice for time-domain discretization, allowing independent time steps to be used for each local vector, and thus, of course, independent updates during the time-domain analysis. Since the present invention uses a local copy of the data instead of the current data to avoid the high cost of network or memory latency, a better approximation of the current data using historical values ​​would help reduce the cost of delays. However, some of the discretization parameters adjusted by the error controller 224 may be a two-step process, such as mesh element size adaptation in mesh-based simulation. Based on the error estimates due to spatial discretization, some of the local vectors are staged for refinement or de-refinement. After each few updates, mesh refinement / de-refinement of all local vectors or associated sub-regions is performed. Such adjustments may require coordination between local processors. Also, such adjustments can be easily performed without waiting or incurring minimal delays.

[0046] The specific parameters available for adjustment will depend on the differential equation and the discretization method used. For example, when solving elliptic or parabolic partial differential equations, only the spatial discretization can be adapted. Similarly, when solving hyperbolic or parabolic partial differential equations, no adaptation of the time step is allowed when using finite difference methods. In finite element and finite volume methods, the spatial discretization is done first, and therefore no adaptation of the mesh size is allowed. Only when both the spatial and time domains are discretized simultaneously are both the time step and the mesh size allowed to be changed. In more recent classes of discretization methods, including meshless methods, one or more of the time discretization, nodal density, and other solution enrichment parameters may be changed.

[0047] In some embodiments, computational errors introduced by the independent evolution of different local vectors among different processors may be mitigated by reallocating computational resources. For example, if some of the local vectors are evolving slowly, i.e., consume more processor time per time step or iteration, e.g., due to larger computational requirements, the evolution of neighboring local vectors will be slower and eventually the whole system will be slower. In response, the scheduler 216 may allocate additional computational resources to those vectors or reallocate local vectors among the processors 220(n) to help reduce errors due to non-uniformity in the evolution of local vectors among the processors and minimize the duration of the simulation. Depending on the architecture implementing the solver, which may be a distributed memory architecture 228, a shared memory architecture 228, or a hierarchical memory architecture 228 that is a combination of both, the specific implementation of the load balancing algorithm may be different.

[0048] 3 presents a flow chart of a method for solving an engineering problem according to the present invention. The process begins by receiving at an interface a three-dimensional model of a problem domain, partial differential equations and boundary conditions that represent an engineering problem (step 300). The three-dimensional model with the partial differential equations and boundary conditions is converted into at least one algebraic equation using a discretizer (step 304). The at least one algebraic equation is then decomposed into multiple local vectors for solution using a divider (step 308). Each local vector is assigned to a processor for solving using a scheduler (step 312).

[0049] Each processor solves its assigned local vector independently of the other assigned processors and without waiting for data from the other processors. Meanwhile, the error controller monitors the error associated with each local vector and takes appropriate measures to minimize or maintain the error within a desired level (step 316). In some embodiments, the error controller will adjust the discretization parameters (e.g., time discretization) independently of the other local vectors (through a single step adjustment of the discretization) to bound the error. In some embodiments, the scheduler will reallocate local vectors at run time to bound the error. Once the solving is complete, it is signaled using an interface (step 320).

[0050] FIG. 4 presents an expanded flowchart of the process of allocating and solving local vectors according to the present invention. As described above, after an algebraic equation is decomposed into multiple local vectors (step 308), the multiple local vectors are allocated among multiple processors for solving (step 312). Each processor (p) is assigned multiple local vectors (step 400) and maintains a list (Qp), a waiting queue (Wp), and a message queue (Mp) that stores messages in a first-in, first-out manner. The indexes of the multiple local vectors assigned to each processor are listed in Qp, while Wp and Mp, which store ordered lists of the indexes of the multiple local vectors waiting for data from other processors, are both initialized as empty queues (step 404). Generally speaking, in Wp, a local vector with the smallest growth is prioritized for updating over a local vector that is ahead in its growth.

[0051] Execution begins with each processor checking the index of its Qp (step 408). If Qp is not empty, an index j is selected from Qp such that the evolutionary separation between all local vectors assigned to a particular processor p is minimized (step 420), and the current data, i.e., the associated local vector (i.e., x [j] ) is available (step 424). If the current data is not available, index j is inserted into Wp (step 428) so that less-progressive local vectors are higher in the queue than more-progressive local vectors, and the process is repeated, starting again by checking the index of Qp (step 408).

[0052] If the current data is available, the local vector x [j]is updated, the update is propagated to all local vectors that need the updated data, and if any of the local vectors that received the updated data are in Wp, they are returned to Qp (step 432). [j] If any of the local vectors that require updated data from are assigned to another processor, the updated information is sent to a communication buffer (not shown). Once enough data is available from the communication buffer to send to the destination processor, a non-blocking communication is sent to the remote processor and the data is pushed into a message queue on the remote processor (not shown).

[0053] If the termination criterion (step 436) is not met, the index j is listed back in Qp (step 440). [j] has evolved to a desired level and does not require any further updates, [j] If satisfies the termination criterion (step 436), the local vector x [j] is omitted.

[0054] Regardless of whether the termination criteria (step 436) are met, the load balancing algorithm may optionally be invoked when certain criteria are met (step 444) and the message queue may optionally be checked (step 448) before the process begins again by checking if Qp is empty (step 408). The load balancing algorithm (step 444) essentially reallocates local vectors among the processors such that the evolution of local vectors among the processors is uniform. In one embodiment, the load balancing algorithm includes moving the least evolved local vectors to the processor hosting the most evolved local vector with some frequency.

[0055] Similarly, if the criteria for checking the message queue are met, all messages from Mp are popped and sent to their destinations (step 448). If any of the local vectors that received data from these messages are waiting in Wp, they are forwarded to Qp to see if they are ready to be updated (step 448).

[0056] During execution, whenever Qp is found to be empty (step 408), Wp is checked to see if it is empty (step 412). If Wp is not empty, the top index from Wp is popped, the associated local vector is updated, the update is propagated, and if any of the local vectors that would receive the update are in that processor's Wp, they are moved to those processors' Qp (step 416). Again, control passes to check if Qp is empty (step 408) and the process is repeated.

[0057] When Qp is empty and there are no more local vectors waiting for additional data, i.e., Wp is empty (step 412), the processors stop executing any tasks and wait for the simulation to finish (step 414). The simulation ends when all processors stop executing and the simulation results are transferred. The embodiment of FIG. 4 is an example of an implementation in a distributed memory architecture, and may not be the only or most efficient implementation, as recognized by those skilled in the art. The actual implementation may vary dramatically for different applications among different architectures, taking advantage of new and advanced parallel programming concepts, new software libraries (including those provided by hardware manufacturers), etc.

[0058] It should be understood that the various features, elements, methods, or processes of the foregoing drawings and description are interchangeable or combinable to achieve implementations described herein. Aspects of the present application may be practiced with implementations other than those described. The described implementations are presented for purposes of illustration and not limitation. Aspects of the present application are limited only by the scope of the following claims.

[0059] Based on the above information, one skilled in the art will readily appreciate that the present invention may have a wide range of utility and applications. Numerous embodiments and adaptations of the present invention other than those specifically described herein, as well as numerous variations, modifications and equivalent arrangements, will be apparent from, or will be reasonably suggested by, the present invention and the foregoing description thereof, without departing from the spirit or scope of the present invention.

[0060] Thus, while the invention has been described in detail herein with respect to one or more preferred embodiments, it should be understood that the disclosure is merely illustrative and exemplary of the invention and is intended merely to provide a full and enabling disclosure of the invention. The foregoing disclosure should not be construed as limiting the invention or otherwise excluding any such other embodiments, adaptations, variations, modifications, or equivalent constructions; the invention is limited only by the claims appended hereto, and equivalents thereof.

Claims

1. 1. A computer-implemented method for corresponding performance in a computer program execution environment, comprising: receiving, at an interface, a geometric description of a problem domain, partial differential equations, and a plurality of boundary conditions that represent an engineering problem; converting the partial differential equation and the plurality of boundary conditions in the problem domain into at least one algebraic equation using a discretizer; decomposing the at least one algebraic equation into a plurality of local vectors for a solution using a divider; assigning, using a scheduler, each local vector to one of a plurality of processors for solving, where the processors assign a priority to each local vector based on the availability of current data needed to update the local vector, and each local vector is updated by the processors in the order of the assigned priority; estimating a solution error associated with solving each local vector with an error controller, where the error controller adapts at least one discretization parameter of each local vector independent of the other local vectors to keep the solution error below a threshold; and outputting a solution to the partial differential equation and the plurality of boundary conditions using the interface; Including, The method of claim 1, wherein each processor solves its assigned local vectors without waiting for data from other processors or from a remote memory location while tracking the solution error associated with solving the local vectors.

2. The method of claim 1 , wherein converting the partial differential equation and the plurality of boundary conditions into at least one algebraic equation includes at least one of spatial and temporal discretization.

3. 3. The method of claim 2, wherein the converting step includes a spatial discretization selected from the group consisting of a finite element method (FEM), a finite difference method (FDM), a finite volume method (FVM), a particle method (PM) and a meshless method (MM).

4. The method of claim 2 , wherein the converting step includes a time discretization selected from the group consisting of an explicit Euler method, an implicit Euler method, a Newmark method, a Runge-Kutta method, and a multi-step method.

5. The method of claim 1 , wherein the at least one discretization parameter relates to a time discretization, a spatial discretization, or both.

6. 2. The method of claim 1, wherein the scheduler reallocates local vectors at run-time among the processors to reduce time-varying or evolutionary differences among the processors.

7. 2. The method of claim 1, wherein allocated local vectors with current data are prioritized over allocated local vectors waiting for data.

8. The method of claim 1 , wherein the one or more processors update the local vectors using local approximations of current data based on historical values.

9. 9. The method of claim 8, wherein one or more of the processors update the local vectors with either current data, non-current local copy data, or the local approximation of the current data.

10. 10. The method of claim 9, wherein the error controller estimates an error in the solution associated with updating local vectors by updating the local vectors with either current data, non-current local copy data, or the local approximation of the current data.

11. The method of claim 1 , wherein the remote memory is at least one of a distributed memory architecture, a shared memory architecture, and a hierarchical memory architecture.

12. A system for performing a corresponding operation in a computer program execution environment, comprising: a memory having a plurality of computer executable instructions and data stored in said memory; a plurality of processors, each processor in communication with the memory and the other processors, each processor having a queue of a plurality of computational tasks; an interface configured to receive a geometric description of a problem domain, a partial differential equation, and a plurality of boundary conditions, which represent an engineering problem, and to output a solution to the partial differential equation and the plurality of boundary conditions; a discretizer for converting the partial differential equations in the problem domain into at least one algebraic equation; a decomposer for decomposing the at least one algebraic equation into a plurality of local vectors for a solution; a scheduler that assigns each local vector to one of a plurality of processors for solving, where the processors are configured to give each local vector a priority based on the availability of current data needed to update the local vector, and where each local vector is updated by the processors in the order of the given priority; an error controller configured to estimate a solution error associated with updating the local vectors, where the error controller adapts at least one discretization parameter of each local vector independent of other local vectors to keep the solution error below a threshold; and a bus for continuous communication between the processors, the memory, and the error controller; Including, A system in which each processor solves its assigned local vector without waiting for data from other processors or from a remote memory location while tracking errors in the solution.

13. 13. The system of claim 12, wherein the memory is at least one of a distributed memory architecture, a shared memory architecture, and a hierarchical memory architecture.

14. The system of claim 12 , wherein the discretizer converts the partial differential equation into at least one algebraic equation using at least one of a spatial discretization and a temporal discretization.

15. 15. The system of claim 14, wherein the discretizer utilizes a spatial discretization selected from the group consisting of a finite element method (FEM), a finite difference method (FDM), a finite volume method (FVM), a particle method (PM) and a meshless method (MM).

16. The system of claim 14 , wherein the discretizer utilizes a time discretization selected from the group consisting of an explicit Euler method, an implicit Euler method, a Newmark method, a Runge-Kutta method, and a multi-step method.

17. The system of claim 12 , wherein the at least one discretization parameter relates to a time discretization, a spatial discretization, or both.

18. 13. The system of claim 12, wherein the scheduler reallocates local vectors at run-time among the processors to reduce time-varying or evolving differences among the processors.

19. 13. The system of claim 12, wherein allocated local vectors with current data are prioritized over allocated local vectors waiting for data.

Citation Information

Patent Citations

  • Task scheduling system of multiprocessor system

    JP1995114518A

  • Document processor, document processing method and computer readable recording medium in which program to make computer execute the same method is stored

    JP2000330977A

  • Area dividing method for analysis of various problems of solid dynamics and method for discretely analyzing various problems of solid dynamics

    JP2000339297A

  • Systems, methods, and devices for image reconstruction using combined PDE-constrained and simplified spherical harmonics algorithm

    US20150286785A1