Scalable architecture
AssigneeThe MathWorks, Inc.
InventorsEdward Whittington GULLEY, Joseph F. HICKLIN
Life of this patent
Estimating the term…
Abstract
Exemplary embodiments may use remote processing resources to perform processing operations on behalf of a client. The embodiments may dynamically switch among available processing resources while processing is performed. Exemplary embodiments may be used, for example, to publish code, perform processing operations within a determined interval, perform scheduled processing operations, perform synchronized simultaneous execution of two or more programs, support coding competitions, support social networking and/or computing activities, and/or other types of processing activities.
Claims27
A computer-readable medium holding executable instructions that when executed on processing logic execute software applications in parallel, the medium holding:
- one or more instructions for displaying information about a plurality of related software applications;
- one or more instructions for selecting two or more of the plurality of software applications for parallel execution;
- one or more instructions for identifying an input for use by the selected software applications during the parallel execution;
- one or more instructions for executing the selected software applications against the input, the executing generating a plurality of results;
- one or more instructions for receiving the plurality of results, the plurality of results including information for:
- evaluating the operation of one of the selected software applications with respect to another one of the selected software applications, or
- evaluating the operation of one of the selected software applications with respect to the input;
- and
- one or more instructions for storing the plurality of results in storage.
A computer-readable medium holding executable instructions that when executed on processing logic simultaneously execute a plurality of software applications against an input, the medium holding:
- one or more instructions for executing the plurality of software applications against the input using a plurality of remote processing resources;
- one or more instructions for synchronizing a first one of the plurality of software applications with a second one of the plurality of software applications during the execution, the synchronizing allowing synchronized execution between the first one of the plurality of software applications and the second one of the plurality of software applications;
- one or more instructions for determining when a first intermediate result for the first one of the plurality of software applications deviates from a second intermediate result for the second one of the plurality of software applications during the synchronized execution;
- one or more instructions for identifying a first location in the first one of the plurality of software applications or a second location in the second one of the plurality of software applications, the first location or the second location identifying where the first intermediate result deviates from the second intermediate result;
- and
- one or more instructions for:
- storing information about the first location in storage, or
- storing information about the second location in storage.
A computer-readable medium holding executable instructions that when executed on processing logic perform distributed processing operations within a determined interval, the medium holding:
- one or more instructions for receiving a first input, the first input identifying an interval for processing;
- one or more instructions for receiving a second input, the second input operated on during distributed processing;
- one or more instructions for identifying available distributed processing resources, the available distributed processing resources configured to perform distributed processing operations on the second input using a technical computing application implemented in a dynamically typed programming language;
- one or more instructions for sending the second input to the identified distributed processing resources;
- and
- one or more instructions for receiving the result from the identified distributed processing resources within the determined interval.
A computer-readable medium holding executable instructions that when executed on processing logic interact with a remote computing application implemented in a dynamically typed language, the medium holding:
- one or more instructions for sending information, the information displaying a quick command window on a client when the client is interacting with an application that is implemented in a non-dynamically typed language;
- one or more instructions for associating the quick command window with the remote computing application based on a user input, the associating allowing the remote computing application to receive a command from the quick command window;
- one or more instructions for processing the command;
- one or more instructions for returning a result to the client, the result displayed on the client;
- one or more instructions for receiving a request from the client, the request for remote access to the remote computing application;
- and
- one or more instructions for providing a user interface to the client in response to the request, the user interface providing the client with access to the remote computing application.
A computer-readable medium holding executable instructions that when executed on processing logic publish code to a client, the medium holding:
- one or more instructions for receiving code that includes information identifying a protected portion of the code and an unprotected portion of the code;
- one or more instructions for formatting the code for display on the client, the formatting identifying the protected code using a first technique and identifying the unprotected code using a second technique;
- one or more instructions for publishing the code to the client over a network, the publishing displaying the published protected code and the published unprotected code;
- one or more instructions for receiving a user input via the client over the network, the user input associated with the published unprotected code identified by the second technique;
- one or more instructions for executing the code based on the user input, the executing using a dynamically typed language to produce a result;
- and
- one or more instructions for displaying the result on the client over the network.
A computer-readable medium holding executable instructions that when executed on processing logic publish code to a client device over a network, the medium holding:
- one or more instructions for receiving code from a source device, the code including a protected portion that includes a function and an unprotected portion;
- one or more instructions for formatting the code for display on the client device by identifying the protected portion using a first technique and by identifying the unprotected portion using a second technique;
- one or more instructions for publishing the code to the client device via an interactive page that accepts a user input, the published code identifying the protected portion via the first technique and the unprotected portion via the second technique;
- one or more instructions for receiving the user input, the user input associated with the unprotected portion;
- one or more instructions for executing the function in the protected portion against the user input associated with the unprotected portion, the executing producing a result;
- and
- one or more instructions for sending the result to the client device.
A computer-readable medium holding executable instructions that when executed schedule a plurality of jobs among a plurality of remote processing resources, the medium holding:
- one or more instructions for receiving job information for a plurality of jobs, the job information identifying at least a first job and a second job;
- one or more instructions for receiving start information for the first job and the second job;
- one or more instructions for identifying available remote processing resources for the first job and the second job, the available remote processing resources using dynamically typed programming languages to process the first job and the second job, the remote processing producing a first result for the first job and a second result for the second job;
- one or more instructions for dynamically scheduling the first job and the second job across one or more of the available remote processing resources, the scheduling allowing the first job or the second job to be moved, in whole or in part, among the plurality of remote processing resources when the plurality of remote processing resources are performing remote processing;
- one or more instructions for commencing remote processing of the first job based on the start information for the first job to produce the first result;
- and
- one or more instructions for commencing remote processing of the second job based on the start information for the second job to produce the second result.
Dependencies are inferred from the claim text.