1. A method for executing a program that comprises a plurality of basic blocks on a computer system that comprises a plurality of processing elements: generating a branch instruction by one processing element of the plurality of processing elements; sending the branch instruction to the plurality of processing elements; and independently branching to a target of the branch instruction by each of the processing elements of the plurality of processing elements when each processing element receives the sent branch instruction; wherein at least one processing element of the plurality of processing elements receives the branch instruction at a time later than another processing element of the plurality of processing elements.