Patent ID: 9442826
Filing Date: 2016-09-13
CPC Classification: G06F

Claim Text:
1. A system for implementing a kernel functionality checker, comprising: a host device that includes a central processing unit and host memory; a compute device that includes processing circuitry and memory; wherein the host device is interfaced to the compute device via a device-specific API (application programming interface), wherein the device-specific API compiles kernel source code deployed by a host program into a kernel that is run on the compute device via a device-specific device driver; wherein the compute device comprises a plurality of compute elements that execute a plurality of instances of an input kernel concurrently with each instance of an input kernel executed by a compute element being referred to as a work item; wherein the compute device has a global memory accessible by both the compute device and the host device and further has private and local memories accessible only by the compute device; a device-specific API parser executed by the host device to receive a device-specific API source code string of an input kernel and to parse the string to generate one or more device-specific API executable microkernels from each executable statement of the input kernel source code string, wherein the generated microkernels are individually executable and are made to contain instructions that copy intermediate values of each of its private or local memory variables into global memory; a driving application to send the generated microkernels to the compute device for execution via the device-specific API; a user interface to communicate with the driving application that allows a user to control execution of the microkernels and to set or view microkernel variables; wherein the device-specific API parser is further to generate a flow control data structure derived from the input kernel that specifies an execution order for the microkernels and wherein the driving application is further to send one or more of the generated microkernels to the compute device for execution according to the order specified by the flow control data structure; and, wherein the driving application is further to allow setting of break points via the user interface where a break point is specified as a line number of the source code string of the input kernel, wherein a break point stops execution of any work item which reaches the break point and reverts that work item to line-by-line debugging functionality for statements of a microkernel, and wherein a work item reaches a break point if the work item reaches any microkernel parsed out of a line of the source code string of the input kernel with a line number specified as a break point.