Package:

As a consequence of the immense computational power avail-able in GPUs, the usage of these platforms for running data-intensive general purpose programs has been increasing. Since memory and pro-cessor architectures of CPUs and GPUs are substantially different, pro-grams designed for each platform are also very different and often resort to a very distinct set of algorithms and data structures. Selecting be-tween the CPU or GPU for a given program is not easy as there are variations in the hardware of the GPU, in the amount of data, and in several other performance factors. AEminiumGPU is a new data-parallel framework for developing and run-ning parallel programs on CPUs and GPUs. AEminiumGPU programs are written in a Java using Map-Reduce primitives and are compiled into hybrid executables which can run in either platforms. Thus, the de-cision of which platform is going to be used for executing a program is delayed until run-time and automatically performed by the system using Machine-Learning techniques. Our tests show that AEminiumGPU is able to achieve speedups up to 65x and that the average accuracy of the platform selection algorithm, in choosing the best platform for executing a program, is above 92%.