The technological locks we have to release are:
Access to parallelization
Parallelization is neither intuitive nor easy to consider for computer programming developers. Furthermore, the heterogeneity of parallelized architectures makes realization of fine and portable optimizations on a high number of platforms more complex. The OpenGPU project aims to facilitate the code parallelization and optimization and to capitalize skills and knowledge in GPU computing based on the OpenCL standard.
The big computing and simulation chains have been conceived and developed before the greatest advancements in code parallelization. Modifying these existing codes is a very expensive and time-consuming task that requires highly skilled developers specialized in code parallelization. The OpenGPU project gives the opportunity to rethink these codes, to precisely choose the codes’ parts to be parallelized and to set a precedent for a massive code migration towards new architectures.
A proprietary world
Up to now, the main actors in GPU computing (essentially coming from the graphic market) have set up their positions on a mostly proprietary offer of software and hardware. The Open Source community is so far very dependant of these actors’ goodwill. Therefore, many Open Source projects are restricted to retro-engineering and approximate approaches. The OpenGPU project will allow the Open Source community to conceive and develop its own tools and to speed up code parallelization developments by building its deliverables upon the OpenCL standard and the Eclipse environment.
Optimization of GPU/CPU hybrid architectures
Today, GPU integration in computing clusters is extremely basic. It consists in either the adding of graphic cards within the server, or in a common connection of several graphic cards on the I/O interfaces of the server. These solutions are far from being optimum considering their financial and energetic costs. The OpenGPU project will develop more integrated solutions optimizing the use of GPU/CPU hybrid architectures.
Complexity of the implementation
High Performance Computing (HPC) world did not wait for GPUs’ arrival to get interested in the distribution of calculation on cluster or on grids. Also, standards such as OpenMP or MPI are already widely implemented. The integration of the new GPUs and their particular programming and deployment constraints makes the exploitation chain more complex. This could reduce the gains achieved through code optimization. By relying on both the consortia skills and the knowledge that will be reached through the parallelization of industrial libraries, the OpenGPU project will greatly improve the abilities of the HPC community in domains as complex as production control, hybrid architecture provisioning and rationalization of resources, while including green IT requirements.