Abstract:
The present invention allows a multi-threaded process to access an un-shareable resource without modifying the multi-threaded process. A binder is created for the multi-threaded process to access the un-shareable resource. All requests from the multi-threaded process to access the un-shareable resource are intercepted by the binder and the binder decides how to redirect or reformulate the requests to access the un-shareable resource. The present invention allows a process to dynamically bind to an interface at run time to establish communication channels among multiple concurrent computing resources in a concurrent computing environment. Hence, a user can choose to change to use a different interface during run time of the process without terminating the execution of the process.
Abstract:
A device, for performing parallel processing, includes a processor to receive one or more portions of an inner context of a program created for a technical computing environment, and allocate one or more portions of the inner context of the program to two or more labs for parallel execution. The processor is also configured to receive one or more results associated with the parallel execution of the one or more portions from the two or more labs, and provide the one or more results to an outer context of the program.
Abstract:
One or more computer-readable media store executable instructions that, when executed by processing logic, perform parallel processing. The media store one or more instructions for receiving one or more portions of an inner context of a program created for a technical computing environment, allocating one or more portions of the inner context of the program to two or more labs for parallel execution, receiving one or more results associated with the parallel execution of the one or more portions from the two or more labs, and providing the one or more results to an outer context of the program.
Abstract:
A dynamic collaboration of processes in a concurrent computing environment is disclosed. A user can modify the size of collaboration or the number of processes that execute a computational job after the processes have been launched on the concurrent computing environment. A launched or running process can establish a communication channel with other processes in the collaboration so that the launched or running process can join the collaboration to execute the job. The user can also release a process from the collaboration so the released process can join a new collaboration to execute a different job. Once a job is completed, the processes can leave the collaboration, and the processes are then free to join a new collaboration subsequently.
Abstract:
One or more computer-readable media store executable instructions that, when executed by processing logic, perform parallel processing. The media store one or more instructions for receiving one or more portions of an inner context of a program created for a technical computing environment, allocating one or more portions of the inner context of the program to two or more labs for parallel execution, receiving one or more results associated with the parallel execution of the one or more portions from the two or more labs, and providing the one or more results to an outer context of the program.
Abstract:
A system may include a technical computing client to define a job. The system may also include a group of technical computing workers that form a collaboration to perform the job. The group of technical computing workers may include a first technical computing worker that acts as a lead worker for the collaboration and one or more second technical computing workers that act as follower workers for the collaboration. The system may further include a third technical computing worker that is not a part of the collaboration when the group of technical computing workers begins performing the job. The third technical worker may join the collaboration during the performance of the job and aid in obtaining a result from performing the job.
Abstract:
A system initiates multiple instances of a concurrent computing process, establishes a communication channel among the multiple instances, initiates execution of a computational job on the multiple instances, detects an interrupt request on one of the multiple instances, and terminates execution of the computational job while maintaining communication among the multiple instances via the communication channel.
Abstract:
A system initiates multiple instances of a concurrent computing process, establishes a communication channel among the multiple instances, initiates execution of a computational job on the multiple instances, detects an interrupt request on one of the multiple instances, and terminates execution of the computational job while maintaining communication among the multiple instances via the communication channel.
Abstract:
A system and method detects communication error among multiple nodes in a concurrent computing environment. One or more barrier synchronization points/checkpoints or regions are used to check for a communication mismatch. The barrier synchronization point(s)/checkpoint(s) can be placed anywhere in the concurrent computing program. Once a node reaches a barrier synchronization point/checkpoint, it is not allowed to communicate with another node regarding data that is needed to execute the concurrent computing program, even if the other node has not reached the barrier synchronization point/checkpoint. Regions can also, or alternatively, be used to detect a communication mismatch instead of barrier synchronization points/checkpoints. A concurrent program on each node is separated into one or more regions. Two nodes communicate with each other when their regions are compatible. If their regions are not compatible, a communication mismatch occurs.
Abstract:
A device receives, via a technical computing environment, a program that includes a parallel construct and a command to be executed by graphical processing units, and analyzes the program. The device also creates, based on the parallel construct and the analysis, one or more instances of the command to be executed in parallel by the graphical processing units, and transforms, via the technical computing environment, the one or more command instances into one or more command instances that are executable by the graphical processing units. The device further allocates the one or more transformed command instances to the graphical processing units for parallel execution, and receives, from the graphical processing units, one or more results associated with parallel execution of the one or more transformed command instances by the graphical processing units.