SUMA CREW (Concurrent Read Exclusive Read)
Sumas Prefijas
Algoritmo:
for i=1 to log2 n do
forall Pj
where 2i-1+1≤ j ≥ n doinparallel
a[j]←a[j]+a[j-2i-1]
end forall
endfor
En python:
import threading
import math
#Definicion del hilo
def hilo(i,j):
a[j]=a[j]+a[j-pow(2,i-1)]
#Programa Principal
a=[0,5,2,10,1,8,12,7,3]
n=len(a)
lg=int(math.log(n,2))
for i in range(1,lg-1):
for j in range((pow(2,i-1)+1),n):
h = threading.Thread(target=hilo,args=(i,j))
h.start()
h.join()
import math
#Definicion del hilo
def hilo(i,j):
a[j]=a[j]+a[j-pow(2,i-1)]
#Programa Principal
a=[0,5,2,10,1,8,12,7,3]
n=len(a)
lg=int(math.log(n,2))
for i in range(1,lg-1):
for j in range((pow(2,i-1)+1),n):
h = threading.Thread(target=hilo,args=(i,j))
h.start()
h.join()
print a
No hay comentarios.:
Publicar un comentario