Propuesta para Trabajo de Grado



Yüklə 177,97 Kb.
səhifə8/8
tarix02.11.2017
ölçüsü177,97 Kb.
#27858
1   2   3   4   5   6   7   8

Trabajos Futuros


Como trabajo futuro quedan muchas opciones a partir de este trabajo.
    1. 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.



    1. 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:



  1. Mejorar la velocidad de filtrado

  2. Aumentar la capacidad en memoria de GPU para trabajar

  3. 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.
    1. 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

  1. Referencias


  1. 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

  2. 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

  3. Nvidia Tegra. [ONLINE]. DISPONIBLE EN: http://www.nvidia.com/object/tegra.html

  4. Apple A5X SoC. [ONLINE]. DISPONIBLE EN: http://www.apple.com

  5. Nvidia CUDA. [ONLINE]. DISPONIBLE EN: http://www.nvidia.com/object/cuda_home_new.html

  6. Extreme Programming. [ONLINE]. DISPONIBLE EN: http://www.extremeprogramming.org/

  7. SDK Nvidia CUDA. [ONLINE]. DISPONIBLE EN: https://developer.nvidia.com/gpu-computing-sdk

  8. Propuesta de trabajo de grado Daniel Cárdenas. Pontificia Universidad Javeriana 2012

  9. CUDA C Programming Guide, [ONLINE]. DISPONIBLE EN: http://docs.nvidia.com/cuda/cuda-c-programming-guide

  10. NVIDIA SLI Best Practices, [ONLINE]. DISPONIBLE EN: https://developer.nvidia.com/sli-best-practices

  11. 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

  12. 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

  13. FFT and Convolution Performance in Image Filtering on GPU ISSN :1550-6037

  14. 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

  15. Kittens, [ONLINE]. DISPONIBLE EN : http://www.funnykittensite.com/pictures/kitten_in_the_grass.htm

  16. ITK imageFileReader, [ONLINE]. DISPONIBLE EN : http://www.itk.org/Doxygen/html/classitk_1_1ImageFileWriter.html

  17. ITK imageFileWriter, [ONLINE]. DISPONIBLE EN : http://www.itk.org/Doxygen/html/classitk_1_1ImageFileReader.html

  18. CUDA Occupancy Calculator, [ONLINE]. DISPONIBLE EN :http://developer.download.nvidia.com/compute/cuda/CUDA_Occupancy_calculator.xls

  19. Intel HyperThreading Technology, [ONLINE]. DISPONIBLE EN : http://www.intel.com/content/www/us/en/architecture-and-technology/hyper-threading/hyper-threading-technology.html

  20. Intel TurboBoost Technology, [ONLINE]. DISPONIBLE EN : http://www.intel.com/content/www/us/en/architecture-and-technology/turbo-boost/turbo-boost-technology.html

  21. CUDA Fermi Architecture, [ONLINE]. DISPONIBLE EN : http://www.nvidia.com/object/fermi-architecture.html

  22. Open CL, [ONLINE]. Disponible en : https://www.khronos.org/opencl/

  23. Intel Graphics. [ONLINE]. Disponible en : http://www.intel.com/content/www/us/en/architecture-and-technology/hd-graphics/hd-graphics-developer.html

  24. AMD Graphics. [ONLINE]. Disponible en : http://www.amd.com/us/products/graphics/Pages/graphics.aspx

  25. 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/

  26. 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

  1. 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.
  1. 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



  1. 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.


  1. 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.


    1. 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


    1. 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
  1. Efectividad en la estimación y mitigación de los riesgos del proyecto


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.




Yüklə 177,97 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin