Como trabajo futuro quedan muchas opciones a partir de este trabajo.
DIVIDIR DATOS DE ENTRADA
En la propuesta de trabajo de grado [8] el dividir los datos de entrada en el procesamiento se consideraba como parte esencial del mismo, pero por el cambio de tiempo de desarrollo, esto no quedó dentro del alcance.
Básicamente en lo que consiste esto es a medida que la GPU tiene memoria disponible, se van pasando secciones de la imagen que se encuentran en memoria principal y se filtran; luego de ser filtradas, estas secciones se unirían y formarían una imagen resultante única.
EJECUCIÓN MULTIGPU
CUDAlicious fue desarrollado y ejecutado en dos sistemas que solo poseen una GPU, pero una de las características más importantes de CUDA es la posibilidad del desarrollo multiGPU.
Este desarrollo se hace por varias razones:
-
Mejorar la velocidad de filtrado
-
Aumentar la capacidad en memoria de GPU para trabajar
-
Disminuir costos
La mejora de velocidad es evidente, al tener más recursos computacionales con los cuales filtrar la imagen. Tener dos o más GPU’s incrementa la memoria en la que se puede ejecutar el filtrado. Finalmente, ya que solo se necesita otro slot PCI Express disponible para poder añadir una nueva GPU, los costos de mejorar el rendimiento son menores a comparación de montar de nuevo todo un sistema de cómputo con GPU independiente.
PORT A OPENCL
CUDAlicious fue desarrollado en CUDA debido a la facilidad de programación, cantidad de recursos bibliográficos disponibles, cantidad de librerías previamente desarrolladas y en general, por el gran apoyo de Nvidia a los desarrolladores.
Sin embargo, CUDAlicious solo es ejecutable en máquinas que posean GPU Nvidia con capacidad de ejecutar CUDA. Esto representa una gran limitante, y sería interesante el poder ejecutar CUDAlicious en cualquier sistema que posea una GPU dedicada o integrada.
Para llevar esto a cabo, se podría hacer una adaptación de lenguaje CUDA a lenguaje OpenCL. OpenCL corre bajo cualquier GPU que sea compatible [22], y debido a la reciente incorporación de capacidad de ejecución de OpenCL a las tarjetas gráficas integradas Intel [23] y AMD [24], además del avance en este campo para procesadores móviles [25], el aumento de ambientes en los cuales se podría filtrar imágenes eficientemente se incrementaría sustancialmente.
Muchos conceptos sobre la convolución implementada en CUDAlicious pueden no ser compatibles directamente con OpenCL, pero existen trabajos [REF][REF] en los que se ha implementado exitosamente procesos de convolución.
VI - REFERENCIAS Y BIBLIOGRAFÍA Referencias -
Pontificia Universidad Javeriana, Documentos institucionales – Misión, [ONLINE]. DISPONIBLE EN: http://puj-portal.javeriana.edu.co/portal/page/portal/PORTAL_VERSION_2009_2010/es_mision
-
Nan Zhang; Yun-shan Chen; Jian-li Wang; , "Image parallel processing based on GPU," Advanced Computer Control (ICACC), 2010 2nd International Conference on , vol.3, no., pp.367-370, 27-29 March 2010, [ONLINE]. DISPONIBLE EN: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5486836&isnumber=5486614
-
Nvidia Tegra. [ONLINE]. DISPONIBLE EN: http://www.nvidia.com/object/tegra.html
-
Apple A5X SoC. [ONLINE]. DISPONIBLE EN: http://www.apple.com
-
Nvidia CUDA. [ONLINE]. DISPONIBLE EN: http://www.nvidia.com/object/cuda_home_new.html
-
Extreme Programming. [ONLINE]. DISPONIBLE EN: http://www.extremeprogramming.org/
-
SDK Nvidia CUDA. [ONLINE]. DISPONIBLE EN: https://developer.nvidia.com/gpu-computing-sdk
-
Propuesta de trabajo de grado Daniel Cárdenas. Pontificia Universidad Javeriana 2012
-
CUDA C Programming Guide, [ONLINE]. DISPONIBLE EN: http://docs.nvidia.com/cuda/cuda-c-programming-guide
-
NVIDIA SLI Best Practices, [ONLINE]. DISPONIBLE EN: https://developer.nvidia.com/sli-best-practices
-
Jean-Loïc Rose. ITK architecture. CREATIS-LRMN. [ONLINE]. DISPONIBLE EN : http://www.creatis.insa-lyon.fr/software/public/creatools/crea_ThirdParty_Libraries/documentation/doc01/ITK-Architecture.ppt
-
Image convolution with CUDA [ONLINE]. DISPONIBLE EN : http://developer.download.nvidia.com/compute/cuda/1.1-Beta/x86_64_website/projects/convolutionSeparable/doc/convolutionSeparable.pdf
-
FFT and Convolution Performance in Image Filtering on GPU ISSN :1550-6037
-
Reading and writing Images and Video, OpenCV, [ONLINE]. DISPONIBLE EN: http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imread#imread
-
Kittens, [ONLINE]. DISPONIBLE EN : http://www.funnykittensite.com/pictures/kitten_in_the_grass.htm
-
ITK imageFileReader, [ONLINE]. DISPONIBLE EN : http://www.itk.org/Doxygen/html/classitk_1_1ImageFileWriter.html
-
ITK imageFileWriter, [ONLINE]. DISPONIBLE EN : http://www.itk.org/Doxygen/html/classitk_1_1ImageFileReader.html
-
CUDA Occupancy Calculator, [ONLINE]. DISPONIBLE EN :http://developer.download.nvidia.com/compute/cuda/CUDA_Occupancy_calculator.xls
-
Intel HyperThreading Technology, [ONLINE]. DISPONIBLE EN : http://www.intel.com/content/www/us/en/architecture-and-technology/hyper-threading/hyper-threading-technology.html
-
Intel TurboBoost Technology, [ONLINE]. DISPONIBLE EN : http://www.intel.com/content/www/us/en/architecture-and-technology/turbo-boost/turbo-boost-technology.html
-
CUDA Fermi Architecture, [ONLINE]. DISPONIBLE EN : http://www.nvidia.com/object/fermi-architecture.html
-
Open CL, [ONLINE]. Disponible en : https://www.khronos.org/opencl/
-
Intel Graphics. [ONLINE]. Disponible en : http://www.intel.com/content/www/us/en/architecture-and-technology/hd-graphics/hd-graphics-developer.html
-
AMD Graphics. [ONLINE]. Disponible en : http://www.amd.com/us/products/graphics/Pages/graphics.aspx
-
MALI T600 Developer guide. [ONLINE]. Disponible en : http://malideveloper.arm.com/develop-for-mali/tutorials-developer-guides/developer-guides/mali-t600-series-gpu-opencl-developer-guide/
-
Nvidia Visual Profiler. [ONLINE]. Disponible en : https://developer.nvidia.com/nvidia-visual-profiler
VII - ANEXOS Anexo 1. Glosario GPU
Graphics processing unit. Coprocesador dedicado al procesamiento gráficos.
CPU
(Central Processing Unit): Unidad central de procesamiento
ITK
Plataforma de código abierto que provee herramientas para el análisis de imágenes.
FPGA
(Field-programmable gate array): Dispositivo semiconductor que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada.
Procesador multinúcleo
Aquel que combina dos o más procesadores independientes en un solo circuito integrado.
RGBA
Formato de imagen definido por los canales Red, Green, Blue, Alpha.
Anexo 2. Post-Mortem Metodología propuesta vs. Metodología realmente utilizada.
La metodología utilizada fue la misma que la propuesta, todo se centraba en el desarrollo basado en prototipos incrementales. Debido al cambio en el tiempo de desarrollo, los entregables y las actividades propuestas cambiaron, pero esto no afectó de manera importante al proyecto.
Actividades propuestas vs. Actividades realizadas.
Las actividades propuestas anteriormente se encuentran en la siguiente ilustración:
Las actividades realizadas durante el desarrollo del trabajo de grado, junto con sus entregables fue la siguiente:
Nombre
|
Duración
|
Descripción
|
Entregables
|
Investigación inicial
|
5 días
|
Investigación sobre las características principales de las imágenes médicas, sus dimensiones y utilidades.
|
Resumen sobre los diferentes tipos de imágenes médicas.
|
Investigación algoritmos
|
5 días
|
Investigación sobre los principales algoritmos de filtrado aplicados en la medicina.
|
Resumen sobre los diferentes algoritmos, resaltando su utilidad y complejidad.
|
Investigación lenguaje
|
1 día
|
Investigación sobre las capacidades, funciones, algoritmos y métodos que funcionan mejor utilizando el lenguaje CUDA.
|
Resumen sobre los recursos del lenguaje CUDA que serán utilizados, mostrando la diferencia entre las implementaciones paralelas y seriales.
|
Selección algoritmos de filtrado
|
1 días
|
A partir de la investigación de algoritmos, seleccionar cuales son los que aparecerán en el producto.
|
Lista de algoritmos a implementar.
|
Caracterización y separación de los algoritmos
|
3 días
|
Con los algoritmos seleccionados, definir el pseudocódigo de cada uno, identificando en donde se podrían paralelizar.
|
|
Planteamiento primer prototipo
|
1 día
|
Se plantea el alcance de la primera versión del prototipo
|
|
Primer Prototipo
|
10 días
|
Prototipo que prueba la integración de CUDA con otras plataformas
|
Primer prototipo
|
Planteamiento segundo prototipo
|
2 días
|
Se plantea el alcance de la segunda versión del prototipo.
|
|
Segundo prototipo
|
5 días
|
El prototipo permite cargar imágenes 2D utilizando OpenCV
|
Segundo prototipo
|
Planteamiento tercer prototipo
|
1 día
|
Se plantea el alcance de la tercera versión del prototipo.
|
|
Tercer Prototipo
|
8 días
|
El prototipo filtra imágenes 2D
|
Tercer prototipo
|
Planteamiento cuarto prototipo
|
1 día
|
Se plantea el alcance de la cuarta versión del prototipo.
|
|
Cuarto prototipo
|
7 días
|
El prototipo permite cargar imágenes ND utilizando ITK
|
Cuarto prototipo
|
Planteamiento versión final
|
2 días
|
Se plantea el alcance de la última versión del prototipo.
|
|
Prototipo Final
|
5 días
|
El prototipo permite todo lo descrito en la sección de Ultima Versión
|
Prototipo Final
|
Selección de variables de desempeño
|
1 día
|
Seleccionar las diferentes variables que se utilizarán para identificar si la solución planteada es más rápida que la serial.
|
|
Ejecución de la comparación
|
2 días
|
Ejecución de la comparación de tiempos descrita en la sección de Pruebas.
|
Gráfica de resultados
|
Construcción de la memoria
|
2 meses
|
Se construye en paralelo a la ejecución del proyecto.
|
Memoria
|
Efectividad en la estimación de tiempos del proyecto
El cronograma que se propuso al modificar el tiempo de desarrollo del proyecto fue construido de una manera mucho mejor el primer cronograma, esto debido a que se contó con un mayor seguimiento de parte del director de trabajo de grado.
En general se planteó trabajo cada semana, y el estudiante se reunía con el director de trabajo de grado un día de la misma. En estas reuniones se revisaba el avance de las tareas y se proponía el siguiente avance.
Costo estimado vs. Costo real del proyecto
No surgieron costos adicionales a los originalmente contemplados, de igual manera se utilizaron los recursos definidos en la estimación, así que no hubo tampoco un costo menor al estimado.
El costo contemplado en la propuesta es el siguiente.
Costos de personal
Hora Estudiante
|
$ 12.000,00
|
Hora Director
|
$ 50.000,00
|
Tabla : Costos de personal
|
Costo Total de horas
|
Estudiante
|
$ 2.880.000,00
|
Director
|
$ 3.600.000,00
|
Total Costo Personal
|
$ 6.480.000,00
|
Tabla : Costos totales de personal
Costos de recursos físicos y materiales
Los recursos necesarios para el desarrollo del trabajo de grado se especifican en la siguiente tabla, entre ellos destaca un computador que posea GPU Nvidia con capacidad de ejecutar código en lenguaje de programación CUDA versión 4.2, debido a que sin este es imposible ejecutar el prototipo a implementar.
Recurso
|
cantidad
|
Costo Unitario
|
Costo recursos
|
Computador portatil con GPU Nvidia
|
1
|
2.700.000
|
2.700.000
|
Herramienta de filtrado serial
|
1
|
0
|
0
|
SDK Nvidia CUDA 4.2
|
1
|
0
|
0
|
Uso de instalaciones físicas (en meses)
|
4.5
|
|
0
|
Total costos recursos materiales
|
|
2.700.000
|
2.700.000
|
Tabla : Costos de recursos físicos
-
En la siguiente tabla se muestran los riesgos contemplados en el desarrollo del proyecto.
Riesgo
|
Estrategia de Mitigación
|
Memoria insuficiente de la GPU para tratar imágenes n-dimensionales
|
Modificar el algoritmo de tal manera que la imagen se filtre por partes manteniendo la precisión del proceso total de filtrado
|
Mala planeación del cronograma
|
Rediseñar las actividades, recursos y tiempos siguientes a la presentación del riesgo, sin aplazar la fecha de entrega
|
Pérdida de los recursos físicos por daño o robo de los mismos
|
Se pedirá un préstamo para adquirir de nuevo el recurso en cuestión, con el fin de terminar el trabajo en el tiempo estipulado.
|
La obtención del caso de prueba es imposible
|
Se generará una imagen lo más parecida posible a un caso de prueba real, igualmente se probará con la herramienta de filtrado serial
|
La implementación de los algoritmos de filtrado seleccionados resulta ser imposible en el tiempo estipulado
|
Se redistribuirá el tiempo dedicado a las pruebas para lograr terminar la implementación de una porción de los algoritmos seleccionados que permitan probar las principales funcionalidades del producto.
|
El estudiante que realiza el trabajo de grado enferma y no puede completarlo en el tiempo estipulado
|
Se puede pedir una prorroga para la entrega del trabajo de grado hasta por un año.
|
Fallo en la instalación y/o ejecución de herramientas (SDK CUDA [7], herramienta de filtrado serial)
|
Se cambiará la plataforma en la cual se ejecuta la herramienta problemática, en caso de no ser suficiente, se buscará e implementará el workaround mas efectivo
|
No se presentó ninguno de los riesgos contemplados, esto teniendo en cuenta que el riesgo específico “Memoria insuficiente de la GPU para tratar imágenes n-dimensionales” no aplica debido al cambio en el alcance del proyecto.
Dostları ilə paylaş: |