• ¿Quieres apoyar a nuestro foro haciendo una donación?, entra aquí.

Solapamiento En Lenguaje Paralelo Cuda

McCready

Hij@'e Puta
Registrado
2004/08/06
Mensajes
9.788
Sexo
Macho
Hola, tengo el siguiente problema

Estoy usando lenguaje paralelo para hacer lo siguiente en serie

for i=0,i<N,i++
A = ....
k = ....
var(k)+=A
end

donde se determina un valor de k que es el indice del vector var el cual se suma el valor A

en lenguaje convencional no tiene ningún problema, pero en lenguaje paralelo yo hice que el contador i fuera en paralelo por ende


i = blockIdx.x*blockDim.x + threadIdx.x; (que toma todos los i en paralelo de 0 a N)
if (i<N)

A = ...
k = ...
var(k) += A;
end

el problema es que como están en paralelo si un i tiene por ej un valor de k=6 y A=4 dando entonces var(6)=4 (suponiendo que estaba en cero) y luego otro i también tiene un k=6 y un A=5 entonces debería actualizarse el var(6)=9,

pero como esta en paralelo se graba solamente un valor ya que se solapan las sentencias

este problema me complica debido a que si bien esta haciendo las cosas en paralelo a la hora de grabar en un vector final, solo toma ciertos elementos debido al solapamiento.

quisiera saber si alguien tiene alguna idea de como resolver esto :/
 
Hola, tengo el siguiente problema

Estoy usando lenguaje paralelo para hacer lo siguiente en serie

for i=0,i<N,i++
A = ....
k = ....
var(k)+=A
end

donde se determina un valor de k que es el indice del vector var el cual se suma el valor A

en lenguaje convencional no tiene ningún problema, pero en lenguaje paralelo yo hice que el contador i fuera en paralelo por ende


i = blockIdx.x*blockDim.x + threadIdx.x; (que toma todos los i en paralelo de 0 a N)
if (i<N)

A = ...
k = ...
var(k) += A;
end

el problema es que como están en paralelo si un i tiene por ej un valor de k=6 y A=4 dando entonces var(6)=4 (suponiendo que estaba en cero) y luego otro i también tiene un k=6 y un A=5 entonces debería actualizarse el var(6)=9,

pero como esta en paralelo se graba solamente un valor ya que se solapan las sentencias

este problema me complica debido a que si bien esta haciendo las cosas en paralelo a la hora de grabar en un vector final, solo toma ciertos elementos debido al solapamiento.

quisiera saber si alguien tiene alguna idea de como resolver esto :/

Mira, estuve conversando tu problema con un ingeniero de la universidad de Chile y me dijo que el problema era que no decantaban los atómos.

Te recomiendo que visites estos foros:

foro.powers.cl

www.clubdelphi.com/foros
 
Volver
Arriba