10. A method for scheduling jobs for a first processing unit device and a second processing unit device in a multi-core system, the method comprising: obtaining one or more jobs from a program, the one or more jobs configured to be executed by a plurality of threads; generating commands including asynchronous commands related to the one or more jobs in a command format including all necessary states for the command via a command processor, the generated commands being generated independently from one another on any of the plurality of threads and being executed by one or more of the plurality of threads to thereby execute the one or more jobs; translating the generated commands into a format executable by the first processing unit device and the second processing unit device; compiling data necessary for the generated commands via a data compiler into a first data format usable by a first compiler associated with a first programming language and readable by the first programming language, and a second data format usable by a second compiler associated with a second programming language and readable by the second programming language, the second programming language being distinct from the first programming language; storing the generated commands in a command buffer; assigning the generated commands to the first processing unit device, the second processing unit device, or both the first processing unit device and the second processing unit device; and storing resources for the generated commands in a transfer memory, the transfer memory being separate and distinct from the command buffer and further being accessible by the first processing unit device and the second processing unit device, the resources including program data generated by one of the first processing unit device or the second processing unit device and consumed by the other of the first processing unit device or the second processing unit device.
10. A method for scheduling jobs for a first processing unit device and a second processing unit device in a multi-core system, the method comprising: obtaining one or more jobs from a program, the one or more jobs configured to be executed by a plurality of threads; generating commands including asynchronous commands related to the one or more jobs in a command format including all necessary states for the command via a command processor, the generated commands being generated independently from one another on any of the plurality of threads and being executed by one or more of the plurality of threads to thereby execute the one or more jobs; translating the generated commands into a format executable by the first processing unit device and the second processing unit device; compiling data necessary for the generated commands via a data compiler into a first data format usable by a first compiler associated with a first programming language and readable by the first programming language, and a second data format usable by a second compiler associated with a second programming language and readable by the second programming language, the second programming language being distinct from the first programming language; storing the generated commands in a command buffer; assigning the generated commands to the first processing unit device, the second processing unit device, or both the first processing unit device and the second processing unit device; and storing resources for the generated commands in a transfer memory, the transfer memory being separate and distinct from the command buffer and further being accessible by the first processing unit device and the second processing unit device, the resources including program data generated by one of the first processing unit device or the second processing unit device and consumed by the other of the first processing unit device or the second processing unit device. 15. The method of claim 10 , wherein the command format includes all state information required to execute each generated command independently of other generated commands.