Propuesta para Trabajo de Grado



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

Pruebas


Para comparar el prototipo diseñado e implementado, se compararon los tiempos de filtrado de una solución tradicional implementada serialmente en CPU.

Con el fin de configurar un escenario de pruebas comparable entre las dos soluciones, se decidió implementar el algoritmo de convolución en CPU como una extensión del prototipo final. Esto asegura que se estén midiendo tiempos exclusivamente de el proceso de convolución; se podría haber comparado contra la implementación de filtrado de ITK, pero esto habría implicado un menor control del entorno de pruebas, y un tiempo mayor en la ejecución de las mismas.


    1. Implementación convolución CPU


Se decidió implementar dos algoritmos de convolución serial en CPU:

  1. Convolución trivial

  2. Convolución separable

Estos dos algoritmos implementados permitieron ver más claramente la diferencia de complejidad algorítmica (en tiempo de ejecución) entre la convolución trivial y separable. Los dos fueron implementados de manera serial en C++.

Aunque se implementaron estos dos algoritmos, solo se ejecutaron sobre datos de imágenes de dos dimensiones, ya que la representación de datos era la más simple y que menos tiempo consumía en cuanto a desarrollo. El énfasis de CUDAlicious es en el prototipo CUDA y no en la implementación de las pruebas, por ello se decidió no gastar demasiado tiempo en la implementación en CPU.


    1. Entorno de pruebas


Con el fin de tener resultados comparables entre sí, los datos de prueba se limitaron a imágenes en dos dimensiones, a pesar de que el prototipo implementado utilizando CUDA soporte otras dimensionalidades. El filtro aplicado fue el de difuminado Gaussiano, en versión separable y no separable, con un tamaño fijo de 3x3 pixeles.

Los tamaños de las imágenes de prueba están descritos en la tabla 3, todas las unidades de tamaño están en pixeles.




Nombre imagen

Ancho

Alto

Tamaño total

W8.png

2048


1088

2228224


W82.png

5120


2816


14417920


W83.png

6016


3392


20406272

W84.png

6400


3584


22937600


Tabla 3: Descripción datos de prueba

Las pruebas se ejecutaron todas en el equipo de desarrollo principal (laptop Sager NP8130), ya que el equipo se encuentra modificado con respecto a la versión original (debido a una actualización del procesador del mismo) se describen las especificaciones técnicas de CPU y GPU en la tabla 4.



Tipo

Modelo

Frecuencia/núcleo

Cantidad núcleos

Memoria

CPU

Intel 2720QM


2200Mhz / 3300Mhz

4 / 8

8192MB


GPU

Nvidia GTX 460m


675Mhz


192

1536MB

Tabla 4: Descripción equipo de prueba

El procesador del equipo de prueba cuenta con la tecnología HyperThreading [19], debido a esto, aunque sólo cuenta con cuatro núcleos reales el sistema operativo reconoce ocho. Por otra parte, el mismo procesador también tiene la tecnología TurboBoost [20], que incrementa la frecuencia de reloj del mismo dependiendo de la carga bajo la que se encuentre; la frecuencia base para este modelo específico es 2200Mhz, y la mayor frecuencia posible bajo carga de cada núcleo es 3300Mhz.

La GPU utilizada es de la generación fermi [21] de Nvidia, por tanto la frecuencia de la misma se mantiene estable (675Mhz) mientras se encuentre bajo carga.

    1. Resultados de pruebas


La ejecución de los archivos de pruebas en el entorno arrojó los datos descritos por la gráfica 1.
Gráfica 1: Resultados prueba

Los tiempos graficados son el promedio de tres ejecuciones consecutivas de cada prueba, con el fin de disminuir la incertidumbre con respecto a la frecuencia de la CPU.


Utilizando la herramienta Nvidia Visual Profiler [26], se puede hacer un mejor análisis sobre el rendimiento de CUDAlicious.

En la gráfica 2 se aprecia el resultado que dá la herramienta cuando se ejecuta la versión separable en 2D. Nvidia Visual Profiler solo tiene en cuenta las funciones que se ejecutan en la tarjeta gráfica, por tanto no se verá reflejado allí nada que se ejecute en el procesador.



c:\users\danieldavid\dropbox\tg 2013\correcciones\profilerseparablev3.png

Gráfica 2: Resultados Nvidia Visual Profiler CUDA Sep

Con respecto a la utilización de los recursos computacionales de la GPU, en las gráficas 3 y 4 se aprecia la utilización de los núcleos de la GPU en la prueba separable y no separable respectivamente.

En los únicos casos en los que la actividad de los multiprocesadores de la GPU aparece en “n/a” es en las operaciones de copia entre la CPU y la GPU. El resto de operaciones fluctúan entre 91.6% y 100% de utilización.



Gráfica 3: Utilización de GPU CUDA Sep



Gráfica 4: Utilización de GPU CUDA Non-Sep


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