slides - Cimat

Anuncio
Colorización de elementos
Miguel Vargas-Félix
miguelvargas@cimat.mx
http://www.cimat.mx/~miguelvargas
CIMAT, November 19, 2014
1/11
Paralelización de operaciones elementales
A partir de una malla de elemento finito, cómo elegir los elementos de tal forma que al hacer
operaciones elementales, éstas se puedan realizar en paralelo.
http://www.cimat.mx/~miguelvargas
2/11
Colorización
La idea es separar los elementos en grupos, asignando un color a cada grupo.
Los elementos de un grupo no comparten nodos entre sí.
http://www.cimat.mx/~miguelvargas
3/11
Podemos realizar en paralelo las operaciones elementales en los elementos de cada color.
Al no compartir nodos podemos relizar, por ejemplo, la multiplicación de matrices elementales de
un color por su correspondiente vector elemental y aplicar el resultado al vector global. Sin
problemas de concurrencia al paralelizar.
Una vez terminados los elementos un color, podemos pasar al los elementos del siguiente color.
Para realizar la colorización hay que determinar qué elementos son adyacentes entre sí.
http://www.cimat.mx/~miguelvargas
4/11
Adyacencias
A partir de la matriz de conectividades podemos determinar los elementos por nodo y la
adyacencia de los elementos.
26
4
5 21
22
18 16
23
6
15
7
8
13 17
10
8
3
28
25
18
22
19
11
21
9
2
1
10
6
4
15
20
11
2
20
14
5
30
1
12
7 12
29
3
27
19
14
17
13
16
9
http://www.cimat.mx/~miguelvargas
24
e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
n1
30
29
27
28
26
23
15
8
3
1
4
9
16
27
17
21
18
25
14
11
5
11
Ce,v
n2 n3
28 22
30 25
29 20
26 21
23 18
15 13
8 10
3 5
1 2
4 6
9 7
16 12
24 17
19 17
19 11
18 14
13 10
22 14
10 5
6 7
2 6
19 20
n4
25
20
19
22
21
18
13
10
5
2
6
7
12
24
12
22
14
20
11
12
11
14
n
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
e1
9
9
8
10
8
10
11
7
11
7
15
12
6
16
6
12
13
5
3
2
4
1
5
13
1
4
3
1
2
1
e2
10
10
9
11
9
11
12
8
12
8
19
13
7
17
7
13
14
6
14
3
5
4
6
14
2
5
14
4
3
2
Nn
e3 e4 e5
21
19 21
20 21
20
17
20
15
17
18
15
16
15
18
16
16
18
19
21 22
20
19 22
17
22
22
18
e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
a1
2
1
2
1
4
5
6
7
8
9
10
11
12
3
3
1
5
1
7
10
8
2
a2
4
3
14
5
6
7
8
9
10
11
12
13
14
13
12
4
6
2
8
11
9
3
a3
16
18
15
16
16
16
17
17
19
20
20
15
15
15
13
5
7
3
9
12
10
14
a4
18
22
18
18
17
17
19
19
21
21
21
20
20
22
14
6
8
4
15
13
11
15
Ae
a5 a6 a7 a8 a9 a10
22
21
19
17
16
16
16
15
15
16
20
18
18
17
17
19
19
17
21
19
19
19
18
21
20
18
22
22
22
22
20 21 22
22
22
19 20 21
5/11
El algoritmo para calcular los elementos por nodo es:
Entrada:
E número de elementos en la malla
V número de nodos por elemento
N número de nodos en la malla
C matriz de conectividades de tamaño E ×V
Salida:
N vector de conjuntos de elementos por nodo, tamaño N
Algoritmo:
for e=1, 2,… , E
for v=1, 2,…,V
n=Ce , v
N n ← N n ∪ {e }
http://www.cimat.mx/~miguelvargas
6/11
Las adyacencias por elemento se pueden determinar con:
Entrada:
E número de elementos en la malla
N número de nodos en la malla
N vector de conjuntos de elementos por nodo, tamaño N
Salida:
A vector de conjuntos de adyancencia por elementos, tamaño E
Algoritmo:
for n=1, 2,…, N
for all e 1 ∈N n
for all e 2 ∈N n∣e 2 >e 1
A e ← A e ∪ {e 2 }
A e ← A e ∪ {e 1 }
http://www.cimat.mx/~miguelvargas
1
1
2
2
7/11
Lo siguiente es colorear los elementos:
Entrada:
E número de elementos en la malla
A vector de conjuntos de adyancencia por elementos, tamaño E
Salida:
H vector con colores de elementos, tamaño E
c max número máximo de colores utilizado
Algoritmo:
U vector booleano de colores usados, tamaño U
for e=1, 2,… , E ; H e ←0
for e=1, 2,… , E
for c=1, 2,…, c max ; U c ← false
for all a∈A e
c← H a
if c≠0 then U c ← true
for c=1, 2,…, c max
if U c ← false then H e =c
if H e =0 then c max ←c max +1 ; H e ← c max
Un valor de U adecuado puede ser 200.
http://www.cimat.mx/~miguelvargas
8/11
Finalmente hay que hacer un vector con los índices por cada color.
Entrada:
E número de elementos en la malla
H vector con colores de elementos, tamaño E
c max número máximo de colores utilizado
Salida:
G vector de c max vectores con los índices por color
Algoritmo:
W vector de enteros, de tamaño c max
for c=1, 2,…, c max ; W c ← 0
for e=1, 2,… , E
c← H e ; W c ← W c +1
for c=1, 2,…, c max
Cambiar G c a tamaño W c
Wc← 0
for e=1, 2,… , E
c← H e
i← W c ; W c ← W c +1
( G c )i=e
http://www.cimat.mx/~miguelvargas
9/11
Ejemplo en 3D
http://www.cimat.mx/~miguelvargas
10/11
¿Preguntas?
miguelvargas@cimat.mx
http://www.cimat.mx/~miguelvargas
11/11
Descargar