• No se han encontrado resultados

Simulación de un R-Mesh en un LR-Mesh utilizando el algoritmo de TrifonovSimulation of a R-MESH on a LR-MESH using trifonov's algorithm 

N/A
N/A
Protected

Academic year: 2020

Share "Simulación de un R-Mesh en un LR-Mesh utilizando el algoritmo de TrifonovSimulation of a R-MESH on a LR-MESH using trifonov's algorithm "

Copied!
123
0
0

Texto completo

(1)

Fermin Alberto Armenta Cano

Y APROBADA POR EL SIGUIENTE COMIT ´E

Dr. Jos´e Alberto Fern´andez Zepeda Director del Comit´e

Dr. Andrey Chernykh Miembro del Comit´e

Dr. Carlos Alberto Brizuela Rodr´ıguez Miembro del Comit´e

Dr. Ricardo Arturo Ch´avez P´erez Miembro del Comit´e

Dr. Hugo Homero Hidalgo Silva Coordinador del programa de posgrado en Ciencias de la Computaci´on

Dr. David Hilario Covarrubias Rosales Director de Estudios de Posgrado

(2)

EDUCACI ´

ON SUPERIOR DE ENSENADA

PROGRAMA DE POSGRADO EN CIENCIAS EN CIENCIAS DE LA COMPUTACI ´ON

SIMULACI ´ON DE UN R-MESH EN UN LR-MESH UTILIZANDO EL ALGORITMO DE TRIFONOV

TESIS

que para cubrir parcialmente los requisitos necesarios para obtener el grado de MAESTRO EN CIENCIAS

Presenta:

FERMIN ALBERTO ARMENTA CANO

(3)

RESUMENde la tesis deFERMIN ALBERTO ARMENTA CANO, presentada como requisito parcial para la obtenci´on del grado de MAESTRO EN CIENCIAS en CIENCIAS DE LA COMPUTACI ´ON . Ensenada, Baja California, Junio de 2011.

SIMULACI ´ON DE UN R-MESH EN UN LR-MESH UTILIZANDO EL ALGORITMO DE TRIFONOV

Resumen aprobado por:

Dr. Jos´e Alberto Fern´andez Zepeda

Director de Tesis

Este trabajo de tesis se ubica en el ´area de c´omputo paralelo, espec´ıficamente dentro de los modelos reconfigurables. Estos modelos se dividen en varias ramas, una de las m´as estudiada es la arquitectura con ductos reconfigurables, espec´ıficamente la rejilla reconfigurable (R-Mesh). Debido a que la propagaci´on de cualquier se˜nal por los ductos de este modelo se supone constante (sin importar su longitud) y debido a su capacidad de utilizar sus ductos como herramientas computacionales, este modelo es m´as poderoso que muchos de los modelos paralelos convencionales, tales como la PRAM. El dise˜no de algoritmos para el modelo R-Mesh resulta f´acil ya que sus ductos facilitan la comunica-ci´on entre los procesadores; sin embargo, su implementaci´on es compleja. Por otro lado, existen versiones restringidas de dicho modelo, como el LR-Mesh, cuya implementaci´on es m´as factible; sin embargo, el dise˜no de algoritmos en ´el es m´as elaborado. Al contar con una simulaci´on ´optima en recursos entre los modelos R-Mesh y LR-Mesh se ganan los beneficios y se eliminan los inconvenientes de ambos.

En el presente trabajo de tesis se proponen dos estrategias para dise˜nar un algoritmo de simulaci´on de un R-Mesh sobre un LR-Mesh. El algoritmo de la Simulaci´on 1 restringe al m´ınimo la cantidad de procesadores que se utilizan, sin prestar atenci´on al tiempo de ejecuci´on. Debido a esta restricci´on, el algoritmo se ejecuta sobre un LR-Mesh deO(N2×

N2) procesadores con un tiempo de ejecuci´on deO(logN) unidades de tiempo. Por otro lado, el algoritmo de la Simulaci´on 2, restringe el tiempo de ejecuci´on al m´ınimo posible de acuerdo al algoritmo de Trifonov, sin prestar atenci´on al n´umero de procesadores. Debido a esta restricci´on, el tiempo de ejecuci´on de dicha simulaci´on es O(log logN) unidades de tiempo.

El objetivo de dise˜nar la Simulaci´on 1 es tener un punto de partida desde el cual se pudiera ir optimizando paulatinamente el tiempo de ejecuci´on, sin sacrificar en gran medida al n´umero de procesadores. Por otro lado, el objetivo de dise˜nar la Simulaci´on 2 es similar al de la Simulaci´on 1, tener un algoritmo de simulaci´on inicial a partir del cual se pudiera ir optimizando paulatinamente el n´umero de procesadores, sin sacrificar el tiempo de ejecuci´on.

(4)

ABSTRACTof the thesis presented byFERMIN ALBERTO ARMENTA CANO, as a partial requirement to obtain the MASTER IN SCIENCES degree in COMPUTER SCIENCES. Ensenada, Baja California, Junio 2011.

SIMULATION OF A R-MESH ON A LR-MESH USING TRIFONOV’S ALGORITHM

The present thesis focuses in the area of parallel computing, specifically on recon-figurable models. The reconrecon-figurable models are divided in several areas, the area of reconfigurable bus architectures is the most studied of all of them, specifically the re-configurable mesh (R-Mesh). The R-Mesh assumes that any signal propagates on its buses in constant time (regardless the length of the bus) and is capable of using the bus as computational tool; this model is more powerful than other convencional parallel models such as the PRAM. It is easy to design algorithms for the R-Mesh, since the characteristics of the bus facilitates the comunication among processors; however, its implementation is complicated. On the other hand, there are some restricted versions of this model, one of them is the LR-Mesh, whose implementation is more feasible; howe-ver, the algorithm design is more elaborated for this model. It is important to design an efficient simulation between these two models, so we can have the benefits and eliminate the disadvantages of both models.

In this work, we propose two strategies to design an algorithm that simulates a R-Mesh on a LR-Mesh. The algorithm of the Simulation 1 restricts the number of processors to the minimum, regardless the execution time. Due to this restriction, the algorithm executes on a LR-Mesh of O(N2 ×N2) processors, with an execution time of O(logN) time units. On the other hand, the algorithm of Simulation 2 restricts the execution time to the minimum, according to Trifonov’s algorithm, without considering the number of processors. Due to this restriction, the execution time of this simulation is O(log logN) time units.

The purpose of Simulation 1 is to have a basic algorithm, from which we could gradually optimize its execution time, without sacrificing the number of processors. On the other hand, the purpose of Simulation 2 is to have a basic algorithm, from which we could gradually optimize its number of processors, without sacrificing the execution time.

(5)

A mis padres

Fernado J. Armenta Zavala y Ma. Teresa Cano Diaz, por el gran cari˜no y apoyo que me han brindado incondicionalmente durante toda mi vida. Gracias a ustedes he cumplido muchos de mis sue˜nos.

A Vanessa Miranda

Por soportarme todo este tiempo y por haber aceptado la invitaci´on a ver una pel´ıcula en mi casa y ya nunca marcharte.

A mis hermanos

(6)

Agradecimientos

A mi asesor el Dr. Jos´e Alberto Fern´andez Zepeda por toda su ayuda.

A los miembros del comit´e de tesis:

Dr. Carlos Brizuela Rodr´ıguez, Dr. Andrey Chernykh y Dr. Ricardo Ch´avez P´erez

A todos mis amigos de la generaci´on y del cubo 103, por todos esos buenos momentos que pasamos juntos.

A todos los investigadores y personal del departamento de computaci´on por su ense˜nanza acad´emica, en especial a Caro y Lidia por sus sabios consejos que siempre me pon´ıan de buen humor.

(7)

Contenido

P´agina

Resumen en espa˜nol I

Resumen en ingl´es II

Dedicatoria III

Agradecimientos IV

Contenido V

Lista de Figuras VIII

I. Introducci´on 1

I.1. Trabajos Previos . . . 4

I.2. Motivaci´on . . . 7

I.3. Planteamiento del problema . . . 8

I.3.1. Objetivo General . . . 9

I.3.2. Objetivos Espec´ıficos . . . 9

I.4. Metodolog´ıa . . . 10

I.5. Organizaci´on del documento . . . 12

II. Marco Te´orico 13 II.1. M´aquina de Turing . . . 13

II.1.1. M´aquina de Turing determin´ıstica . . . 14

II.1.2. M´aquina de Turing determin´ıstica de una cinta . . . 16

II.1.3. M´aquina de Turing de k-cintas . . . 16

II.1.4. M´aquina de Turing no determin´ıstica . . . 17

II.1.5. M´aquina de Turing sim´etrica . . . 17

II.1.6. Notaci´on modular para las m´aquinas de Turing . . . 19

II.1.7. Algoritmos representados en una MTD . . . 20

II.2. C´omputo Reconfigurable . . . 31

II.2.1. Introducci´on a la rejilla reconfigurable . . . 31

II.2.2. Ciclo de m´aquina en el R-Mesh . . . 32

II.2.3. Modelo LR-Mesh . . . 33

II.2.4. Algoritmos b´asicos en el LR-Mesh . . . 34

II.3. La m´aquina de Turing y el LR-Mesh . . . 38

II.3.1. Clases de complejidad . . . 39

(8)

Contenido

(continuaci´

on)

P´agina

III. Algoritmo de Trifonov 40

III.1. Algoritmo de Chong y Lam . . . 42

III.2. Pseudoc´odigo algoritmo de Trifonov . . . 45

III.2.1. Programa principal . . . 45

III.3. Algoritmos utilizados por Trifonov representados en una MTD . . . 46

III.3.1. Problema: Determinar si v1 < v2 en la MTD . . . 46

III.3.2. Problema: Determinar si v1 =v2 en la MTD . . . 47

III.3.3. Problema: Determinar si v1 <d v2 en la MTD . . . 48

III.3.4. Problema: Revisa si vc D, A o I en la MTD . . . 49

III.4. Simulaci´on de una MTD en un LR-Mesh . . . 51

III.4.1. Problema: Determinar si existe la misma cantidad de ceros con-secutivos que de unos en la MTD . . . 52

III.4.2. Problema: Determinar si v1 < v2 en la MTD . . . 57

III.4.3. Problema: Determinar si v1 < v2 en la MTD utilizando O(x) compuertas OR. . . 60

IV. Simulaci´on eficiente en procesadores de un R-Mesh en un LR-Mesh 64 IV.1. Mapeo de un R-Mesh a un LR-Mesh . . . 64

IV.2. Enganchamiento a vecinos inactivos . . . 68

IV.3. Obtener el grado de los vecinos de cada v´ertice activo en G . . . 69

IV.4. Mapeo del grafo G al pseudo-bosque G0 . . . 72

IV.5. Construcci´on del tour de Euler . . . 73

IV.5.1. Preparaci´on del LR-Mesh para el tour de Euler . . . 73

IV.5.2. Conexiones de cada pseudo-´arbol en G0 . . . 75

IV.5.3. Realizar broadcast en cada pseudo-´arbol enG0 . . . 76

IV.6. Ordenar los v´ertice en G0 por componente . . . 76

IV.7. Calcular el n´umero de v´ertices en G0 por componente . . . 77

IV.8. Determinar las aristas externas de cada ´arbol . . . 79

IV.9. An´alisis de la simulaci´on . . . 81

V. Simulaci´on eficiente en tiempo de un R-Mesh en un LR-Mesh 84 V.1. Comparaci´on de dos n´umeros de x bits . . . 85

V.2. Malla comparadora para obtener el mayor de d n´umeros . . . 88

V.3. Malla comparadora para obtener td (el grado en el ´arbol) del v´ertice cv 90 V.4. Malla para ejecutar el tour de Euler partiendo del v´ertice cv . . . 92

V.5. Malla para mover el v´ertice cv a la ra´ız de su ´arbol . . . 95

V.6. Malla para calcular el grado d0 en el ´arbolT del super-v´ertice cv0 . . . 97

(9)

Contenido

(continuaci´

on)

P´agina V.8. Malla para ejecutar el tour de Euler en super-v´ertices partiendo de cv0 103 V.9. Malla para mover al super-v´erticecv0 a la ra´ız del ´arbol de super-v´ertices106 V.10. An´alisis del algoritmo de la Simulaci´on 2 . . . 107

VI. Conclusiones y trabajo futuro 109

(10)

Lista de Figuras

Figura P´agina

1. Modelos computacionales. . . 2

2. Clasificaci´on de los modelos reconfigurables . . . 3

3. Simulaciones del modelo R-Mesh en el modelo LR-Mesh . . . 9

4. Esquema representativo de una m´aquina de Turing. . . 13

5. Ejemplo de transiciones en una MTND como ´arbol enraizado. . . 18

6. Suma de dos n´umeros de x bits utilizando notaci´on modular. . . 21

7. Posibles configuraciones internas para cada procesador de un R-Mesh . . 32

8. Posibles configuraciones internas para cada procesador de un LR-Mesh . 34 9. Ejemplo de suma binaria en un LR-Mesh . . . 38

10. Diagrama de estados para el problema de determinar si existe la misma cantidad de ceros consecutivos que de unos en una MTD. . . 56

11. Diagrama de estados para el problema que determina siv1 < v2 en la MTD. 61 12. Diagrama de estados para el problema que determina siv1 < v2utilizando O(logx) compuertas OR en la MTD. . . 63

13. Simulaci´on del modelo R-Mesh en el modelo LR-Mesh . . . 83

14. Posibles configuraciones del procesador comparador en un LR-Mesh. . . . 85

15. La mallaM1 compara dos n´umeros de x bits. Para este ejemplo, x= 4. . 86

16. Esquema de modificaci´on de procesadores tipo OR. . . 87

17. Malla resultante al quitar los procesadores tipo OR. . . 87

18. Malla M1. Ejemplo de una comparaci´on dos n´umeros de tres bits en un LR-Mesh. . . 88

19. Malla M2. Esta malla calcula el mayor de d n´umeros de x bits. . . 89

(11)

Lista de Figuras

(continuaci´

on)

Figura P´agina

21. Malla M4. Esta malla calcula un paso en el tour de Euler sobre el ´arbol del v´ertice cv. . . 93 22. La mallaM5 est´a formada por N mallas tipo M4. . . 94 23. Malla M6. tour de Euler sobre el LR-Mesh. . . 95 24. MallaM7. tour de Euler sobre el LR-Mesh, construido con base en mallas

tipoM5bis. . . 96

25. Malla M8. Esta malla calcula el grado d0 en el ´arbol T del super-v´ertice

cv0. . . 100 26. Malla M10. Esta malla calcula el mayor de dos super-v´ertices en grado . . 102 27. Malla M20. Esta malla calcula el mayor de d0 v´ertices en grado y etiqueta. 103 28. Malla M30. Esta malla calcula el grado td0 del super-v´ertice cv0. . . 104 29. Malla M40. Esta malla calcula un paso en el tour de Euler sobre el ´arbol

de super-v´ertices. . . 104 30. La mallaM50 est´a formada por N mallas tipo M40 . . . 105 31. Malla M60. tour de Euler sobre el LR-Mesh. . . 105 32. MallaM70. tour de Euler sobre el LR-Mesh, construido con base en mallas

(12)

Introducci´

on

Existe una gran variedad de modelos computacionales, as´ı como muchas clasificacio-nes basadas en diversos criterios. Uno de estos criterios es el n´umero de procesadores, el cual permite dividir a los modelos computacionales en dos grandes ramas, los se-cuenciales (los que tienen un solo procesador) y los paralelos (que tienen dos o m´as procesadores). El presente trabajo de tesis se enfoca y se relaciona con el grupo de modelos computacionales paralelos; los modelos de c´omputo paralelo y distribuido que se han propuesto hoy en d´ıa, surgen de la necesidad de procesar una gran cantidad de informaci´on en tiempo reducido. La Figura 1 muestra la clasificaci´on de los modelos computacionales antes mencionada; en esta clasificaci´on se puede encontrar el mode-lo PRAM (Parallel Random Access Machine) (J´aJ´a, 1992), el Torus Polim´orfico (Li y Maresca, 1989), los grafos ac´ıclicos dirigidos (Piatt et al., 2000) y los modelos reconfi-gurables (RN (Ben-Asher et al., 1991), RMBM (Trahan et al., 1996), PARBS (Wang y Chen, 1990)), entre otros. Asimismo, dentro de los modelos reconfigurables, una de sus ramas m´as estudiada es la arquitectura con ductos reconfigurables, espec´ıficamente la rejilla reconfigurable (R-Mesh).

Las arquitecturas con ductos reconfigurables se han desarrollado con base en una gran variedad de t´ecnicas y algoritmos (Bertossi y Mei, 2000; Bokka et al., 1995; Chao

(13)

Figura 1. Modelos computacionales.

que permiten agilizar el proceso de comunicaci´on entre los procesadores. En la Figura 2 se muestran la clasificaci´on de los modelos reconfigurables y se se˜nalan los dos modelos en los cuales se enfoca el presente tema de investigaci´on: la rejilla reconfigurable (Re-configurable Mesh o R-Mesh) y la rejilla re(Re-configurable lineal (Linear Re(Re-configurable Mesh o LR-Mesh).

(14)

Figura 2. Clasificaci´on de los modelos reconfigurables

(donde N es el tama˜no de la entrada) (Alvarez y Greenlaw, 2000).

Este resultado implica que las clases de complejidad L y SL son equivalentes (ver Secci´on II.3.1). Como el modelo LR-Mesh puede resolver todos los problemas pertene-cientes a la clase de complejidad L, por lo tanto, los resultados de Reingold tambi´en implican que los modelos LR-Mesh y R-Mesh son computacionalmente igual de podero-sos. Se dice que dos modelosX yY son igual de poderosos, si y s´olo si X puede simular un ciclo de m´aquina arbitrario deY en tiempo constante y viceversa. Por otro lado, y de forma independiente al trabajo de Reingold, utilizando una t´ecnica diferente, Trifonov (2005) desarroll´o un algoritmo en la m´aquina de Turing determin´ıstica que resuelve el problema USTCON enO(logNlog logN) espacio.

(15)

A continuaci´on se muestra una breve descripci´on de los trabajos previos antes men-cionados, la motivaci´on para realizar este trabajo, as´ı como la definici´on formal del problema, la metodolog´ıa que se utiliza, y finalmente la estructura del documento.

I.1.

Trabajos Previos

Fern´andez-Zepeda et al. (2002) dise˜naron una simulaci´on de un R-Mesh de N ×N

procesadores en un LR-Mesh de N × N procesadores. La simulaci´on se basa en la t´ecnica de linealizaci´on de ductos, cuyo objetivo es transformar cualquier ducto no lineal (aceptado por un R-Mesh) a un ducto lineal equivalente (aceptado por un LR-Mesh). Esta simulaci´on es ´optima en el n´umero de procesadores y fue la simulaci´on m´as r´apida hasta el 2005. Su tiempo de ejecuci´on es O(logN).

La linealizaci´on de un ducto es una t´ecnica que se aplica a cualquier ducto no lineal. Esta t´ecnica consiste primero en modelar al ducto como si fuera un grafo, donde los nodos son los puertos por donde pasa el ducto; despu´es se crea iterativamente el ´arbol de esparcimiento de dicho grafo (un ´arbol de esparcimientode un grafo Ges el subgrafo conectadoT deGque contiene todo los v´ertices deGy ning´un ciclo). Una vez encontrado el ´arbolT, se crea un “pseudo-tour de Euler” deT (untour de Euleres un ciclo dirigido en alg´un grafoM que recorre en forma cerrada cada arista deM una sola vez). Para crear el tour de Euler, el ´arbol T se transforma en un grafo T0, si cada arista (v1, v2) en T se reemplaza por dos aristas dirigidasv1, v2

yv2, v1

. Al hacer esta transformaci´on,T0se convierte en un grafo Euleriano y por lo tanto tiene un tour de Euler. Elpseudo-tour de Eulerse genera eliminando una de las arista que conforma el ciclo enT0, generalmente la ´

(16)

del R-Mesh como si fuera un ducto lineal. A continuaci´on se describe en forma general los pasos que requiere esta simulaci´on.

En Fern´andez-Zepeda et al. (2002) se define la representaci´on de una configuraci´on arbitraria de un R-Mesh como un grafoG, donde los nodos y las aristas deGrepresentan a los puertos y a los ductos del R-Mesh, respectivamente. Sean v1 y v2 dos nodos del grafo G. Existe una arista en G entre los nodos v1 y v2 si y s´olo si existe una conexi´on entre el puerto p1 (simulado por v1) y p2 (simulado por v2) en el R-Mesh.

Para realizar la simulaci´on se ejecutan los siguientes pasos:

1. Se identifica el tipo de ducto como no lineal, lineal c´ıclico o lineal ac´ıclico.

2. Se eliminan los ciclos de los ductos lineales.

3. Se construye el grafo podado (raked graph), esto es, removiendo las cadenas de nodos lineales que est´en conectados a nodos no lineales.

4. Se genera un grafo destilado (distilled graph) para crear un ´arbol de esparcimiento.

5. Se genera el ´arbol de esparcimiento y el pseudo-tour de Euler para cada compo-nente conectado del grafo destilado.

6. Se fusionan los ´arboles de esparcimiento (esta operaci´on es la de mayor costo ya que requiereO(logN) unidades de tiempo).

(17)

que requiere la simulaci´on es O(logN) ya que la fusi´on de los ´arboles de esparcimiento requiere O(logN) unidades de tiempo.

Posteriormente, C´ordova-Flores et al. (2007) utiliza el algoritmo desarrollado por Reingold (2005) para dise˜nar una simulaci´on del modelo R-Mesh en el LR-Mesh en tiempo constante, siendo ´esta la primera en su clase; sin embargo, esta simulaci´on re-quiere una gran cantidad de procesadores haciendo que su implementaci´on pr´actica no sea factible. C´ordova aprovecha el algoritmo de Reingold (2005) para resolver el proble-ma de componentes conectados en el grafo que simula a un ducto no lineal. La parte m´as importante del algoritmo de Reingold (2005) es la transformaci´on de un grafo regular cualquiera en un expansor (unexpansores un grafo disperso con alta conectividad). Una vez generado el expansor, determinar la conectividad entre dos v´ertices cualesquiera es trivial.

C´ordova-Flores et al. (2007) presentan la simulaci´on en tres fases, las cuales corren en tiempo constante. Estas fases se describen brevemente a continuaci´on.

1. Transforma el grafo G que representa los ductos no lineales de un R-Mesh en un expansor. Para este paso se utiliza el algoritmo de Reingold (2005).

2. Resuelve el problema de componentes conectados en el expansor deG(a trav´es de resolver el problema USTCON para todas las combinaciones de pares de nodos, utilizando fuerza bruta). Esto equivale a calcular la cerradura transitiva (transitive clousure) de G.

(18)

La diferencia principal entre el trabajo de C´ordova-Flores et al. (2007) y el de Fern´andez-Zepeda et al. (2002) consiste en que el primero es un algoritmo que co-rre en O(1) unidades de tiempo, pero utiliza una cantidad extremadamente grande de procesadores, aproximadamente O(N60), haciendo imposible su implementaci´on en la pr´actica. Por otro lado, la simulaci´on de Fern´andez-Zepeda et al. (2002) utiliza una cantidad ´optima de procesadores, esto es O(N2); sin embargo, su tiempo de ejecuci´on es relativamente alto, O(logN) unidades de tiempo.

I.2.

Motivaci´

on

El contar con una simulaci´on ´optima en recursos entre los modelos R-Mesh y LR-Mesh hace que se ganen los beneficios y se eliminan los inconvenientes de ambos modelos. Por un lado, el dise˜no de algoritmos para el modelo R-Mesh resulta m´as f´acil ya que sus ductos no lineales facilitan la comunicaci´on entre los procesadores; sin embargo, la im-plementaci´on de ductos no lineales es compleja. Por otro lado, la implementaci´on de un LR-Mesh es muy viable, de hecho existen arquitecturas basadas en fibras ´opticas que se comportan en forma muy similar al LR-Mesh; sin embargo, el dise˜no de algoritmos en el LR-Mesh es m´as elaborado.

(19)

una simulaci´on en tiempo constante (esa ya existe), se busca un balance entre el tiempo de ejecuci´on y la cantidad de procesadores requeridos para la simulaci´on.

Actualmente existen algunas simulaciones de un R-Mesh en un LR-Mesh; sin embar-go, todas estas simulaciones involucran un sobre-costo ya sea en tiempo o en el n´umero de procesadores requeridos. La idea de esta investigaci´on es proponer un algoritmo nue-vo para la simulaci´on de un R-Mesh en un LR-Mesh, cuyo tiempo de ejecuci´on sea

O(log logN). Adicionalmente, se busca que la cantidad de procesadores requeridos sea la menor posible.

I.3.

Planteamiento del problema

Existen dos simulaciones del modelo R-Mesh en el Modelo LR-Mesh, la primera de Fern´andez-Zepeda et al. (2002) es eficiente en cuanto al n´umero de procesadores que requiere, O(N2); sin embargo, es relativamente lenta dado que se ejecuta en O(logN) unidades de tiempo.

En la segunda simulaci´on, C´ordova-Flores et al.(2007) logra un tiempo de ejecuci´on constante; sin embargo, dicha simulaci´on tiene la desventaja de requerir un n´umero astron´omico de procesadores, lo que la hace interesante desde el punto de vista te´orico, pero inviable desde el punto de vista pr´actico.

Por tal raz´on se busca llegar a un punto medio entre ambos resultados, lo cual es dise˜nar una nueva simulaci´on que sea m´as r´apida que la de Fern´andez-Zepeda et al.

(2002) sin ser constante, y por otro lado que requiera mucho menos procesadores que la de C´ordova-Flores et al. (2007).

(20)

de-termin´ıstica conO(logNlog logN) espacio. Por lo que, se conjetura que utilizando este algoritmo debe existir un algoritmo que simule un R-Mesh con un LR-Mesh en tiempo

O(log logN) y cuya cantidad de recursos computacionales se desconoce. En la Figura 3 se muestran las dos simulaciones antes mencionadas junto con la simulaci´on que se pretende realizar.

Figura 3. Simulaciones del modelo R-Mesh en el modelo LR-Mesh

I.3.1.

Objetivo General

El objetivo general de este trabajo de tesis, consiste en plantear dos estrategias para el dise˜no de un algoritmo que simule un R-Mesh en un LR-Mesh cuyo tiempo de ejecuci´on sea O(log logN).

I.3.2.

Objetivos Espec´ıficos

(21)

2. Dise˜nar un algoritmo que resuelva la estrategia de “enganchamiento” (Hooking) utilizada por el algoritmo de Trifonov (2005) en un LR-Mesh en O(1).

3. Dise˜nar un algoritmo que resuelva la estrategia de “contracci´on” (Contract) utili-zada por el algoritmo de Trifonov (2005) en un LR-Mesh en O(1).

4. Dise˜nar un mecanismo que permita ejecutar dos o m´as etapas de enganchamiento y contracci´on en tiempo constante.

I.4.

Metodolog´ıa

Como etapa previa para llevar a cabo la metodolog´ıa de la investigaci´on, se estudiaron los diferentes algoritmos existentes para simulaci´on de modelos reconfigurables, en-foc´andose principalmente en simulaciones de un R-Mesh en un LR-Mesh.

La metodolog´ıa se divide en las siguientes etapas:

1. Estudio de las arquitecturas reconfigurables.

En esta etapa se estudiaron los modelos de reconfiguraci´on, principalmente los modelos R-Mesh y LR-Mesh, con el objetivo de adquirir los conocimientos necesa-rios y desarrollar las habilidades para comprender, analizar y dise˜nar algoritmos en estos modelos.

2. Estudio de la m´aquina de Turing y las clases de complejidad.

(22)

determin´ıstica y el tiempo que requiere el problemaP para ejecutarse en el modelo reconfigurable LR-Mesh.

3. Estudio del algoritmo que resuelve el problema USTCON en O(logNlog logN) unidades de espacio en una m´aquina de Turing determin´ıstica.

En esta etapa, se estudi´o a detalle el trabajo de Trifonov (2005) para comprender las etapas de enganchamiento y contracci´on utilizadas en su algoritmo. Tambi´en se estudi´o el an´alisis que presenta en su trabajo para calcular el espacio requerido

O(logNlog logN) unidades de espacio para resolver el problema USTCON.

4. Desarrollo de estrategias para el dise˜no de las simulaciones de un R-Mesh en un LR-Mesh.

Se proponen dos estrategias para el dise˜no de estas simulaciones. En la Simula-ci´on 1, se parte de restringir el n´umero de procesadores sin tomar en cuenta el tiempo de ejecuci´on para lograr, en un primer paso, un algoritmo que realice la simulaci´on en O(logN) unidades de tiempo. En el segundo paso se busca redu-cir gradualmente el tiempo de ejecuci´on hasta alcanzar O(log logN) unidades de tiempo.

(23)

I.5.

Organizaci´

on del documento

(24)

Cap´ıtulo II

Marco Te´

orico

II.1.

aquina de Turing

El modelo de la m´aquina de Turing lo propuso Alan Turing en 1936 (Turing, 1936). A pesar de ser un modelo simple, esta m´aquina es capaz de efectuar cualquier opera-ci´on que las computadoras modernas pueden realizar. Turing tambi´en demuestra que hay problemas que una m´aquina de Turing no puede resolver. La Figura 4 muestra el esquema representativo de una m´aquina de Turing.

(25)

II.1.1.

aquina de Turing determin´ıstica

Existen varios tipos de m´aquinas de Turing; ´estas se dividen en dos ramas, deter-min´ısticas y no deterdeter-min´ısticas. A continuaci´on se describen brevemente las m´aquinas de Turing determin´ısticas y posteriormente las no determin´ısticas.

La M´aquina de Turing determin´ıstica (MTD) es el primer modelo te´orico de lo que luego ser´ıa una computadora. Con el tiempo a este tipo de m´aquina se le conoci´o como “m´aquina de estado finito”. La m´aquina de Turing consiste b´asicamente de un cabezal de lectura y escritura (el cual puede moverse hacia la izquierda o derecha), un registro de estado (el cual almacena el estado actual y tiene capacidad para un conjunto finito de estados) y una cinta infinita dividida en celdas (cada celda contiene un s´ımbolo que pertenece al alfabeto, donde el alfabeto son todos los s´ımbolos que puede reconocer la m´aquina de Turing).

La entrada se coloca en la cinta (la entrada es una cadena finita de s´ımbolos que pertenecen al alfabeto) y el resto de la cinta contiene el s´ımbolo especial “vac´ıo” o “blanco”, denotado por ]. El cabezal de la m´aquina de Turing siempre est´a sobre una celda de la cinta, al inicio generalmente se coloca en la celda m´as izquierda con el primer s´ımbolo de la cadena de entrada. En un paso, la m´aquina de Turing puede leer o escribir en la cinta, cambiar de estado (o quedarse en el mismo) y mover la cabeza a la izquierda o a la derecha. Si la m´aquina requiere almacenar informaci´on, escribe en la cinta; para leer la informaci´on que escribi´o, la m´aquina puede mover el cabezal hacia atr´as.

(26)

sucesiva-mente. Es el nivel de descripci´on m´as detallado. El segundo es una descripci´on de nivel intermedio, llamado descripci´on de implementaci´on; en esta descripci´on se usa prosa para describir la forma en que la m´aquina de Turing mueve el cabezal y la forma en la que almacena los datos en la cinta. En este nivel lo que se hace es no dar detalle de los estados o de la funci´on de transici´on.

El tercer nivel es la descripci´on de m´as alto nivel, donde se usa prosa para describir un algoritmo, ignorando los detalles de la implementaci´on. En este nivel no es necesario mencionar c´omo la m´aquina maneja su cinta o cabezal.

La m´aquina de Turing es un modelo muy importante en la teor´ıa de la computaci´on, ya que en este modelo es f´acil calcular los recursos computacionales que se requieren en un problema dado, por lo cual sirve como referencia para comparar otros modelos de computaci´on y as´ı determinar el poder computacional de alg´un modelo con respecto a la m´aquina de Turing. Los dos recursos m´as importantes son:

Complejidad del tiempo

Generalmente el recurso m´as importante es el tiempo. La m´aquina de Turing puede calcular de manera precisa la cantidad de tiempo que se requiere para ejecutar un algoritmo, dado que el n´umero de pasos que requiere la m´aquina de Turing es equivalente al tiempo que requiere el algoritmo para ejecutarse. Si la m´aquina de Turing no se detiene entonces el tiempo se considera indefinido.

Complejidad del espacio

(27)

al espacio que requiere el algoritmo para ejecutarse.

A continuaci´on se describe formalmente la m´aquina de Turing tradicional as´ı como algunas de sus variantes, las cuales tienen el mismo poder computacional (reconocen la misma clase de lenguajes).

II.1.2.

aquina de Turing determin´ıstica de una cinta

Una m´aquina de Turing determin´ıstica de una cinta se define como una tupla

M = (Q,Σ,Γ, δ, q0, qa, qr) donde:

Q es un— conjunto de estados Σ es el alfabeto finito de entrada

Γ es el alfabeto de la cinta, donde ]∈Γ es el car´acter blanco y ΣΓ

δ :Γ−→Q×Γ× {L, R} es la funci´on de transici´on donde L (left) significa un movimiento a la izquierda y R (right) un movimiento a la derecha.

q0 ∈Q es el estado de inicio

qa ∈Qes el estado de aceptaci´on

qr ∈Q es el estado de rechazo, dondeqa 6=qr

II.1.3.

aquina de Turing de

k

-cintas

La m´aquina de k-cintas es similar a la de una cinta, cada cinta contiene su propio cabezal para leer y escribir. Normalmente la entrada se coloca en la cinta n´umero uno y las k−1 cintas restantes se encuentran en blanco.

En forma similar a la m´aquina de Turing de una cinta, se define la m´aquina de Turing de k-cintas como una tupla M = (Q,Σ,Γ, δ, q0, qa, qr) donde : Q,Σ,Γ, q0, qa, qr

(28)

transici´on se define de la siguiente forma:δ :Γk −→Q×Γk× {L, R, S}k.DondeS

(stay) significa que el cabezal no se mueve.

II.1.4.

aquina de Turing no determin´ıstica

LaM´aquina de Turing no determin´ıstica(MTND) es similar a la MTD. La diferencia consiste en que una MTND, en un estado arbitrario y viendo cierto car´acter en el cabezal, puede tener cero, una o m´as posibles transiciones de estado, donde puede elegir cualquiera de ellas.

Formalmente en una MTND se define de la siguiente forma:

M = (Q,Σ,Γ, δ, q0, qa, qr) donde: Q,Σ,Γ, q0, qa, qr se definen como en la m´aquina de

Turing determin´ıstica.

La funci´on de transici´on se define de la siguiente forma:

δ :Γ−→P(Γ× {L, R}), donde P son las posibles transiciones.

El c´alculo en una MTND se puede ver como un ´arbol enraizado, el cual se bifurca en todas las posibles transiciones, ver Figura 5. Si en cualquiera de sus bifurcaciones llega a un estado de aceptaci´on, la m´aquina acepta la entrada. La profundidad del ´arbol indica el n´umero de pasos que realiz´o, siendo equivalente al tiempo de ejecuci´on.

II.1.5.

aquina de Turing sim´

etrica

LaM´aquina de Turing sim´etrica(MTS) la propusieron Lewis y Papadimitriou (1982). Esta m´aquina de Turing es parecida a la MTND con poder m´as limitado; en una MTS, cada movimiento de la m´aquina se puede revertir, de esta forma la MTS puede leer dos s´ımbolos al mismo tiempo en cada una de sus cintas.

(29)

Figura 5. Ejemplo de transiciones en una MTND como ´arbol enraizado.

la MTS de la siguiente manera: Una m´aquina de k cintas de longitud infinita con un cabezal en cada cinta, es una 7-tupla (K,Σ,Σ0, k,, s, F) donde:

K es el conjunto finito de estados.

Σ es el alfabeto finito (el alfabeto de la cinta). Σ0 Σ, es el alfabeto de entrada.

k > 0, es el n´umero de cintas.

s ∈K, es el estado inicial.

F ⊆K, es el conjunto de estados finales. ∆ es el conjunto finito de transiciones.

La diferencia de la MTS con respecto a la de k-cintas son las transiciones. Las transiciones permiten a la MTS observar una celda a la derecha o a la izquierda, mientras se mueven a la derecha o a la izquierda, respectivamente. Espec´ıficamente, una transici´on es de la forma (p, t1, ..., tk, q), dondepyq son estados,k es el n´umero de cintas yt1, ..., tk

son tripletas de la cinta. La tripleta de la cinta se representa como (ab, D, cd), donde

(30)

de una cinta. La transici´on de la forma (p,(a,0, b), q) significa que cuando la MTS se encuentra en el estado p y lee el s´ımbolo a, la MTS puede reescribir tanto a como b y moverse al estado q, sin mover el cabezal. La transici´on de la forma (p,(ab,+1, cd), q) se da cuando la MTS se encuentra en el estado p, lee el s´ımbolo a y la celda justo a la derecha de la celda le´ıda contiene un s´ımbolo b, la MTS puede reescribir estas dos celdas con los s´ımbolos c y d, respectivamente y mover el cabezal una celda a la derecha, y cambiar al estadoq. En forma similar la transici´on (p,(ab,−1, cd), q) significa un movimiento potencial hacia la izquierda excepto que ahora se lee el s´ımbolo b y el s´ımbolo a su izquierda es a y se reescriben por d y c, respectivamente.

II.1.6.

Notaci´

on modular para las m´

aquinas de Turing

La notaci´on modular se utiliza para simplificar la notaci´on convencional de las m´ aqui-nas de Turing, la cual por lo general es bastante engorrosa. En esta secci´on se define una notaci´on para la m´aquina de Turing que permite expresarla de una forma mucho m´as sencilla. Navarro (2009) define la notaci´on modular en la m´aquina de Turing como un grafo donde los nodos representan las acciones a ejecutarse y las aristas denotan las condiciones. En cada nodo se puede escribir una secuencia de acciones que se ejecutan al llegar al nodo. Luego de ejecutarlas, se consideran las aristas que salen del nodo. Las aristas consisten de flechas rotuladas con s´ımbolos del alfabeto Σ. Si la flecha que sale del nodo est´a rotulada con la letra que se tiene bajo el cabezal luego de ejecutar el nodo, entonces se sigue la flecha y se llega a otro nodo. Se permite rotular las flechas con conjuntos de caracteres. Existe un nodo inicial donde la MT comienza a operar y cuando un nodo no tenga otro a donde ir, la MT se detiene.

(31)

Moverse hacia la izquierda (/). Sin importar el s´ımbolo en el que se encuentre, la MT se mueve hacia la izquierda una casilla y se detiene.

Moverse hacia la derecha (.). Sin importar el s´ımbolo en el que se encuentre, la MT se mueve hacia la derecha una casilla y se detiene.

Escribir el s´ımbolo b Σ(b). Sin importar el s´ımbolo que tenga, la MT escribe b

en la cinta y se detiene.

Moverse por la cinta (.A, /A). Sin importar el s´ımbolo que encuentre, la MT se

mueve a la derecha o la izquierda, respectivamente, hasta encontrar en la cinta al s´ımboloA Σ.

Borrar en la cinta (B). Sin importar el s´ımbolo que encuentre, la MT borra la cadena que tiene hacia la izquierda (hasta encontrar el s´ımbolo]).

Para una MT dek-cintas se utiliza el super´ındice para indicar la cinta que realiza la operaci´on. Por ejemplo, en la notaci´on (.jA), el super´ındicej indica que el cabezal en la j-´esima cinta se desplaza a la derecha hasta encontrar una A∈Σ.

En la Figura 6 se muestra el algoritmo que resuelve el problema de la suma de dos n´umeros de x bits utilizando la notaci´on modular. Este algoritmo se describe en la siguiente secci´on.

II.1.7.

Algoritmos representados en una MTD

En esta secci´on se muestran algunos algoritmos representados en la MTD.

(32)

Figura 6. Suma de dos n´umeros de x bits utilizando notaci´on modular.

Descripci´on:Se tiene Σ ={0,1, ]}, los enteros positivos se representan en binario. Cada entero positivo se separa por el s´ımbolo ].

Construir una MTD que calculef(a, b) = a+b

Soluci´on en una m´aquina de Turing determin´ıstica.

Entrada: Al inicio se encuentran los dos n´umeros representados en binario, sepa-rados por el s´ımbolo ]en la cinta de entrada.

(33)

A continuaci´on se muestra la descripci´on en alto nivel del algoritmo en la MTD

a) Copia el primer n´umero de la cinta de entrada a la cinta de trabajo y el cabezal de la cinta de entrada queda posicionado en el s´ımbolo ] que se encuentra antes del segundo n´umero.

b) El cabezal de la cinta de entrada se recorre hacia la derecha hasta el bit menos significativo del segundo n´umero.

c) El cabezal de la cinta de trabajo se posiciona en el bit menos significativo del primer n´umero.

d) Se realiza la suma binaria ejecutando los siguientes pasos:

Si la MTD se encuentra en el estado sin acarreo, se ejecutan las siguientes reglas.

1) Si los cabezales de las cintas de entrada y trabajo est´an posicionados en un 0, se escribe un 0 en la cinta de salida. Todas las cintas se recorren una posici´on a la izquierda.

2) Si el cabezal de la cinta de entrada est´a posicionado en un 0 y el cabezal de la cinta de trabajo est´a posicionado en un 1, la cinta de salida escribe un 1. Todas las cintas se recorren una posici´on a la izquierda.

3) Si el cabezal de la cinta de entrada est´a posicionado en un 1 y el cabezal de la cinta de trabajo est´a posicionado en un 0, la cinta de salida escribe un 1. Todas las cintas se recorren una posici´on a la izquierda.

(34)

Si la MTD se encuentra en el estado de acarreo, se ejecutan las siguientes reglas.

1) Si los cabezales de las cintas de entrada y trabajo est´an posicionados en un 0, se escribe un 1 en la cinta de salida. La MTD regresa al estado sin acarreo. Todas las cintas se recorren una posici´on a la izquierda.

2) Si el cabezal de la cinta de entrada est´a posicionado en un 0 y el cabezal de la cinta de trabajo est´a posicionado en un 1, la cinta de salida escribe un 0. Todas las cintas se recorren una posici´on a la izquierda.

3) Si el cabezal de la cinta de entrada est´a posicionado en un 1 y el cabezal de la cinta de trabajo est´a posicionado en un 0, la cinta de salida escribe un 0. Todas las cintas se recorren una posici´on a la izquierda.

4) Si los cabezales de las cintas de entrada y trabajo est´an posicionados en un 1, se escribe un 1 en la cinta de salida. Todas las cintas se recorren una posici´on a la izquierda.

e) Si la cinta de entrada y trabajo se posicionan en un ]y la MTD se encuentra en el estado sin acarreo. La cinta de salida se mueve a la derecha y la MTD cambia al estado de aceptaci´on.

f) Si la cinta de entrada y trabajo se posiciona en un ]y la MTD se encuentra en el estado de acarreo. La cinta de salida escribe un 1 y la MTD cambia al estado de aceptaci´on.

El resultado se encuentra en la cinta de salida con el cabezal posicionado en el bit m´as significativo.

(35)

Estado inicial : q0

Estado de aceptaci´on : q5

Estados intermedios : q1,q2, q3, q4. Alfabeto Σ :{0,1, ]}

Tabla de transici´on

(36)

Regla 17q3[], ], x]−→q5[(x, S)(x, S)(x, R)]

Cada regla es de la siguiente forma qi[α, β, x] −→ qj[(x, C1)(α, C2)(α, C3)] donde

{α, β} ∈Σ[x] yC1, C2, C3 ∈ {L, R, S}. Se interpreta de la siguiente manera: si la MTD se encuentra en el estado qi y el cabezal de la cinta de entrada est´a

posicio-nado sobre unα y adem´as el cabezal de la cinta de trabajo est´a posicionado sobre un β, el cabezal de la entrada sin alterar la cinta (x implica que ´unicamente la cabeza lee la cinta, no la altera) realiza el movimiento indicado por C1, el cabezal de la cinta de trabajo escribe un α en la cinta y realiza el movimiento indicado por C2, y el cabezal de la cinta de salida escribe un α en la cinta y realiza el movimiento indicado por C3. Por ´ultimo la MTD pasa al estado qj.

Para sumar los dos n´umeros enteros positivos, se copia bit a bit el primer n´umero a la cinta de trabajo; esta operaci´on requiere x pasos ya que es la cantidad de bits que se necesitan para representar el entero positivo. Dado que la suma se ejecuta revisando los dos n´umeros bit a bit, el algoritmo requiere O(x) unidades de tiempo. Asimismo, el algoritmo requiere O(x) unidades de espacio, dado que es la cantidad de bits que se copian a la cinta de trabajo para realizar la suma.

2. Grado de un v´ertice en la MTD

Descripci´on:Se tiene Σ ={0,1, ]}, los enteros positivos se representan en binario. Construir una MTD que calcule el grado de un v´ertice.

Soluci´on en una MTD de k-cintas.

(37)

entre corchetes sus vecinos, seguido del siguiente v´ertice con sus vecinos y as´ı su-cesivamente. En la cinta de entrada 2, el identificador del v´ertice vi, del cual se

requiere calcular el grado. Todos los n´umeros se representan en binario. Salida: El grado del v´erticevi en la cinta de salida.

A continuaci´on se muestra la descripci´on en alto nivel del algoritmo en la MTD La MTD realiza los siguientes pasos:

a) Se posiciona el cabezal de la cinta de entrada 1 y 2 en el bit m´as significa-tivo del primer v´ertice de la lista de adyacencias del grafo y del v´ertice vi,

respectivamente.

b) Se realiza la comparaci´on bit a bit entre los dos v´ertices.

c) Si se encuentra un bit diferente, se recorre el cabezal de la cinta de entrada 1 hasta posicionarse en el bit m´as significativo del siguiente v´ertice. El cabezal de la cinta de entrada 2 se regresa hasta el bit m´as significativo del v´erticevi

y se repite el paso 2.

d) Si los v´ertices comparados son iguales, el cabezal de la cinta de entrada 1 se recorre una posici´on a la derecha.

e) Si el cabezal de la cinta de entrada 1 no encuentra un s´ımbolo “[”, el grado devi es cero, por lo tanto el cabezal de la cinta de salida escribe un cero. La

m´aquina de Turing pasa a un estado de aceptaci´on.

(38)

Los pasos para ejecutar la sumac=c+ 1 son los siguientes:

1) Si el cabezal de la cinta de trabajo est´a posicionado en un 1, se escribe un 0 en la cinta de trabajo y se mueve el cabezal a la izquierda.

2) Si el cabezal de la cinta de trabajo est´a posicionado en un 0, se escribe un 1 en la cinta de trabajo y el cabezal se mueve hasta el bit menos significativo y la MT cambia al estado final.

g) Si el cabezal de la cinta de entrada 1 se posiciona en un s´ımbolo “]” quiere decir que no hay m´as vecinos, entonces toda la informaci´on de la cinta de trabajo se copia (el grado del v´ertice) a la cinta de salida y la MT cambia a un estado de aceptaci´on.

El resultado se encuentra en la cinta de salida con el cabezal posicionado en el bit m´as significativo.

A continuaci´on se muestra la descripci´on formal del algoritmo en la MTD. Estado inicial : q0

Estado de aceptaci´on : q10

Estados intermedios : q1,q2, q3, q4, q5, q6,q7, q8, q9. Alfabeto Σ :{0,1, ],(,),[,]}

Tabla de transici´on

// Inicio de la comparaci´on

(39)

// El v´ertice a comparar no es igual.

Regla 04q1{0,1, x, x} −→q2{(x, R)(x, S)(x, S)(x, S)} Regla 05q1{1,0, x, x} −→q2{(x, R)(x, S)(x, S)(x, S)} // Recorre el cabezal al siguiente v´ertice.

Regla 06q2{0, x, x, x} −→q2{(x, R)(x, S)(x, S)(x, S)} Regla 07q2{1, x, x, x} −→q2{(x, R)(x, S)(x, S)(x, S)} Regla 08q2{(, x, x, x} −→q2{(x, R)(x, S)(x, S)(x, S)} Regla 09q2{), x, x, x} −→q2{(x, R)(x, S)(x, S)(x, S)} Regla 10q2{[, x, x, x} −→q3{(x, R)(x, S)(x, S)(x, S)} Regla 11q3{(, x, x, x} −→q3{(x, R)(x, S)(x, S)(x, S)} Regla 12q3{0, x, x, x} −→q3{(x, R)(x, S)(x, S)(x, S)} Regla 13q3{1, x, x, x} −→q3{(x, R)(x, S)(x, S)(x, S)} Regla 14q3{), x, x, x} −→q3{(x, R)(x, S)(x, S)(x, S)} //Se posiciona en el siguiente v´ertice.

Regla 15q3{], x, x, x} −→q4{(x, R)(x, S)(x, S)(x, S)} // Regresa el cabezal de la cinta 2.

Regla 16q4{x,0, x, x} −→q4{(x, S)(x, L)(x, S)(x, S)} Regla 17q4{x,1, x, x} −→q4{(x, S)(x, L)(x, S)(x, S)} // Regresa al inicio de las reglas.

(40)

Regla 19q1{), ], x, x} −→q5{(x, R)(x, R)(x, S)(x, S)}

// Si no tiene vecinos la cinta de salida escribe 0 y la MTD termina. Regla 20q5{(, x, x, x} −→q10{(x, R)(x, R)(x, S)(0, S)}

Regla 21q5{[, x, x, x} −→q6{(x, R)(x, S)(x, S)(x, S)} // Inicio de la suma c=c+ 1 para obtener el grado. Regla 22q6{(, x, x, x} −→q7{(x, R)(x, S)(x, L)(x, S)} Regla 23q6{0, x, x, x} −→q6{(x, R)(x, S)(x, S)(x, S)} Regla 24q6{1, x, x, x} −→q6{(x, R)(x, S)(x, S)(x, S)} Regla 25q6{), x, x, x} −→q6{(x, R)(x, S)(x, S)(x, S)} Regla 26q7{x, x,1, x} −→q7{(x, S)(x, S)(0, L)(x, S)} Regla 27q7{x, x, ], x} −→q8{(x, S)(x, S)(1, R)(x, S)} Regla 28q7{x, x,0, x} −→q8{(x, S)(x, S)(1, R)(x, S)} Regla 29q8{x, x,0, x} −→q8{(x, S)(x, S)(x, R)(x, S)} Regla 30q8{x, x,1, x} −→q8{(x, S)(x, S)(x, R)(x, S)} // Termina la suma.

Regla 31q8{x, x, ], x} −→q6{(x, S)(x, S)(x, S)(x, S)} // No hay m´as vecinos.

(41)

Regla 35q9{x, x, ], x} −→q10{(x, S)(x, S)(x, S)(S, R)}

La regla es de la siguiente formaqi{α, β, x, x} −→qj{(x, C1)(α, C2)(α, C3)(α, C4)} donde {α, β} ∈ Σ[x] y C1, C2, C3, C4 ∈ {L, R, S}. Se interpreta de la siguiente manera: si la MTD se encuentra en el estadoqi y el cabezal de la cinta de entrada

1 est´a posicionado sobre un α, el cabezal de la cinta de entrada 2 est´a posicionado sobre un β, y sin importar donde est´en posicionados los cabezales de la cinta de trabajo y salida; entonces, el cabezal de la entrada 1 sin alterar la cinta (x implica que ´unicamente la cabeza lee la cinta no la altera) realiza el movimiento indicado por C1, el cabezal de la cinta de entrada 2 escribe un α en la cinta y realiza el movimiento indicado por C2. El cabezal de la cinta de trabajo escribe un α en la cinta y realiza el movimiento indicado por C3. El cabezal de la cinta de salida escribe un α en la cinta y realiza el movimiento indicado por C4. Finalmente, la MTD pasa al estadoqj.

Para encontrar el v´ertice vi (al que se calcula su grado) dentro de la lista de

adyacencias en el grafo original se requieren O(d2x) unidades de tiempo (donde

x es la cantidad de bits necesarios para representar a cada v´ertice), siendo este procedimiento el m´as costoso del algoritmo. Por lo tanto, para calcular el grado de un v´ertice se requieren O(d2x) unidades de tiempo.

(42)

II.2.

omputo Reconfigurable

II.2.1.

Introducci´

on a la rejilla reconfigurable

Las arquitecturas reconfigurables consisten de un conjunto de elementos computacio-nales, los cuales se encuentran conectados por medio de un ducto capaz de reconfigurarse y que permite agilizar el proceso de comunicaci´on entre los procesadores.

Una arquitectura reconfigurable es la que puede alterar las funcionalidades de sus componentes y la estructura de conexi´on de los mismos. Cuando la reconfiguraci´on es r´apida, con un sobre costo peque˜no, se dice que es din´amica. Consecuentemente una arquitectura de configuraci´on din´amica puede cambiar su estructura y funcionalidad en cada ciclo de m´aquina.

Uno de los modelos m´as estudiados dentro de las arquitecturas reconfigurables es la llamada rejilla reconfigurable (R-Mesh). Su gran versatilidad permite el dise˜no de algoritmos de forma sencilla, pero su implementaci´on es dif´ıcil en la vida real. En Vaid-yanathan y Trahan (2004) se define el arreglo lineal de procesadores. Cada procesador posee dos puertos denominados Este (E) y Oeste (O) que permiten la conexi´on con sus vecinos. Adem´as, cada procesador es capaz de fusionar sus dos puertos formando un ducto que atraviesa al mismo procesador conectando a sus vecinos. A este arreglo tambi´en se le denomina rejilla reconfigurable de una dimensi´on.

La rejilla de dos dimensiones llamada R-Mesh de N ×M, se construye al cambiar el arreglo lineal de procesadores por una rejilla bidimensional con N renglones y M

(43)

las conexiones fijas (entre procesadores) se crean diferentes arreglos de ductos entre la estructura de procesadores.

En el modelo R-Mesh cada puerto puede generar 15 configuraciones distintas como se muestran en la Figura 7. La notaci´on utilizada para representar las conexiones es la siguiente: dentro de un juego de llaves se colocan las iniciales de los cuatro puertos separados en grupos por comas. Si un grupo tiene 2 o m´as puertos indica que ellos est´an conectados entre s´ı.

Figura 7. Posibles configuraciones internas para cada procesador de un R-Mesh

Cada procesador en el R-Mesh tiene su propia memoria local. Los procesadores funcionan en forma sincronizada y se comunican entre ellos a trav´es del sistema de ductos descrito anteriormente.

A continuaci´on se describen las 4 fases que comprenden un ciclo de m´aquina del R-Mesh:

II.2.2.

Ciclo de m´

aquina en el R-Mesh

(44)

1. Configuraci´on: Cada procesador internamente configura una de las 15 posibles conexiones de sus puertos como se muestran en la Figura 7.

2. Escritura: Cada procesador escribe en uno o m´as de sus puertos.

3. Lectura: Cada procesador lee uno o m´as de sus puertos.

4. Operaci´on:Cada procesador ejecuta alguna operaci´on aritm´etica o l´ogica.

En un paso arbitrario, un procesador del R-Mesh puede participar en uno o m´as de los pasos anteriores, o permanecer ocioso.

II.2.3.

Modelo LR-Mesh

Existe una versi´on restringida (en la cantidad de configuraciones internas) del modelo R-Mesh, llamada rejilla reconfigurable lineal (LR-Mesh). Este modelo restringido es m´as factible de construirse que el modelo R-Mesh, aunque el dise˜no de algoritmos en ´el es m´as complicado. La definici´on dada en Vaidyanathan y Trahan (2004) del modelo LR-Mesh indica que este modelo s´olo permite que cada puerto de cada procesador se pueda conectar a lo m´as a otro puerto dentro del mismo procesador. Esto implica que un ducto no se puede bifurcar como en el caso del R-Mesh donde cada procesador puede fusionar 3 o 4 de sus puertos. Esta restricci´on en el modelo reduce la cantidad de conexiones internas a 10, las cuales se muestran en la Figura 8. Los ductos creados en el modelo LR-Mesh se denominan ductos lineales.

(45)

Figura 8. Posibles configuraciones internas para cada procesador de un LR-Mesh

II.2.4.

Algoritmos b´

asicos en el LR-Mesh

1. Movimiento de datos

El movimiento de datos es importante en el dise˜no de algoritmos en el LR-Mesh. A continuaci´on se presentan como ejemplos, dos de los problemas de movimiento de datos m´as comunes: broadcast y ruteo de permutaci´on.

(46)

u Oeste, todos los procesadores leen su puerto Este u Oeste. Por ´ultimo, cada procesador almacena el dato le´ıdo en su registro correspondiente. Para realizar un broadcast en diagonal en el LR-Mesh el procedimiento es similar a los anteriores. Ruteo de Permutaci´on: En Vaidyanathan y Trahan (2004) se define el Ruteo de Permutaci´onde la siguiente forma: Sea P ={p0, p1, . . . , pN−1} un conjunto de procesadores donde cada procesador pi (para 0 i N 1) mantiene un dato

di. y sea π : {0,1, . . . , N 1} −→ {0,1, . . . , N 1} una biyecci´on. El Ruteo de

Permutaci´on con respecto a π requiere que cada procesador pi mande su dato di

al procesador (i).

Para realizar un ejemplo de ruteo de permutaci´on se supone que se tiene una serie de datos almacenados en la primera columna del modelo LR-Mesh y se desea mover los datos al primer rengl´on del LR-Mesh. Para realizar lo anterior se ejecutan los siguientes pasos:

Permutaci´on de columna a rengl´on en el LR-Mesh

a) Configuraci´on: Cada procesador con ´ındice i = j (los procesadores de la diagonal principal), realiza la siguiente configuraci´on{N O, E, S}. Cada pro-cesador con j > i(los procesadores arriba de la diagonal principal) realiza la siguiente configuraci´on {N S, E, O}. Finalmente, cada procesador con j < i

(los procesadores abajo de la diagonal principal) realiza la siguiente configu-raci´on{EO, N, S}.

b) Escritura:Cada procesador con ´ındice (i,0) escribe en su puerto O el dato almacenado.

(47)

d) Operaci´on: Cada procesador con ´ındice (0, j) almacena el dato le´ıdo en su registro correspondiente.

El ruteo de permutaci´on se puede ejecutar en el LR-Mesh en O(1) unidades de tiempo.

2. Operaci´on OR utilizando la partici´on de ducto

La operaci´on OR de x bits se puede ejecutar en el LR-Mesh de X procesadores en O(1) unidades de tiempo, utilizando la t´ecnica de partici´on de ducto (Bus Splitting) propuesta por Miller et al. (1993).

Se supone que cada procesador del LR-Mesh almacena un bit del dato binario de entrada.

a) Configuraci´on utilizando la operaci´on partici´on de ducto:Cada pro-cesador que almacena un bit “1” se configura de la siguiente manera

{E, N, O, S}. Cada procesador que almacena un bit “0” realiza la siguiente configuraci´on {EO, N, S}. Con esta configuraci´on se lleva a cabo la separa-ci´on de los ductos en sub-ductos.

b) Escritura:Cada procesador que almacena un bit “1” escribe una se˜nal pre-definida en su puerto O.

c) Lectura: El procesador con ´ındice 0 (el procesador m´as a la izquierda) lee de su puerto E.

(48)

3. Suma binaria

La Suma binaria de x bits se puede ejecutar en un LR-Mesh de (x+ 1×x) procesadores enO(1) unidades de tiempo.

Se supone que cada procesador del primer rengl´on del LR-Mesh (0, j) almacena un bit del dato binario. Para realizar la suma binaria se ejecutan las siguientes fases:

a) Cada procesador (0, j) ejecuta un broadcast por columna

b) Identificar el ´ındice i

1) Configuraci´on: Cada procesador que almacena un bit “1” realiza la siguiente configuraci´on {EN, OS}. Cada procesador que almacena un bit “0” realiza la siguiente configuraci´on{EO, N, S}.

2) Escritura: El procesador con ´ındice (0,0) escribe una se˜nal predefinida en su puerto O.

3) Lectura: Cada procesador de la ´ultima columna (i, x) lee de su puerto E.

4) Operaci´on: Cada procesador de la ´ultima columna (i, x) almacena el valor le´ıdo en su variable Dato.

c) Enviar el ´ındice i

1) Configuraci´on: Cada procesador mantiene la misma configuraci´on que en la fase anterior.

(49)

3) Lectura: El procesador con ´ındice (0,0) lee su puerto E o S.

4) Operaci´on: El procesador con ´ındice (0,0) almacena el valor le´ıdo en su variable Total.

En la Figura 9 se muestra el ejemplo de suma binaria de x bits en el LR-Mesh, para unx= 4

Figura 9. Ejemplo de suma binaria en un LR-Mesh

II.3.

La m´

aquina de Turing y el LR-Mesh

(50)

II.3.1.

Clases de complejidad

La clase L son todos los problemas de decisi´on que puede resolver una MTD con espacio logar´ıtmico en funci´on de su entrada.

La clase N Lson todos los problemas de decisi´on que puede resolver una MTND con espacio logar´ıtmico en funci´on de la entrada.

Por ´ultimo, Lewis y Papadimitriou (1982) definen la clase SL como todos los pro-blemas de decisi´on que puede resolver una MTS con espacio logar´ıtmico. Esta clase la definieron en funci´on del problema USTCON, al demostrar que dicho problema es completo para la clase SL(este resultado implica que cualquier problema que se pueda reducir a USTCON pertenece a la clase SL). El problema USTCON se define de la si-guiente forma: dado un grafo no dirigidoG= (V, E) y dos v´erticess, t ∈G, elproblema de conectividad no dirigido s−t (USTCON) es el proceso de determinar si existe una trayectoria (o camino) en G que conecte a “s” con “t”. Antes del trabajo de Lewis y Papadimitriou, USTCON se clasificaba dentro de la claseN L. Finalmente, en el mismo trabajo, ellos demuestran que L⊆SL⊆N L.

II.3.2.

Relaci´

on entre la MTD y el LR-Mesh

En Ben-Asher y Schuster (1995) se muestra la relaci´on entre el espacio requerido por la MTD y el tiempo de ejecuci´on del LR-Mesh, al demostrar que cualquier problema

(51)

Cap´ıtulo III

Algoritmo de Trifonov

Trifonov (2005) dise˜n´o un algoritmo en la m´aquina de Turing para resolver el pro-blema USTCON en O(logNlog logN) espacio, el cual se basa en dos trabajos previos. El primero es el de Chong y Lam (1993), donde desarrollan un algoritmo que utiliza las t´ecnicas de enganchamiento (Hooking) y contracci´on (Contraction) para resolver el problema USTCON. El segundo trabajo es el realizado por Kouck´y (2002); este trabajo explora ´arboles de una forma eficiente al aplicar la t´ecnica de caminatas exploratorias; la t´ecnica anterior se combina con la del tour de Euler para permitir un desplazamiento de un v´ertice a otro, de ida y de regreso, sin necesidad de guardar los v´ertices intermedios. Con base en estos trabajos, Trifonov (2005) presenta un algoritmo recursivo para resolver el problema USTCON en un grafo no dirigido G = (V, E), de N v´ertices, y sin multiaristas. Dicho algoritmo consiste principalmente de dos etapas, las cuales se describen a continuaci´on:

1. Etapa de enganchamiento. En esta etapa el algoritmo realiza el enganchamien-to; cada v´ertice revisa a sus vecinos para identificar un v´ertice (de acuerdo a un criterio dado) a enganchar (puede ser incluso ´el mismo); la arista que une a dos v´ertices enganchados se le llama arista de enganche. Este procedimiento genera ´

arboles que se denominan ´arboles de enganchamiento.

(52)

´

arboles a contraer si la suma de los v´ertices y de las aristas que componen el ´arbol es menor que dichos umbrales. Con esta operaci´on, la ra´ız del ´arbol se denomina como el representante de todos los v´ertices que componen el ´arbol. Las multiaristas que unen a un ´arbolT con otroT0 se eliminan y se conserva solo una. Tambi´en se eliminan todas las aristas internas del ´arbolT; con esto se reduce el ´arbol a un solo super-v´ertice, el cual se convierte en el representante de todos los v´ertices internos del ´arbol T; todos estos v´ertices internos dejan de participar en el algoritmo.

Se ejecuta una de las dos etapas en cada nivel de recursi´on, donde despu´es de un en-ganchamiento siempre se ejecuta una contracci´on; sin embargo, se pueden ejecutar varias contracciones consecutivas. El algoritmo de Trifonov (2005) asegura que en O(log N) etapas, todos los componentes conectados se reducen a un v´ertice representativo.

Para determinar si dos nodos s y t pertenecen al mismo componente conectado, el algoritmo revisa si el representante des es igual al representante det; si es as´ı, entonces

s y t est´an conectados.

(53)

III.1.

Algoritmo de Chong y Lam

En Chong y Lam (1993) se presenta un algoritmo recursivo que resuelve el problema USTCON. Donde G es un grafo no dirigido con N v´ertices y M aristas; Chong y Lam resuelven el problema USTCON enO(logNlog logN) unidades de tiempo en una PRAM EREW, utilizandoO(N +M) procesadores. El algoritmo se basa en la estrategia de enganchamiento y contracci´on; sin embargo, utiliza un esquema de enganchamiento m´as sofisticado al que se utiliz´o en trabajos previos y un control de crecimiento de los ´

arboles generados.

La forma trivial de resolver el problema USTCON utilizando la estrategia de engan-chamiento y contracciones la siguiente:

1. Cada v´ertice se engancha a un vecino de su lista de adyacencias.

2. Cada componente que se forma en el paso 1 se contrae a un v´ertice representativo.

El problema con esta t´ecnica es que cada componente formado en el paso 1 pue-de formar componentes pue-despue-de 2 nodos hasta O(N) nodos; por lo tanto, se requieren

O(logN) unidades de tiempo, en el peor de los casos, para contraer todos los nodos a un solo representante. Si se requiere realizar O(logN) iteraciones para asegurar la elecci´on del representante, entonces el algoritmo necesitaO(log2N) unidades de tiempo para resolver el problema.

(54)

con s v´ertices, la contracci´on se realiza en O(logs) unidades de tiempo. Adem´as, el algoritmo aprovecha la recursividad para diferenciar los componentes con respecto a su tasa de crecimiento y as´ı permite que los componentes se enganchen y se contraigan en diferentes instantes de tiempo de acuerdo a su tama˜no actual; con esto, se obtiene un tiempo total deO(logNlog logN).

La diferencia de la etapa de enganchamiento de Trifonov (2005) con respecto a la de Chong y Lam (1993), es que en esta ´ultima todos los v´ertices revisan el grado de sus vecinos enganch´andose al v´ertice con mayor grado; mientras que en el primero, se le da preferencia a aquellos v´ertices que no participaron en la fase de enganchamiento en niveles de recursi´on previos, llamadosv´ertices inactivos(es decir, el v´erticevcque se va a enganchar), primero busca a un vecino inactivo para engancharse, evitando as´ı revisar el grado de todos sus vecinos; si no lo encuentra, realiza el mismo procedimiento que Chong y Lam.

Otra diferencia significativa del algoritmo de Trifonov (2005) en comparaci´on con el de Chong y Lam (1993) es la utilizaci´on de las caminatas exploratorias definidas por Kouck´y (2002); estas caminatas permiten recorrer los ´arboles de enganchamiento para realizar diferentes tareas tales como: Comparar dos v´ertices bit a bit en Θ(log logN) unidades de espacio; revisar si el ´arbol T se puede contraer en un nivel de recursi´on dado.

(55)

en una variable local deO(log logN) unidades de espacio. Este procedimiento reduce el cuello de botella de O(logN) a O(log logN) unidades de espacio.

Otro punto importante que realiza el algoritmo de Trifonov es que establece un l´ımite superior v(l) en el valor que pueden tomar las variables locales en el nivel de recursi´on

l. El espacio que puede tomar cada variable local depende del nivel de recursi´on y var´ıa entreO(logN) y O(log logN). Por ejemplo, en la ejecuci´on de todas las funciones en el nivel l, el valor de sus variables locales es a lo m´asv(l). As´ı la cantidad de espacio que requiere el algoritmo es O(logv(l) + log logN) unidades de espacio, donde el t´ermino log logN aparece por el contador usado en las comparaciones entre los v´ertices.

Referencias

Documento similar

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

&#34;No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

En un congrés, convé disposar d’un pla o full de ruta per tal de garantir la igualtat d’accés de totes les persones, tant ponents com participants.. Comunicació : Tant si el

We have created this abstract to give non-members access to the country and city rankings — by number of meetings in 2014 and by estimated total number of participants in 2014 —

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,