摘要 |
A SIMT control instruction is applied to multiple independent threads in parallel which are free to execute and branch independently. The control instruction references a set of pointers to one or more functions in a program. If two or more pointers corresponding to active threads in a thread group are different, this indicates that the active threads diverge during function calls executed by the control instruction. When the threads diverge, a token including the address of the control instruction is pushed onto an execution stack, and the active program counter is updated to specify an address of a first function to be called. The token preferably includes a not-taken mask indentifying previously active threads that do not call the first function. An active mask indicates currently active threads in a group that should be processed in parallel. The invention serialises execution of indirect function calls for each unique pointer. |