Patent ID: 8959498
Filing Date: 2015-02-17
Classification: G06F

Abstract:
1. A computer-implemented method for parallelizing a plurality of codes, wherein said codes are configured by connecting a plurality of blocks with an internal state and blocks without said internal state, the method comprising: creating a graph expression in which a plurality of nodes represent said blocks and a plurality of edges represent links between said blocks, and then storing said graph expression in a memory of said computer; grouping said blocks into a plurality of strands by tracing said graph expression in such a manner that every path between an input and an output of each of said strands includes at least one of said blocks with said internal state; selecting a strand having a maximum calculation time from all of said strands; specifying, based on a parent-child relationship among said blocks with said internal state and said blocks without said internal state, a movable block without said internal state in said selected strand having said maximum calculation time; and moving said movable block to an adjacent strand if said calculation time of said strand having said maximum calculation time is shorter after a movement of said movable block to said adjacent strand than the calculation time before said movement: wherein grouping the blocks further comprises: visiting said nodes sequentially in said graph expression, wherein a currently visited node is a functional block without said internal state, and detecting the output from said functional block without said internal state to any of said functional blocks with said internal state and then storing said functional block with said internal state in said memory as an element in a user block set, and detecting the output from said functional block with said internal state to any of said functional blocks without said internal state and then storing said functional block with said internal state in said memory as an element in a definer block set; and forming said strands of said functional blocks on the basis of information on said user block set and information on said definer block set stored in said memory in association with said functional blocks; and wherein forming the strands further comprises at least one step selected from the group consisting of: assigning said functional block to an adjacent strand including a block having zero user blocks and zero definer blocks, wherein said functional block has zero user blocks and zero definer blocks; assigning said functional block to an adjacent strand including a block having zero user blocks, wherein said functional block has zero user blocks and one definer block; assigning said functional block to an adjacent strand including a block having zero user blocks, wherein said functional block has zero user blocks and more than one definer block; assigning said functional block to an adjacent strand including a block having zero definer blocks, wherein said functional block has one user block and zero definer blocks; assigning said functional block to a strand including said definer block, wherein said functional block has one user block and one definer block; assigning said functional block to a strand including said user block, wherein said functional block has one user block and more than one definer blocks; assigning said functional block to an adjacent strand including a block having zero definer blocks, wherein said functional block has more than one user block and zero definer blocks; assigning said functional block to a strand including said definer block, wherein said functional block has more than one user block and one definer block; and assigning said functional block redundantly to strands including said user blocks in said user block set, wherein said functional block has more than one user block and more than one definer block.