McCready
Hij@'e Puta
- Registrado
- 2004/08/06
- Mensajes
- 9.788
- Sexo
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 :/
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 :/