• No se han encontrado resultados

1. Introducción 1.1. CPU

N/A
N/A
Protected

Academic year: 2021

Share "1. Introducción 1.1. CPU"

Copied!
14
0
0

Texto completo

(1)
(2)
(3)

1.

Introducci´

on

El presente proyecto tiene como objetivo ver la importancia de paralelizar algoritmos cuyo requerimiento de c´omputo es muy grande, con el fin de disminuir el tiempo de ejecuci´on para tener resultados en un tiempo m´as corto, as´ı como poder correr sistemas mucho m´as grandes.

Tomaremos el modelo de Ising el cual se analizar´a en 2D, ´este modelo lo ejecutaremos secuencial en un CPU y en paralelo ejecut´andose en un GPU, mediremos tanto el tiempo de ejecuci´on as´ı como las propiedades termodin´amicas y como se afectan por el tama˜no finito del sistema.

La paralelizaci´on es una forma de c´omputo o c´alculo en la cual varios procesos se pueden realizarse simult´aneamente. Basado en el principio de dividir los problemas grandes para obtener varios problemas peque˜nos, que son posteriormente solucionados en paralelo.

Un programa secuencial se puede paralizar de 3 formas:

Nivel de procedimientos: en ´este caso se ejecutan varias llamadas a procedimientos de forma simult´anea.

Nivel de bucles: en ´este caso se ejecutan varias iteraciones y/o sentencias del bucle en paralelo. Nivel de bloque b´asico: en ´este caso se ejecutan en paralelo varias operaciones de un bloque de sentencias de asignaci´on.

El proceso de paralelizaci´on se realiza a nivel de programa fuente en alto nivel, generando una versi´on equivalente paralela tambi´en en alto nivel. A partir del programa original se realiza un detallado an´alisis de las dependencias entre sentencias del bucle. Estas dependencias determinan un orden parcial de ejecuci´on de las operaciones del bucle que debe ser preservado en la nueva versi´on generada la cual se paraleliza.

Este proyecto tiene como objetivo la paralelizaci´on, usando CUDA, de un modelo de Ising en 2D y usando la metodolog´ıa de tablero de ajedrez para analizar los efectos de tama˜no finito en las propiedades termodin´amicas y adem´as de calcular los tiempos de ejecuaci´on como funci´on del tama˜no del sistema y su comparaci´on con uno simular usando c´odigo secuencial.

1.1.

CPU

La CPU (Central Procesing Unit) es la parte inteligente del sistema, interpreta las instrucciones del programa de usuario y consulta el estado de las entradas; dependiendo de dichos estados y del programa, ordena la activaci´on de las salidas deseadas.

La CPU est´a constituida por los siguientes elementos:

Unidad de control (UC): es la responsable de seguir cada una de las operaciones que realiza una instrucci´on.

Unidad aritm´etica y l´ogica: es la responsable de recibir todas las operaciones asignadas y convertirlas en datos, esas operaciones son del tipo l´ogico-matem´atico y son respaldadas por un co-procesador matem´atico.

El registro: es responsable en detallar las instrucciones tanto efectivas como fallidas. Podemos mencionar un sub-grupo en el que se encuentra el registro contador y es el esponsable de indicar cu´al es la instrucci´on que sigue en el proceso y la memoria cach´e que es la responsable de guardar los procesos que son de uso regular con el fin de cargarlos r´apidamente al ser requeridos.

(4)

La CPU es una unidad de procesamiento general, est´a preparada para operaciones matem´aticas y l´ogicas con las cuales podemos realizar casi cualquier tarea a una velocidad r´apida. El problema viene cuando nos metemos en programas con una carga gr´afica muy grande, como pueden ser videojuegos o programas de dise˜no 3D. Estos programas est´an continuamente procesando formas y texturas, y hacerlo por medio de la CPU no suele ser la mejor manera, ya que no est´a espec´ıficamente dise˜nada para estas tareas (ver figura 1).

Figura 1: Descripci´on simplificada del CPU.

1.2.

GPU

Por sus siglas en ingl´es, la GPU es la Graphics Processing Unit[2], o unidad de procesamiento de gr´aficos. Impulsada por la insaciable demanda del mercado de tiempo real, los gr´aficos de alta definici´on en 3D, la GPU programable se ha convertido en un procesador de varios n´ucleos, con paralelismo alto y multihilo, con una tremenda potencia de c´alculo y un gran ancho de banda de memoria.

Sin embargo, existe una discrepancia con respecto a la capacidad de punto flotante entre la CPU y la GPU debido a que la GPU est´a especializada para la computaci´on intensiva, la com-putaci´on de paralelismo alto, y por lo tanto dise˜nada de tal manera que m´as transistores se dedican al procesamiento de datos en lugar de almacenamiento en cach´e de datos y al control de flujo, por lo que en ocasiones la cantidad de accesos a memoria puede jugar en su contra. La GPU es especialmente adecuada para abordar los problemas que se pueden expresar como c´alculos paralelos de datos (el mismo programa de ejecuta en muchos elementos de datos en paralelo) con alta inten-sidad aritm´etica. Como el mismo programa se ejecuta para cada elemento de datos, hay un menor requerimiento de control de flujo sofisticado, y como se ejecuta en muchos elementos de datos y tienen alta intensidad aritm´etica, la latencia de acceso a memoria puede ser ocultada con c´alculos en lugar de cach´es de datos grandes (ver figura 2).

Cuda es un chip que est´a en la tarjeta gr´afica del ordenador el cual se encarga del procesamiento gr´afico, est´a constituido de varios n´ucleos que ofrecen alto rendimiento, encargada de procesar gr´aficos u operaciones de coma flotante.

(5)

Figura 2: Arquitectura de un GPU

Algunas de las caracter´ıstica principales que deben de considerarse cuando se utiliza la GPU para realizar c´alculos mat´ematicos son:

Todos los n´ucleos ejecutan la misma instrucci´on simult´aneamente pero con distintos datos (ver figura 3).

M´ınimo de 32 hilos realizando la misma tarea (casi) al mismo tiempo.

T´ecnica tradicional en el procesamiento gr´afico y en muchas aplicaciones cient´ıficas.

Actualmente existen tres grandes tipos de unidades de procesamiento gr´afico, m´as que por la ar-quitectura, la diferencia entre ellos es por el modo en que son implementadas las GPU:

Tarjetas dedicadas: ´este tipo de unidades gr´aficas son las que proporcionan mayor potencia. Como su nombre lo indica, tienen una serie de especificaciones y est´an dise˜nadas para cumplir con sus tareas espec´ıficas, por lo que son mucho m´as eficientes. Generalmente se suele entender que una tarjeta dedicada es aquella que se integra a la tarjeta madre mediante un puerto aparte. Esto ´ultimo no siempre es necesario, y lo que realmente define a una tarjeta gr´afica dedicada es que tiene RAM independiente que solo podr´a ser utilizada por el GPU, y mientras cumpla con este requisito puede estar integrada a la placa base o incluso al CPU.

Tarjetas integradas: a diferencia de las unidades dedicadas, las integradas utilizan la memoria del sistema para realizar sus funciones. Son este tipo de soluciones las m´as comunes en las

(6)

compuatdoras modernos, us´andose casi en el 90 % de los equipos de c´omputo, incluyendo smartphones, tablets y la mayor´ıa de PCs. Con frecuencia el n´ucleo central de estas unidades sol´ıa estar en la tarjeta madre, pero m´as recientemente las cosas han cambiado, y tanto AMD como Intel suelen integrarlas ahora en sus procesadores, y les han denominado AMD Accelerated Processing Unit e Intel HD Graphics respectivamente.

Tarjetas h´ıbridos: est´an dise˜nadas para mantener precios relativamente bajos y al mismo tiem-po asegurar niveles de tiem-potencia adecuados, las unidades gr´aficas h´ıbridas tambi´en comparten la memoria del sistema, pero para disminuir el tiempo de latencia de esta ´ultima, integran una cantidad limitada de memoria propia que se encarga de realizar las labores inmediatas. Suele ser ´este el tipo de gr´aficos que encontraremos en compuatdoras port´atiles que prometen tarjetas dedicadas (ver figura 4).

A diferencia de los procesadores centrales, dise˜nados con pocos n´ucleos pero altas frecuencias de reloj, las GPU suelen tener grandes cantidades de n´ucleos de procesamiento a frecuencias de reloj relativamente bajas. En la actualidad, la mayor´ıa de los n´ucleos de procesamiento est´an dirigidos a dos funciones: procesamiento de v´ertices y de p´ıxeles.

Adem´as, este procesador est´a espec´ıficamente dise˜nado para trabajar con gr´aficos, con funciones espec´ıficas y una arquitectura muy basada en el procesamiento en paralelo. En pocas palabras, con la aceleraci´on por GPU lo que hacemos es quitar trabajo a la CPU y d´arselo a la GPU, que lo har´a m´as r´apido y mejor.

Algunos programas usan aceleraci´on por GPU, pero sin embargo no trabajan con formas, como por ejemplo los reproductores de v´ıdeo, entonces, ¿para qu´e usan la GPU? pues algunas tarjetas gr´aficas soportan la decodificaci´on por hardware, es decir, dan la posibilidad de decodificar un v´ıdeo por medio de un chip integrado, que lo hace m´as r´apido y quitando carga a la CPU, por ejemplo, un GPU Chrome apenas pod´ıa con 36 im´agenes, mientras que con la aceleraci´on GPU se puede ver c´omo IE 9 manejaba hasta 256 im´agenes con bastante fluidez.

(7)

Otras aplicaciones tambi´en usan la aceleraci´on por GPU, desde la versi´on CS4, Photoshop y el resto de la suite de Adobe aprovecha la potencia de la tarjeta gr´afica para aumentar el rendimiento de la aplicaci´on, sobre todo cuando trabaja con gr´aficos 3D. Google Earth tambi´en tiene aceleraci´on por GPU y en general, todos los programas que trabajen con 3D.

Figura 4: Comparaci´on de las arquitecturas del CPU y GPU.

1.3.

OpenGL

OpenGL (Open Graphics Library)[3] es una especificaci´on est´andar que define una API multi-lenguaje y multiplataforma para escribir aplicaciones que produzcan gr´aficos 2D y 3D. La interfaz consiste en m´as de 250 funciones diferentes que pueden usarse para dibujar escenas tridimension-ales complejas a partir de primitivas geom´etricas simples, tales como puntos, l´ıneas y tri´angulos. Se usa ampliamente en CAD, realidad virtual, representaci´on cient´ıfica, visualizaci´on de informaci´on y simulaci´on de vuelo. Tambi´en se usa en desarrollo de videojuegos, donde compite con Direct3D en plataformas Microsoft Windows.

OpenGL consiste en una serie de librer´ıas y rutinas de clases por lo cual (ver figura 5), OpenGL no es un paquete de software de renderizado y modelado como Blender o 3D Max, es una API de bajo nivel que proporciona una interfaz de hardware de gr´aficos. No es por lo tanto ning´un lenguaje de programaci´on, sino tan s´olo un conjunto de librer´ıas que son utilizadas a trav´es de lenguajes de programaci´on como VisualC++ para conseguir un interfaz software entre las aplicaciones y el hardware gr´afico. OpenGL permite:

1. Construir formas geom´etricas a partir de primitivas.

2. Ubicar los objetos en el espacio tridimensional y seleccionar el punto de vista de la escena. 3. Aplicar el color a los objetos, ya sea mediante una asignaci´on expl´ıcita de la aplicaci´on, a

partir de las condiciones de iluminaci´on o mediante la utilizaci´on de texturas.

4. Convertir la descripci´on matem´atica de los objetos y la informaci´on sobre el color en pixeles de la pantalla, proceso que se llama rasterizaci´on.

Existen implementaciones eficientes de OpenGL suministradas por fabricantes para Mac OS, Mi-crosoft Windows, Linux, varias plataformas Unix, y PlayStation 3. Tambi´en existen varias

(8)

im-Figura 5: Representaci´on gr´afica del proceso de reasterizaci´on con OpenGL.

plementaciones software que permiten que OpenGL est´e disponible para diversas plataformas sin soporte de fabricante.

1.4.

MPI

MPI (Message Passing Interface)[1] es un est´andar que define la sintaxis y la sem´antica de las funciones contenidas en una biblioteca de paso de mensajes dise˜nada para ser usada en programas que exploten la existencia de m´ultiples procesadores. El modelo de programaci´on que subyace tras MPI es MIMD (Multiple Instruction streams, Multiple Data streams)i (ver figura 6), un caso partic-ular de MIMD en el que todos los procesos ejecutan el mismo programa, aunque no necesariamente la misma instrucci´on al mismo tiempo.

Figura 6: Representaci´on de Multiple Instruction Streams (MIMD) utilizado en MPI. MPI proporciona una librer´ıa de funciones para C, C++ o Fortran (77 y 90) que son empleadas en los programas para comunicar datos entre procesos, el paso de mensajes es una t´ecnica empleada en programaci´on concurrente para aportar sincronizaci´on entre procesos y permitir la exclusi´on mutua. Su principal caracter´ıstica es que no precisa de memoria compartida, por lo que es muy importante en la programaci´on de sistemas distribuidos. Algunas caracter´ısticas de MPI son:

1. Definir un entorno de programaci´on ´unico que garantice la portabilidad de las aplicaciones paralelas (multiprocesadores, multicomputadores, redes, heterog´eneos).

(9)

2. Definir totalmente la interfaz de programaci´on, sin especificar c´omo debe ser la implementaci´on del mismo.

3. Ofrecer implementaciones de calidad, de dominio p´ublico, para favorecer la extensi´on del est´andar.

4. Existencia de implementaciones libres: Mpich, LAM-MPI, OpeinMPI, PVM, etc. Algunas desventajas de MPI son:

1. El acceso remoto a memoria es lento. 2. La programaci´on puede ser complicada.

2.

Objetivos

El objetivo principal de este proyecto es usar la tecnolog´ıa CUDA de NVIDIA para desarrollar y optimizar un algoritmo en 2D para un modelo de Ising y su comparaci´on en rendimiento con c´odigos en serial.

Estudiar el efecto que tienen las propiedades termodin´amicas sobre el efecto de tama˜no finito y como se ven afectadas por el tiempo en la simulaci´on.

3.

Modelo de Ising

El modelo de Ising, llamado as´ı en honor al f´ısico Ernst Ising quien lo presento en 1925[4], y el cual es un modelo muy sencillo para estudiar el fen´omeno f´ısico del ferromagnetismo. El modelo consiste de un arreglo de M puntos fijos en una red con diferente conetividad y es un modelo matem´atico de ferromagnetismo al estudiar mec´anica estad´ıstica (ver figura 8). El modelo consta de variables discretas que representan los momentos dipolares magn´eticos de los espines at´omicos que pueden estar en uno de dos estados, qu´ı representados por + y −. Los giros est´an dispuestos en una red, permitiendo que cada giro pueda interactuar con sus primeros vecinos. El modelo de Ising permite identificar transiciones de fase de la is´otropa al ferrofluido y es un modelo simplificado de la realidad. El modelo de Ising bidimensional es uno de los modelos estad´ısticos m´as simples para mostrar una transici´on de fase.

Los elementos microsc´opicos de dicha red, se les identifica con part´ıculas at´omicas y ´unicamente se condidera su momento magn´etico y se les denomina espines, solo admiten dos posibles estados de energ´ıa: abajo/arriba, 0/1 o -1/+1 en las diversas interpretaciones posibles. En el caso del ferrofluido los vecinos prefieren alinearse y significa que {+, +} y {−, −} tienen la energ´ıa m´as baja que lo pares {+, −} y {−, +} (ver figura 8). La energ´ıa de interacci´on en un modelo de Ising se representa por:

E = −JX

k,l

σkσl (1)

donde σk,les el valor de los espines vecionos y J es un par´ametro positivo y aqu´ı tomaremos J = 1.

En dos dimensiones k y l difieren ya sea por un espaciado reticular en x o un espaciado en y. Esta suma se realiza solo una vez por cada par vecino. Por lo que primero se ejecuta sobre la mitad de

(10)

Figura 7: Representaci´on bidimensional del modelo de Ising. Este modelo considera M puntos fijos los cuales toman en consideraci´on un modelo de espines (momentos dipolares) que solo pueden tomar dos valores de energ´ıa, reprentados aqu´ı por + y −.

los vecinos. En el siguiente algoritmo se muestra como se calcula la energ´ıa de los vecinos en un

(11)

modelo Ising. C´alculo de la energ´ıa en el modelo de Ising input{σ1, ..., σN} E ← 0 f or k = 1, ..., N do f or n = 1, ..., N do j ← V ecinos(n, k) if (j 6= 0)then {E ← E − σkσj} output E (2) Si los movimientos de los espines son hacia arriba o abajo e independientes entonces todas las configuraciones son 2N ya que los valores de los espines pueden tomar: {σ

1, ..., σN} = {±1, ..., ±1}.

3.1.

Modelo bimensional: resultados

Mientras que el modelo de Ising unidimensional es un problema relativamente simple de resolver, el modelo de Ising bidimensional es altamente no trivial. Era s´olo el genio de las matem´aticas puras de Lars Onsager que fue capaz de encontrar una soluci´on anal´ıtica para el modelo de Ising bidimensional. La temperatura cr´ıtica para el modelo de Ising bidimesional esta dada por Tc =

2

log(1+√2)= 2.269.

A continuaci´on se presentan los resultados para el modelo de Ising en una red cuadrada de tama˜no L × L, los sistemas estudiados usando el c´odigo serial fueron: L = 8, 16, 32, 64 y 128, mientras que para el c´odigo desarrollado en CUDA fueron L = 8, 16, 32, 64, 128, 256, 512, 1024 y 2048. En ambos sistemas, los observables calculados fueron la energ´ıa E y la magnetizaci´on M como funci´on de la temperatura T , adem´as del tiempo de simulaci´on tsim.. En la figura 9 se muestran la

comparaci´on de los resultados obtenidos con el c´odigo serial y el c´odigo usando CUDA, podemos observar que los valores de la E son los mismos para un sistema de tama˜no L = 8, mientras que para el sistema con tama˜no L = 128, para el caso del c´odigo en el CPU los resultados difieren de los obtenidos con el c´odigo obtendios en el GPU, en la fase ferrofluida, esto se debe a que el tiempo de simulaci´on para el caso serial se debe de incrementar para obtener una mejor convergencia de la E en la fase ferrofluido y esto trae como consecuencia un tiempo de simulaci´on mayor[5]. En la figura 10(a) se muestran los resultados de los sistemas simulados con el CPU, se puede observar que al aumentar el tama˜no del sistema la convergencia en la energ´ıa e deficiente y para poder obtener el valor correcto, es necesario aumentar el n´umero de configuraciones del sistema, lo cual trae un aumento considerable en el tiempo de simulaci’on, en la figura 10(b) se muestran los resultados de la enrg´ıa como funci´on de la temperatura de sistema simulado en el GPU, podemos observar que los tama˜nos del sistema son considerablemente mayor que los que se pueden simular en el CPU, adem´as es posible aumentar el tiempo de simulaci´on para obtener una mejor convergencia de los observables en el sistema. Como conclus´on de los resultados obtenidos para un modelo de Ising bidimensional utilizando programaci´on serial y masivamente paralela, podemos observar que los

(12)

Figura 9: Energ´ıa vs. temperatura obtendida de las simulaciones con los c´odigos en el CPU y GPU para diferentes valores de L.

sistemas simulados con el c´odigo serial son muy limitados y las propiedades termodin´amicas sufren de un claro efecto en los tiempos de simulaci´on, mientrs que los obtenidos con el c´odigo en CUDA se pueden simular tama˜nos muy grandes, millones de espines en la red cuadradra y los resultados de la energ´ıa, presentada aqu´ı converge muy rapidamente al valor correcto calculado de la te´oria.

(13)

Figura 10: Energ´ıa vs. temperatura obtendida de las simulaciones con los c´odigos en el CPU (a) y GPU (b) para diferentes valores de L.

(14)

Referencias

[1] Parallel Programming with MPI, P. Pacheco, Morgan Kaufmann, 1996

[2] CUDA by Example: An Introduction to General-Purpose GPU Programming, J. Sanders, E. Kandrot, Addison-Wesley Professional, 2010.

[3] OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3 (8th Edi-tion), D, Shreiner, G. Sellers, J. M. Kessenich, B. M. Licea-Kane, Addison-Wesley Professional, 2013.

[4] Statistical Mechanics: Algorithms and Computations, W. Krauth, Oxford University Press, USA, 2006.

[5] M. Weigel, Simulating spin models on GPU, Comput. Phys. Commun. 182, 1833 (2011)

Aprobaci´on

Dr. Jos´e Antonio Moreno Razo Departamento de F´ısica

Referencias

Documento similar

CB3 - Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión

Actividades de carácter práctico mediante la utilización de las tecnologías de la información y las comunicaciones. Las TIC suponen un excelente soporte y canal para el tratamiento

Tal y como se hace constar en el artículo 29 del Real Decreto 412/2014, las solicitudes de plazas de estudiantes con estudios universitarios oficiales españoles parciales que deseen

Emisión de informe sobre la adecuación entre las competencias y conocimientos adquiridos de acuerdo con el plan de estu- dios del título de origen, o la experiencia laboral

Por otra parte, tal como se recoge en el reglamento interno de la Escuela de Doctorado de la Universidad de Málaga, para corregir desequilibrios entre líneas y profesores se

En aula docente: Resolución de problemas, actividades de diseño, ejercicios de simulación y/o demostración, realización de informes profesionales y/o técnicos, realización

Las solicitudes de reconocimiento presentadas, en las que se aleguen créditos obtenidos en títulos universitarios oficiales de Graduado, para la convalidación de asignaturas o

Algunos ejemplos fueron el caso de los Temas Transversales relacionados con la Educación Ambiental que comenzaron a aparecer en la cultura escolar con la LOGSE