RT info:eu-repo/semantics/article T1 OpenCLIPER: An OpenCL-Based C++ Framework for Overhead-Reduced Medical Image Processing and Reconstruction on Heterogeneous Devices A1 Simmross Wattenberg, Federico Jesús A1 Rodríguez Cayetano, Manuel A1 Royuela-del-Val, Javier A1 Martin-Gonzalez, Elena A1 Moya-Saez, Elisa A1 Martín Fernández, Marcos Antonio A1 Alberola López, Carlos K1 Computación de alto rendimiento (HPC) K1 C++ K1 GPU K1 medical imaging K1 OpenCL K1 1203.17 Informática K1 2209.90 Tratamiento Digital. Imágenes AB Este artículo describe una infraestructura basada en OpenCL que permite implementar algoritmos de cálculo masivamente paralelizables. OpenCL es un entorno de programación (lenguaje y API) que permite aprovechar las capacidades de dispositivos con gran número de núcleos de cálculo, como las GPUs, para acelerar notablemente el cálculo de este tipo de algoritmos.Uno de los principales problemas de OpenCL es la complejidad de las tareas de preparación previas al cálculo propiamente dicho (selección del dispositivo que se va a usar y su inicialización, sincronización de los datos entre la CPU y el dispositivo de cálculo, etc.). Todas estas dificultades hacen más laborioso el uso de OpenCL de lo que sería deseable. Este artículo describe una infraestructura basada en OpenCL(OpenCLIPER) que es capaz de utilizar dispositivos de cálculo soportados por OpenCL de forma sencilla, lo que permite al desarrollador concentrarse en la implementación del algoritmo. Nuestra infraestructura se encarga automáticamente del descubrimiento de los dispositivos disponibles y su inicialización, transferencias de datos entre el sistema de ficheros, la CPU y el dispositivo de cálculo, y la carga y compilación de kernels (el código que implementa el algoritmo). Las estructuras de datos solamente tienen que ser definidas una vez, independientemente del dispositivo de cálculo, al igual que el código que las usa. Además, se usa memoria pinned (memoria accesible por la CPU asociada de forma fija a la memoria física) para los búferes de datos para lograr la máxima velocidad en las transferencias de estosentre la CPU y el dispositivo de cálculo escogido. Los algoritmos son implementados como operadores matemáticos con una entrada y una salida y parámetros opcionales, lo que permite encadenarlos fácilmente y de forma eficiente. Además, es posible separar las tareas de inicialización y ejecución del algoritmo, lo que conlleva mejores prestaciones al ser encadenados y/o usados en bucles.Toda la infraestructura ha sido probada en el desarrollo de algoritmos de procesamiento de imágenes, en concreto en el procesamiento de imágenes de resonancia magnética submuestreadas. PB IEEE SN 2168-2194 YR 2019 FD 2019 LK https://uvadoc.uva.es/handle/10324/65575 UL https://uvadoc.uva.es/handle/10324/65575 LA eng NO IEEE Journal of Biomedical and Health Informatics. Julio 2019, vo. 23, n. 4, p 1702-1709. NO Producción Científica DS UVaDOC RD 11-jul-2024