Sie sind auf Seite 1von 3

Tarea 2

Taller de Sistemas Operativos


Felipe Ortega
felipe.ortegas@alumnos.uv.cl

I. RESUMEN En la función print usage ofrece las opciones relacionadas


En el presente informe se explicara el proceso de a las necesidades del usuario al momento de necesitar
paralelización de un software que muestra una imagen paralelizar el programa, obteniendo de esta forma: cantidad
fractal del conjunto mandelbrot. Las imágenes fractales de de iteraciones, cantidad de threads, archivo de salida, nivel
mandelbrot, tienen la caracterı́stica de que su apariencia y de zoom. Ver Fig. 5.
la forma en que se distribuye no cambia al modificar la
escala de observación. En el archivo mandelbrot-threaded.c:

El software muestra la imagen procesada por un solo Se declaran variables globables (En la sección de
thread, el objetivo es paralelizar, es decir, hacer que trabajen Anexos, ver Fig. 6.), relacionadas al tamaño de imagen y
dos o mas hilos a la vez segmentación de esta para el empleo posterior de los threads.

Se crea la función mandelbrotThreaded, que setea


los datos locales como globales para la petición de recurso

de los threads, en la sección de Anexos, ver Fig 7.

II. INTRODUCCI ÓN La función thread.main, le otorga al thread el segmento de


El Objetivo es ejecutar el programa con la modificación trabajo para dibujar la imagen, mandelbrot.serial es donde
de la cantidad de threads que trabajan para ello, se utiliarán se genera la imagen, en la sección de Anexos ver Fig 8.
2, 4, 8, 16, 32, 64 y 128 threads. También se debe modificar
las iteraciones, hasta 256, 512, 1024, 2048, 4096. Para La estructura args, incluye el valor uinst32 NTHREADS,
paralelizar, se debe tener en cuenta que habrá topes respecto que se relaciona a los argumentos de entrada al programa
a cual hilo realiza cual tarea, en este caso particular, que los cuales son pasados como variable local a la función
segmento de la imagen es procesada por cual thread. El mandelbrotThreaded.
segundo objetivo es buscar diferencias en el tiempo de
ejecución, ya que en cualquier caso, este será modificado en
forma positiva (disminuir respecto a la versión secuencial), •

o forma negativa (aumenta el tiempo respecto a la versión


secuencial).
IV. ANALISIS DE TIEMPOS


En esta sección se exponen los gráficos que relacionan
el SpeedUp con número de threads, y el de S/threads con
el número de threads. En todos los casos de iteraciones,
III. IMPLEMENTACI ÓN se muestra que la mayor eficiencia se alcanza al usar dos
Se han modificado diversos segmentos en cuanto a los threads. En cuanto al SpeedUp, se alcanza el punto mayor
archivos de texto: con 16 threads en los casos de 256, 512 y 2048 iteraciones,
siendo el punto mayor alcanzado con 64 threads en 1024
En el archivo check args: iteraciones

En la función void check args1 se modifican los valores que Ver Fig. 1. gráfico con tiempos separados por threads,
espera el software para permitir como valor de entrada -t, Fig. 2. gráfico de SpeedUp y Fig. 3. gráfico de eficiencia.
para permitir definir la cantidad de threads y -i para definir
la cantidad de iteraciones. Ver Fig. 4.

1 Función que valida los argumentos de entrada al sistema.


V. CONCLUSION
Después de analizar los gráficos, se puede deducir que
el elemento mas importante es la cantidad de iteraciones,
ya que en ciertos casos el aumentar el número de threads
no afectará de ninguna forma, positiva ni negativa a la
ejecución del programa.

En el caso común, aunque no hay repercusiones negativas


debido a superar la cantidad “perfecta”, el uso de threads
debe ser mesurado debido a lo ya mencionado, y encontrar
un punto estratégico de máxima optimización de tiempo
con cantidad de threads que crea una diferencia relevante.

El uso de threads, demuestra que se puede lograr la


misma tarea en un tiempo de ejecución mejor, y de esta
forma, optimizar el uso de recursos en cuanto a tiempo.

VI. ANEXOS Fig. 2: Gráfico de Speed Up

Fig. 1: Gráfico de tiempo de ejecución

Fig. 3: Gráfico de eficiencia


Fig. 4: Respecto a la funcion check.args.

Fig. 7: Respecto de la función mandelbrotThreaded

Fig. 5: Respecto a la funcion print usage

Fig. 8: Respecto a la funcion thread main.

Fig. 6: Respecto a las variables globales.