1. A method for translating a multithread program code, the method comprising: dividing a multithread program code into a plurality of statements according to a synchronization point; generating at least one loop group by combining one or more adjacent statements based on a number of instructions included in the plurality of statements; expanding or renaming variables in the plurality of statements so that each statement included in the generated at least one loop group is executed with respect to a work item of a different work group; and enclosing each of the generated at least one loop group respectively with a work item coalescing loop, wherein the method further comprises calculating a number of executable work groups for the at least one generated loop group based on a capacity of a memory used by the multithread program code, and wherein the generating the at least one loop group comprises generating the at least one loop group by combining the one or more adjacent statements according to the calculated number of executable work groups such that a number of statements of each of the generated at least one loop group does not exceed the calculated number of work groups.