Extensión OmpSS para CUDA y OpenCL
OmpSS extension for CUDA and OpenCL
Ver/ Abrir
Identificadores
URI: http://hdl.handle.net/10902/1163Registro completo
Mostrar el registro completo DCAutoría
Sainz Manteca, FlorentinoFecha
2012-09Director/es
Derechos
Atribución-NoComercial-SinDerivadas 3.0 España
Palabras clave
GPU
GPGPU
CUDA
OpenCL
OmpSS
Resumen/Abstract
RESUMEN: El presente proyecto tiene por objeto mejorar la compatibilidad del modelo de programación OmpSS del BSC-CNS con la ejecución en aceleradores. OmpSS está compuesto por dos componentes diferenciados, un runtime (Nanox) y un compilador (Mercurium), los cuales han de ser modificadas de acuerdo a las necesidades del proyecto. El proyecto está estructurado en dos partes correspondientes a dos tecnologías diferentes para ejecutar código en aceleradores, CUDA y OpenCL. La primera parte del proyecto, consiste en una extensión de una tecnología ya soportada por OmpSS, CUDA, para permitir una programación más sencilla de la misma, en la que se persigue abstraer al usuario de las llamadas de bajo nivel. Para ello se ha modificado la implementación ya existente del compilador. La segunda parte del proyecto, consiste en añadir soporte para ejecutar código OpenCL, con el objetivo de poder programar en este lenguaje una forma muy similar a CUDA, y por consiguiente a cualquier otro dispositivo. Para ello hemos de crear la implementación tanto en el compilador, como en el runtime, para que sea capaz de ejecutar tareas OpenCL. Ambas partes serán verificadas con diferentes pruebas, creadas en la realización del proyecto o adaptadas de pruebas ya existentes.
ABSTRACT: This Project’s goal is improving BSC-CNS’s OmpSS Programming Model compatibility with accelerators. OmpSS is composed with two different components, Nanox Runtime and Mercurium Compiler, which have to be modified according to our requirements. This Project is structured in two different parts, corresponding to two different technologies, CUDA and OpenCL. First part, consisting in extending current OmpSS implementation of CUDA, in order to make it easier to use, we have to remove the need to use low-level calls to invoke CUDA tasks, to reach this goal we have to modify Mercurium Compiler. Second part, consisting in adding OpenCL support to OmpSS, tasks are going to be defined pretty similar to CUDA definitions, therefore similar to other devices, to reach this goal we have to add OpenCL device implementation in Mercurium Compiler and Nanox Runtime. Both parts will be verified with different tests, created during the development of this Project or adapted from already existing ones.