A scheduler may be configured to schedule a plurality of blocks of
concurrent code for multi-threaded execution. The scheduler may be
configured to initiate multi-threaded execution of the blocks of
concurrent code in an order determined by block-level performance
criteria for the blocks of concurrent code to reduce overall execution
time of the concurrent code. In one embodiment, the scheduler may be
configured to schedule code blocks having a longer run time ahead of
blocks having a shorter run time. The scheduler may be configured to
schedule a group of said blocks based on a goal of each of the blocks of
the group completing execution at approximately the same time. The
scheduler may also be configured to initiate multi-threaded execution of
each block of the group at different times according to the block-level
performance criteria to the goal.