domingo, 15 de marzo de 2015

SUMA CREW

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()

print a

No hay comentarios.:

Publicar un comentario