A general-purpose programming environment allows users to program a GPU as
a general-purpose computation engine using familiar C/C++ programming
constructs. Users may use declaration specifiers to identify which
portions of a program are to be compiled for a CPU or a GPU.
Specifically, functions, objects and variables may be specified for GPU
binary compilation using declaration specifiers. A compiler separates the
GPU binary code and the CPU binary code in a source file using the
declaration specifiers. The location of objects and variables in
different memory locations in the system may be identified using the
declaration specifiers. CTA threading information is also provided for
the GPU to support parallel processing.