Using Flow Graph Patents (Class 717/156)
  • Patent number: 9038036
    Abstract: A method of generating an executable that operates as a compiler includes: receiving a unified input description containing syntax rules for both regular and context-free expressions and interspersed code; generating a common internal representation from the unified input description; checking regular expressions in the common internal representation; checking context-free expressions in the common representation; checking the interspersed code; and outputting the executable.
    Type: Grant
    Filed: April 27, 2012
    Date of Patent: May 19, 2015
    Assignee: International Business Machines Corporation
    Inventors: Wolfgang Gellerich, Andreas Krebbel
  • Patent number: 9032380
    Abstract: A device receives program code, generated via a technical computing environment (TCE) and including code that requires further processing to execute, and identifies one or more function calls or one or more object method calls in the program code. The device creates a control flow graph, for the program code, based on the one or more function calls or the one or more object method calls. The device transforms the control flow graph into a data flow graph. The data flow graph includes a representation for each of the one or more function calls or the one or more object method calls. The device generates hardware code based on the data flow graph, the hardware code including code that does not require further processing to execute.
    Type: Grant
    Filed: December 4, 2012
    Date of Patent: May 12, 2015
    Assignee: The MathWorks, Inc.
    Inventors: Navaneetha K. Ruthramoorthy, Kiran K. Kintali
  • Patent number: 9026987
    Abstract: System and method for performing program-related operations over a network via a web browser. A network connection is established between a server computer and a client computer over a network. A universal resource identifier (URI) is sent from the client computer to the server computer over the network, where the URI indicates a program, e.g., a graphical program (GP), or at least a portion of a graphical program interactive development environment (GPIDE), e.g., a graphical program editor, an execution engine, a static or dynamic analyzer, and/or compiler. The at least a portion of the GPIDE is received from the server computer over the network in response to the URI, and executed in a web browser of the client computer to perform some specified functionality with respect to the GP.
    Type: Grant
    Filed: October 2, 2009
    Date of Patent: May 5, 2015
    Assignee: National Instruments Corporation
    Inventor: Christopher G. Cifra
  • Patent number: 9021451
    Abstract: In one embodiment, a method for call graph analysis is provided. The method includes determining a plurality of nodes in a call graph. The plurality of nodes represent resource consumption of functions of a software program executed in a software system. A simplification factor is determined. A first set of nodes in the plurality of nodes is then eliminated based on exclusive values for the plurality of nodes, inclusive values for the plurality of nodes, and the simplification factor. An inclusive value for a node is a first amount of resources consumed by the node and any descendent nodes of that node. An exclusive value for the node is a second amount of resources consumed by the node. A simplified call graph is output including a second set of nodes in the plurality of nodes. The second set of nodes does not include the eliminated first set of nodes.
    Type: Grant
    Filed: June 25, 2013
    Date of Patent: April 28, 2015
    Assignee: SAP SE
    Inventors: Cheolman Park, Chan Young
  • Patent number: 9015687
    Abstract: Systems and methods of allocating physical registers to variables may involve identifying a partial definition of a variable in an inter-procedural control flow graph. A determination can be made as to whether to terminate a live range of the variable based at least in part on the partial definition. Additionally, a physical register may be allocated to the variable based at least in part on the live range.
    Type: Grant
    Filed: March 30, 2011
    Date of Patent: April 21, 2015
    Assignee: Intel Corporation
    Inventors: Biju George, Guei-Yuan Lueh
  • Patent number: 9013574
    Abstract: A machine vision system program editing environment including synchronized selection and/or identification of related features in a plurality of different user interface windows is provided. In particular, one of the windows is an editing window where a part program representation is displayed for editing by a user. In one embodiment, a user may select data or another feature of interest in a window that is not the editing window (e.g., a results window, or graphical workpiece inspection feature display window) and the associated part program instruction representation is automatically highlighted and/or selected in the editing window. Conversely, a part program instruction representation may be selected by a user in the editing window and the associated results or feature in another window is automatically highlighted and/or selected. User interface navigation, rapid program quality assessment, and overall part program creation and editing efficiency are significantly enhanced in such an editing environment.
    Type: Grant
    Filed: November 13, 2012
    Date of Patent: April 21, 2015
    Assignee: Mitutoyo Corporation
    Inventors: Barry Saylor, Ryan Northrup, Akira Takada, Kozo Ariga
  • Patent number: 9003383
    Abstract: The subject system provides the ability to parallelize pre-existing serial code by importing and encapsulating all of the serial code into an object orientated flowchart language utilizing an analytic engine so that the imported code can be efficiently executed taking advantage of the partially ordered transitive flowchart system. The importation examines the serial code to ascertain what elements may be processed under an atomic time to instantiate them as either Action or Test objects, whereas statements which require more than atomic time are instantiated as Task object, with the Action, Test and Task objects being processable by separate processors to establish parallel processing, or by the multitasking afforded by the partially ordered transitive flowchart system.
    Type: Grant
    Filed: July 5, 2012
    Date of Patent: April 7, 2015
    Assignee: You Know Solutions, LLC
    Inventors: Ronald J. Lavallee, Thomas C. Peacock
  • Patent number: 9003377
    Abstract: Unsuspended co-routines are handled by the machine call stack mechanism in which the stack grows and shrinks as recursive calls are made and returned from. When a co-routine is suspended, however, additional call stack processing is performed. A suspension message is issued, and the entire resume-able part of the call stack is removed, and is copied to the heap. A frame that returns control to a driver method (a resumer) is copied to the call stack so that resumption of the co-routine does not recursively reactivate the whole call stack. Instead the resumer reactivates only the topmost or most current frame called the leaf frame. When a co-routine is suspended, it does not return to its caller, but instead returns to the resumer that has reactivated it.
    Type: Grant
    Filed: January 7, 2010
    Date of Patent: April 7, 2015
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Neal M. Gafter, Mads Torgersen, Henricus Johannes Maria Meijer, Niklas Gustafsson
  • Patent number: 8984493
    Abstract: A method for distributed static analysis of computer software applications, includes: statically analyzing instructions of a computer software application; identifying at least one entry point in the computer software application; assigning a primary agent to statically analyze the computer software application from the entry point; assigning a secondary agent to statically analyze a call site encountered by the primary agent and produce a static analysis summary of the call site; and presenting results of any of the static analyzes via a computer-controlled output device.
    Type: Grant
    Filed: April 23, 2013
    Date of Patent: March 17, 2015
    Assignee: International Business Machines Corporation
    Inventors: Marco Pistoia, Omer Tripp, Omri Weisman
  • Patent number: 8957960
    Abstract: A machine vision system program editing environment includes near real time context generation. Rather than requiring execution of all preceding instructions of a part program in order to generate a realistic context for subsequent edits, surrogate data operations using previously saved data replace execution of certain sets of instructions. The surrogate data may be saved during the actual execution of operations that are recorded in a part program. An edit mode of execution substitutes that data as a surrogate for executing the operations that would otherwise generate that data. Significant time savings may be achieved for context generation, such that editing occurs within an operating context which may be repeatedly refreshed for accuracy in near real time. This supports convenient program modification by relatively unskilled users, using the native user interface of the machine vision system, rather than difficult to use text-based or graphical object-based editing environments.
    Type: Grant
    Filed: November 15, 2011
    Date of Patent: February 17, 2015
    Assignee: Mitutoyo Corporation
    Inventors: Barry Saylor, Dahai Yu, Ryan Northrup, Gyokubu Cho, Akira Takada
  • Patent number: 8959499
    Abstract: A data parallel pipeline may specify multiple parallel data objects that contain multiple elements and multiple parallel operations that operate on the parallel data objects. Based on the data parallel pipeline, a dataflow graph of deferred parallel data objects and deferred parallel operations corresponding to the data parallel pipeline may be generated and one or more graph transformations may be applied to the dataflow graph to generate a revised dataflow graph that includes one or more of the deferred parallel data objects and deferred, combined parallel data operations. The deferred, combined parallel operations may be executed to produce materialized parallel data objects corresponding to the deferred parallel data objects.
    Type: Grant
    Filed: September 20, 2013
    Date of Patent: February 17, 2015
    Assignee: Google Inc.
    Inventors: Craig D. Chambers, Ashish Raniwala, Frances J. Perry, Stephen R. Adams, Robert R. Henry, Robert Bradshaw, Nathan Weizenbaum
  • Patent number: 8954945
    Abstract: A computer program product is provided for splitting a live-range of a variable in frequently executed regions of program instructions. The live-range of a variable is split into multiple sub-ranges, each of which can be assigned to a different register or spilled into memory. The amount of spill code is reduced in frequently used regions of code by coalescing the live ranges based on profile information obtained after splitting the live ranges at every join and fork point in a control flow graph.
    Type: Grant
    Filed: July 16, 2013
    Date of Patent: February 10, 2015
    Assignee: International Business Machines Corporation
    Inventors: Tatsushi Inagaki, Hideaki Komatsu, Takuya Nakaike
  • Patent number: 8954944
    Abstract: A system is provided for splitting a live-range of a variable in frequently executed regions of program instructions. The live-range of a variable is split into multiple sub-ranges, each of which can be assigned to a different register or spilled into memory. The amount of spill code is reduced in frequently used regions of code by coalescing the live ranges based on profile information obtained after splitting the live ranges at every join and fork point in a control flow graph.
    Type: Grant
    Filed: July 16, 2013
    Date of Patent: February 10, 2015
    Assignee: International Business Machines Corporation
    Inventors: Tatsushi Inagaki, Hideaki Komatsu, Takuya Nakaike
  • Patent number: 8949787
    Abstract: A computer implemented method for locating isolation points in an application under multi-tenant environment includes scanning, using a computer device an application by using scanning rules, to obtain potential isolation points and relationships between the potential isolation points; specifying at least one isolation point among the potential isolation points; and screening an isolation point from the potential isolation points by using relationships between the specified at least one isolation point and the remaining potential isolation points.
    Type: Grant
    Filed: August 31, 2012
    Date of Patent: February 3, 2015
    Assignee: International Business Machines Corporation
    Inventors: Wen Hao An, Hong Cai, Liya Fan, Bo Gao, Chang Jie Guo, Li Li Ma, Zhi Hu Wang, Min Jun Zhou
  • Patent number: 8943482
    Abstract: One embodiment of a method for constructing executable code for a component-based application includes receiving a request to compile source code for the component-based application, wherein the request identifies the source code, and wherein the source code comprises a plurality of source code components, each of the source code components implementing a different component of the application, and performing a series of steps for each source code component where the series of steps includes: deriving a signature for the source code component, retrieving a stored signature corresponding to a currently available instance of executable code for the source code component, comparing the derived signature with the stored signature, compiling the source code component into the executable code when the derived signature does not match the stored signature, and obtaining the executable code for the source code component from a repository when the derived signature matches the stored signature.
    Type: Grant
    Filed: May 15, 2009
    Date of Patent: January 27, 2015
    Assignee: International Business Machines Corporation
    Inventors: Henrique Andrade, Bugra Gedik, Rui Hou, Hua Yong Wang, Kun-Lung Wu
  • Patent number: 8943462
    Abstract: The present disclosure involves systems, software, and computer implemented methods for operating on type instances. One example method includes identifying a reference to a type instance during execution of a child control flow. The child control flow is associated with one or more ancestor control flows. One or more stack frames associated with the ancestor control flows are searched for a prior instantiation of the type instance. Access to the prior instantiation of the type instance in an identified stack frame associated with an identified ancestor control flow is provided in response to determining that the prior instantiation of the type instance exists in the identified stack frame. A new instance of the type instance is instantiated in a stack frame associated with the child control flow in response to determining that the prior instantiation of the type instance does not exist in the one or more stack frames.
    Type: Grant
    Filed: June 28, 2013
    Date of Patent: January 27, 2015
    Assignee: SAP SE
    Inventors: Jonathan Heller, Lior Schejter, Inbal Zilberman Kubovsky
  • Patent number: 8924945
    Abstract: A computer-implemented method for initializing computer programming elements based on dependency graphs is provided. The method includes determining a dependency graph associated with a computer programming element to be initialized. The method also includes traversing the determined dependency graph, so as to obtain thread information associated with each of the one or more computer programming elements of the determined dependency graph, and determining, based on the obtained thread information associated with each of the computer programming elements, an aggregate thread information of all the computer programming elements of the determined dependency graph. The method further includes generating code which initializes the computer programming element to be initialized based at least on the determined aggregate thread information. Systems and machine-readable media are also provided.
    Type: Grant
    Filed: October 4, 2012
    Date of Patent: December 30, 2014
    Assignee: Google Inc.
    Inventor: Erik Lewis Wright
  • Publication number: 20140380291
    Abstract: Compile-time recognition of graph structure where graph has arbitrary connectivity and is constructed using recursive computations is provided. In one aspect, the graph structure recognized at compile time may be duplicated at runtime and can then operate on runtime values not known at compile time.
    Type: Application
    Filed: August 19, 2013
    Publication date: December 25, 2014
    Applicant: International Business Machines Corporation
    Inventors: Joshua S. Auerbach, David F. Bacon, Perry S. Cheng, Stephen Fink, Rodric Rabbah
  • Publication number: 20140380290
    Abstract: Compile-time recognition of graph structure where graph has arbitrary connectivity and is constructed using recursive computations is provided. In one aspect, the graph structure recognized at compile time may be duplicated at runtime and can then operate on runtime values not known at compile time.
    Type: Application
    Filed: June 24, 2013
    Publication date: December 25, 2014
    Inventors: Joshua S. Auerbach, David F. Bacon, Perry S. Cheng, Stephen Fink, Rodric Rabbah
  • Patent number: 8910145
    Abstract: A system, method and device for installation and/or deinstallation of at least one software module, with centralized resolution of constraints, in aircraft equipment items. After having received a list of software module references, the list comprising at least one reference to the at least one software module, and at least one command, linked to the at least one reference, for installation of deinstallation of the at least one software module, the constraints are accessed. This access is independent of the access to the at least one software module. A sequence of basic operations resolving the constraints then is evaluated for applying the at least one command to the at least one reference.
    Type: Grant
    Filed: March 12, 2012
    Date of Patent: December 9, 2014
    Assignee: Airbus Operations SAS
    Inventors: Thierry Baraldi, William Barsse
  • Patent number: 8910134
    Abstract: A method for performing a neighbor-flipping transformation is provided. In one embodiment, a graph analysis program for computing a function relating to nodes in a directed graph is obtained and analyzed for neighborhood iterating operations, in which a function is computed over sets of nodes in the graph. For any detected neighborhood iterating operation, the method transforms the iterating operation by reversing the neighbor node relationship between the nodes in the operation. The transformed operation computes the same value for the function as the operation prior to transformation. The method alters the neighbor node relationship automatically, so that a user does not have to recode the graph analysis program. In some cases, the method includes construction of edges in the reverse direction while retaining the original edges in addition to performing the transformation.
    Type: Grant
    Filed: January 3, 2013
    Date of Patent: December 9, 2014
    Assignee: Oracle International Corporation
    Inventors: Sungpack Hong, Hassan Chafi, Eric Sedlar
  • Patent number: 8904371
    Abstract: Processing a dataflow program by a program development tool includes detecting a pair of actors defined by dataflow program instructions, wherein the pair of actors include a producer actor and a consumer actor, the producer actor supplying a data structure to the consumer actor via a path that comprises at least one connection and possibly also intervening other actors. An analysis is performed including analyzing one or more operations of the producer actor that involve the data structure and/or analyzing one or more operations of the consumer actor that involve the data structure. A result of the analysis is used as a basis for selecting a minimal amount of information from among a plurality of data handling possibilities concerning the data structure. A transformed program is produced in which the selected minimal amount of information is caused to be passed from the producer actor to the consumer actor.
    Type: Grant
    Filed: June 19, 2012
    Date of Patent: December 2, 2014
    Assignee: Telefonaktiebolaget L M Ericsson (publ)
    Inventors: Charles Chen Xu, Johan Eker, Carl Von Platen
  • Patent number: 8902307
    Abstract: A machine vision system editing environment is provided for a part program in which a continuous stream of image acquisition operations are performed during a run mode. In one embodiment, a new common syntax and representations are utilized wherein continuous image acquisition operations are recorded in the same way as regular operations, with the running of the part program being performed in two stages. In the first stage, the portion of the part program that is to have the continuous stream of image acquisition is scanned for image acquisition operations, and the most efficient order for acquiring the images is determined, after which the image acquisition process is begun. Then, in the second stage, while the image acquisition process is being performed, the portion of the part program is scanned again, with the image analysis operations then being performed.
    Type: Grant
    Filed: November 15, 2011
    Date of Patent: December 2, 2014
    Assignee: Mitutoyo Corporation
    Inventors: Mark Delaney, Barry Saylor
  • Patent number: 8898647
    Abstract: A method provides for a way to test coverage data used in testing small computing platforms by assigning unique signatures to each node in the control flow graph and embedding control function calls. Signatures are embedded into the program during compilation time using the custom parser. When the program is executed the “exercised” signatures sequence is checked for correctness and used for deriving test coverage metric. This metric is used for improving unit and black-box tests. Thus, a way to collect the path-based test coverage with minimal memory and code/size impact on target system is provided.
    Type: Grant
    Filed: October 9, 2008
    Date of Patent: November 25, 2014
    Assignee: Siemens Aktiengesellschaft
    Inventors: Sergey Pavlovich Sobolev, Sergey Valerievich Vinogradov
  • Publication number: 20140344794
    Abstract: A computer-implemented method, system, and computer program product for performing object collocation on a computer system are provided. The method includes analyzing a sequence of computer instructions for object allocations and uses of the allocated objects. The method further includes creating an allocation interference graph of object allocation nodes with edges indicating pairs of allocations to be omitted from collocation. The method also includes coloring the allocation interference graph such that adjacent nodes are assigned different colors, and creating an object allocation at a program point prior to allocations of a selected color from the allocation interference graph. The method additionally includes storing an address associated with the created object allocation in a collocation pointer, and replacing a use of each allocation of the selected color with a use of the collocation pointer to collocate multiple objects.
    Type: Application
    Filed: July 30, 2014
    Publication date: November 20, 2014
    Inventors: Patrick Doyle, Pramod Ramarao, Vijay Sundaresan
  • Patent number: 8881117
    Abstract: A method and corresponding tool, the method comprising: generating a lower-level control flow structure representing a portion of an executable program, the lower-level control flow structure comprising a plurality of lower-level nodes representing operations occurring within the program and a plurality of directional edges representing program flow between nodes; generating a higher-level control flow structure by matching a plurality of the lower-level nodes and edges to higher-level structure nodes representing internal structure, each higher-level structure node representing a group of one or more lower-level nodes and one or more associated edges; and using the higher-level control flow structure to estimate a timing property relating to execution of the program on a processor. The higher-level structure nodes are selected exclusively from a predetermined set of structure node patterns, each pattern in the set having at most one entry point and at most one exit point.
    Type: Grant
    Filed: March 12, 2010
    Date of Patent: November 4, 2014
    Assignee: XMOS Ltd.
    Inventor: Andrew Stanford-Jason
  • Patent number: 8869129
    Abstract: An apparatus and method for scheduling an instruction are provided. The apparatus includes an analyzer configured to analyze dependency of a plurality of recurrence loops and a scheduler configured to schedule the recurrence loops based the analyzed dependencies. When scheduling a plurality of recurrence loops, the apparatus first schedules a dominant loop whose loop head has no dependency on another loop among the recurrence loops.
    Type: Grant
    Filed: November 2, 2009
    Date of Patent: October 21, 2014
    Assignee: Samsung Electronics Co., Ltd.
    Inventors: Tae-wook Oh, Won-sub Kim, Bernhard Egger
  • Patent number: 8863096
    Abstract: A symbolic execution task is dynamically divided among multiple computing nodes. Each of the multiple computing nodes explores a different portion of a same symbolic execution tree independently of other computing nodes. Workload status updates are received from the multiple computing nodes. A workload status update includes a length of a job queue of a computing node. A list of the multiple computing nodes ordered based on the computing nodes' job queue lengths is generated. A determination is made regarding whether a first computing node in the list is underloaded. A determination is made regarding whether a last computing node in the list is overloaded. Responsive to the first computing node being underloaded and the last computing node being overloaded, a job transfer request is generated that instructs the last computing node to transfer a set of one or more jobs to the first computing node.
    Type: Grant
    Filed: January 6, 2012
    Date of Patent: October 14, 2014
    Assignee: École Polytechnique Fédérale de Lausanne (EPFL)
    Inventors: Stefan Bucur, Cristian Zamfir, George Candea
  • Patent number: 8863093
    Abstract: A method to instrument program code for a virtual machine that comprises, in the course of loading a class to a virtual machine, adding code to the class to declare a field that corresponds to a field declared in a first bootstrap class.
    Type: Grant
    Filed: March 6, 2009
    Date of Patent: October 14, 2014
    Assignee: Coverity, Inc.
    Inventors: Andy Chou, John Kodumal
  • Patent number: 8863101
    Abstract: A system including an input compiler that receives a unified input description containing syntax rules for both regular and context-free expressions and interspersed code, the first compiler configured to translate the unified input description into a common internal representation is disclosed. The system also includes a regular expression checker, a context-free expression checker, a code checker and a second compiler coupled to the code checker.
    Type: Grant
    Filed: December 10, 2008
    Date of Patent: October 14, 2014
    Assignee: International Business Machines Corporation
    Inventors: Wolfgang Gellerich, Andreas Krebbel
  • Patent number: 8856766
    Abstract: An embodiment of the invention provides a method of displaying a data flow, wherein a description of a data flow application to be displayed is received. The data flow application includes nodes and edges connecting the nodes, wherein the nodes represent operators and the edges represent data connections for data flowing between the operations. A reason that a user is to view the data flow and/or a user constraint on a complexity of the data flow application to be displayed is determined with a processor; and, the time required to render a display of the data flow application is estimated. A transformed representation of the data flow application is created with the processor. The transformed representation is created based upon the user reason, the user constraint, the estimated time of rendering, and/or a layout strategy. The transformed representation is displayed on a graphical user interface.
    Type: Grant
    Filed: May 11, 2012
    Date of Patent: October 7, 2014
    Assignee: International Business Machines Corporation
    Inventors: Andrew Lawrence Frenkiel, Henrique Andrade, Bugra Gedik, Michael Donald Pfeifer, Wim De Pauw
  • Patent number: 8856765
    Abstract: The present invention provides a technique for analyzing a pointer. The technique is characterized in detecting whether or not an object for which it is desired to detect an access position escapes to at least one method which is a caller of a method which generates the identified object (a first caller method) or at least one method which is called by the method which generates the identified object (a first callee method), and preparing a load node in a point-to graph and updating the point-to graph on condition that a field of at least one object in the point-to graph is reachable from the first caller method or the first callee method and the field is in a state of not pointing to an object in the point-to graph.
    Type: Grant
    Filed: December 13, 2011
    Date of Patent: October 7, 2014
    Assignee: International Business Machines Corporation
    Inventor: Rei Odaira
  • Patent number: 8856767
    Abstract: A system and method for monitoring the performance and execution flow of a target application and generating a corresponding data model are provided. The system and method comprise attaching to a thread or process of a target application and tracking the execution of subroutines using instrumentation commands. Data representing the execution flow of the various subroutines, subroutine calls, and their performance is gathered and used to generate data models representing the threads and processes of the application. The data models are optionally merged and/or pruned. A visualization of the data models is generated indicating relevant points of interest within the target application's execution flow.
    Type: Grant
    Filed: April 29, 2011
    Date of Patent: October 7, 2014
    Assignee: Yahoo! Inc.
    Inventors: Rohit Jalan, Arun Kejariwal
  • Patent number: 8850410
    Abstract: A system and method for improving software maintainability, performance, and/or security by associating a unique marker to each software code-block; the system comprising of a plurality of processors, a plurality of code-blocks, and a marker associated with each code-block. The system may also include a special hardware register (code-block marker hardware register) in each processor for identifying the markers of the code-blocks executed by the processor, without changing any of the plurality of code-blocks.
    Type: Grant
    Filed: January 29, 2010
    Date of Patent: September 30, 2014
    Assignee: International Business Machines Corporation
    Inventors: Ramanjaneya S. Burugula, Joefon Jann, Pratap C. Pattnaik
  • Patent number: 8849747
    Abstract: Systems, methods, apparatus, and computer-readable media for business process management include identifying a business process model generated with a business process modeling tool; transforming the business process model defined in a first format to one or more artifacts defined in a second format; deploying an output file defined by the one or more artifacts in an in-memory database; and executing the output file in the in-memory database base at least in part on one or more processes executing in the in-memory database in response to a received query for data stored in the in-memory database.
    Type: Grant
    Filed: April 24, 2012
    Date of Patent: September 30, 2014
    Assignee: SAP AG
    Inventors: Sören Balko, Kesavaprakash Vasudevan
  • Patent number: 8843928
    Abstract: A method and system of efficient use and programming of a multi-processing core device. The system includes a programming construct that is based on stream-domain code. A programmable core based computing device is disclosed. The computing device includes a plurality of processing cores coupled to each other. A memory stores stream-domain code including a stream defining a stream destination module and a stream source module. The stream source module places data values in the stream and the stream conveys data values from the stream source module to the stream destination module. A runtime system detects when the data values are available to the stream destination module and schedules the stream destination module for execution on one of the plurality of processing cores.
    Type: Grant
    Filed: January 21, 2011
    Date of Patent: September 23, 2014
    Assignee: QST Holdings, LLC
    Inventors: Paul Master, Frederick Furtek
  • Patent number: 8843902
    Abstract: A method and corresponding tool for estimating program execution time. A higher-level structure is received as an input, representing control flow through an executable program. The higher-level structure comprises one or more levels of parent nodes, each parent node representing internal structure comprising a group of one or more child nodes and one or more associated edges between nodes. The levels of the higher-level structure are probed to extract a substructure representing a route through the program from a start instruction to an end instruction, by selectively extracting nodes of different levels of parent to represent different regions along the route in dependence on a location of the start and end instructions relative to the levels of parent nodes. An execution time for the route through the program is estimated based on the extracted substructure, and a modification affecting the execution time is made in dependence on the estimation.
    Type: Grant
    Filed: March 12, 2010
    Date of Patent: September 23, 2014
    Assignee: XMOS Ltd.
    Inventor: Andrew Stanford-Jason
  • Patent number: 8843890
    Abstract: A computer system for integrating existing source code into target source code, the computer system including a change point mapper that outputs a plurality of suggested candidate mappings between a change point of the existing source code and a plurality of change points of the target source code, a change point transformer that receives the plurality of suggested candidate mappings and outputs an updated existing source code, the change point transformer being configured to automatically update the existing source code based on a selected candidate mapping of the plurality of suggested candidate mappings, and a change point transplanter being configured to insert the updated existing source code into the target source code.
    Type: Grant
    Filed: May 10, 2012
    Date of Patent: September 23, 2014
    Assignee: International Business Machines Corporation
    Inventors: Andrew Lawrence Frenkiel, Bugra Gedik
  • Patent number: 8839217
    Abstract: A method for efficiently solving the “use-def” problem involving label variables performs a data-flow analysis on a control flow graph that includes calculating an inset for each node as follows: if a predecessor node directly branches to the node, the method includes an outset of the predecessor node in the inset of the node; if a predecessor node indirectly branches to the node via a label variable and the node is in definitions of the label variable in the outset of the predecessor node, the method includes the outset of the predecessor node in the inset of the node; if a predecessor node indirectly branches to the node via a label variable and the node is not in definitions of the label variable in the outset of the predecessor node, the method does not include the outset of the predecessor node in the inset of the node.
    Type: Grant
    Filed: March 15, 2013
    Date of Patent: September 16, 2014
    Assignee: International Business Machines Corporation
    Inventor: Allan Henry Kielstra
  • Patent number: 8839248
    Abstract: A framework is provided for automatic inference of memory fences in concurrent programs. A method is provided for generating a set of ordering constraints that prevent executions of a program violating a specification. One or more incoming avoidable transitions are identified for a state and one or more ordering constraints are refined for the state. The set of ordering constraints are generated by taking a conjunction of ordering constraints for all states that violate the specification. One or more fence locations can optionally be selected based on the generated set of ordering constraints.
    Type: Grant
    Filed: May 28, 2010
    Date of Patent: September 16, 2014
    Assignee: International Business Machines Corporation
    Inventors: Michael Kuperstein, Martin Vechev, Eran Yahav
  • Patent number: 8826256
    Abstract: A computer-implemented method, system, and computer program product for performing object collocation on a computer system are provided. The method includes analyzing a sequence of computer instructions for object allocations and uses of the allocated objects. The method further includes creating an allocation interference graph of object allocation nodes with edges indicating pairs of allocations to be omitted from collocation. The method also includes coloring the allocation interference graph such that adjacent nodes are assigned different colors, and creating an object allocation at a program point prior to allocations of a selected color from the allocation interference graph. The method additionally includes storing an address associated with the created object allocation in a collocation pointer, and replacing a use of each allocation of the selected color with a use of the collocation pointer to collocate multiple objects.
    Type: Grant
    Filed: August 17, 2010
    Date of Patent: September 2, 2014
    Assignee: International Business Machines Corporation
    Inventors: Patrick Doyle, Pramod Ramarao, Vijay Sundaresan
  • Patent number: 8826255
    Abstract: A control flow graph may be generated from a model. The control flow graph may be restructured by converting at least one cyclical unstructured region of a control flow graph into a structured region. The restructuring may involve introducing loop head and/or bottom nodes, serving as incident nodes for loop entry or exit, correspondingly. Loop back-edges may be re-routed to loop entry nodes, while all exit nodes may be re-rerouted to loop exit nodes, as long as the control flow within the loop is properly directed using control flow constructs.
    Type: Grant
    Filed: June 18, 2007
    Date of Patent: September 2, 2014
    Assignee: The MathWorks, Inc.
    Inventors: Srinath Avadhanula, Vijay Raghavan
  • Patent number: 8813044
    Abstract: A method, system, and article of manufacture are disclosed for transforming a definition of a process for delivering a service. This service process definition is comprised of computer readable code. The method comprises the steps of expressing a given set of assumptions in a computer readable code; and transforming said process definition by using a processing unit to apply said assumptions to said process definition to change the configuration of the process definition. The process definition may be transformed by using factors relating to the specific context in or for which the process definition is executed. Also, the process definition may be transformed by identifying, in a flow diagram for the service process definition, flows to which the assumptions apply, and applying program rewriting techniques to those identified flows.
    Type: Grant
    Filed: September 6, 2012
    Date of Patent: August 19, 2014
    Assignee: International Business Machines Corporation
    Inventors: David F. Bantz, Steven J. Mastrianni, James R. Moulic, Dennis G. Shea
  • Patent number: 8806461
    Abstract: Systems and methods for using memory usage to pinpoint sub-optimal code for gaming systems are provided herein. Memory usage characteristics, such as latency, cache misses, load-hit-store, memory address misuse, and wasted cache bandwidth are presented, preferably in a graphical format, to provide the developer with information for optimizing source code. A trace analysis is performed on source code undergoing optimization. Relevant data is extracted from the trace analysis, sorted as necessary, and presented to the user. The user may be presented with multiple results sorting mechanisms as well as ways to change the presentation of the results.
    Type: Grant
    Filed: June 21, 2007
    Date of Patent: August 12, 2014
    Assignee: Microsoft Corporation
    Inventors: David Floyd Aronson, Parham Mohadjer, Matthew Russell Kimball, Bruce Michael Dawson
  • Patent number: 8806464
    Abstract: Embodiments disclosed herein relate to a process flow optimized directed graph traversal. In one embodiment, a processor performs a depth first traversal of the optimized directed graph where a node from a first node is not traversed until the nodes before the first node are traversed. The processor may output information associated with the nodes based on the traversal.
    Type: Grant
    Filed: April 26, 2012
    Date of Patent: August 12, 2014
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventor: David Bryan Dewey
  • Publication number: 20140223420
    Abstract: A basic block within a thread program is characterized for convergence based on mapping the basic block to an indicator subnet within a corresponding Petri net generated to model the thread program. Each block within the thread program may be similarly characterized. Each corresponding Petri net is enumerated to generate a corresponding state space graph. If the state space graph includes an exit node with an odd execution count attribute, such as by Petri net coloring, then the corresponding basic block is divergent. The corresponding basic block is convergent otherwise. Using this characterization technique, a thread program compiler may advantageously identify all convergent blocks within a thread program and apply appropriate optimizations to the convergent blocks.
    Type: Application
    Filed: February 6, 2013
    Publication date: August 7, 2014
    Applicant: NVIDIA CORPORATION
    Inventor: Manjunath Kudlur
  • Patent number: 8799852
    Abstract: System and method for performing program-related operations over a network via a web browser. A network connection is established between a server computer and a client computer over a network. A universal resource identifier (URI) is sent from the client computer to the server computer over the network, where the URI indicates a program, e.g., a graphical program (GP), or at least a portion of a graphical program interactive development environment (GPIDE), e.g., a graphical program editor, an execution engine, a static or dynamic analyzer, and/or compiler. The at least a portion of the GPIDE is received from the server computer over the network in response to the URI, and executed in a web browser of the client computer to perform some specified functionality with respect to the GP.
    Type: Grant
    Filed: October 2, 2009
    Date of Patent: August 5, 2014
    Assignee: National Instruments Corporation
    Inventor: Mohammed Kamran Shah
  • Patent number: 8799883
    Abstract: The present invention relates generally to a system and method for measuring application memory use, and more particularly to measuring heap usage of each of a plurality of applications running inside a single heap. Preferred embodiments of the present invention work by traversing a set of objects in a heap. During this traversal, sets of strongly connected components are identified. Additionally, representative objects of the sets of strongly connected components are identified and a topological sort order of the objects is established. Further, during a second traversal of the objects, the topological sort order is used to identify one or more applications responsible for each of the strongly connected component sets. And, in the process, the resource usage of each application is computed.
    Type: Grant
    Filed: January 31, 2003
    Date of Patent: August 5, 2014
    Assignee: Hewlett-Packard Development Company, L. P.
    Inventor: Keith H Randall
  • Patent number: 8782628
    Abstract: Techniques for partitioning an operator flow graph are provided. The techniques include receiving source code for a stream processing application, wherein the source code comprises an operator flow graph, wherein the operator flow graph comprises a plurality of operators, receiving profiling data associated with the plurality of operators and one or more processing requirements of the operators, defining a candidate partition as a coalescing of one or more of the operators into one or more sets of processing elements (PEs), using the profiling data to create one or more candidate partitions of the processing elements, using the one or more candidate partitions to choose a desired partitioning of the operator flow graph, and compiling the source code into an executable code based on the desired partitioning.
    Type: Grant
    Filed: April 26, 2013
    Date of Patent: July 15, 2014
    Assignee: International Business Machines Corporation
    Inventors: Henrique Andrade, Bugra Gedik, Kirsten W. Hildrum, Rohit M. Khandekar, Sujay S. Parekh, Deepak Rajan, Joel L. Wolf, Kun-Lung Wu
  • Patent number: RE45199
    Abstract: A compiler apparatus, which can perform software pipelining optimization that has a considerable effect of reducing the number of execution cycles taken to complete a loop process, converts a source program into a machine program for a processor which is capable of parallel processing. The compiler apparatus is composed of: a parsing unit operable to parse the source program and then to convert the source program into an intermediate program which is described in an intermediate language; an optimization unit operable to optimize the intermediate program; and a conversion unit operable to convert the optimized intermediate program into the machine language program, wherein the optimization unit is operable to execute software pipelining, by inserting a transfer instruction, which is used for transferring data between operands, into a loop process included in the intermediate program so that a data dependence relation is changed.
    Type: Grant
    Filed: September 14, 2012
    Date of Patent: October 14, 2014
    Assignee: Panasonic Corporation
    Inventors: Shohei Michimoto, Taketo Heishi, Hajime Ogawa, Teruo Kawabata