Graphics Processing Unit (GPU) is used instead of external accelerators to speed up the loads are usually running CPUs. The main programming language that allows you to program the GPU NVIDIA CUDA and OpenCL the Khronos consortium, and is also based on the C99 programming language. Along with these programming languages API, which allows you to configure the so-called computational core: parameters are set, transfer of memory and a target, ranging from the calculus. Several approaches exist to support GPU programming Java: Simple API wrappers parallelizing Just-In-Time (JIT) compiler and the high level of linguistic integration.
The wrapper approach already allows a good growth performance when stacking algorithms, which comply with the appropriate GPU philosophy (data parallelism, high-rate instruction / memory accesses). However, while the GPU to enable you to control devices in Java, they still need to write native code, called CUDA and OpenCL perform the calculation yourself. And since this step is quite difficult, especially for Java developers, this approach is limited by the developers when trying to port a large-scale applications GPU.
The second technology is based on the JIT compiler’s ability to automatically extract the Java byte code of the kind of parallel calculations, which are effectively implemented in a massively parallel GPU architectures Java. This approach is very convenient for the developer, the source does not require any change, but the automatic generation of efficient parallel code is a very difficult problem, it is quite difficult to understand why the parallelization does not occur in certain cases and for troubleshooting performance related issue in a difficult situation for translator is the only one to decide where, when and how to generate GPU core.
The last approach consists of injecting certain concepts GPU (memory transfers, memory hierarchy, parallelism, vector type) in the Java language, in order to present a single programming environment for Java developers. This usually means the notes, or a few keywords in the member pieces of Java code can be distinguished if the kernel, re-targeting constructs or parallel loop iterators define index space of the kernel which should be implemented, and syntactical nested loops based on dedicated or variable qualifiers to determine that variables mapped to the private, local or global memory hierarchies are available of the GPU. This approach has the advantage that the user more control, while not required to learn a new programming language, Java programming GPU so simple and effective.
Incoming search terms:
- java gpu
- java gpu processing
- giochi java gpu
- java gpu programming
- java wrapper gpu
- jit java gpu
- unit programmi graphical