matlab parallel-processing parfor

parfor en matlab. variable en rodajas y bucle anidado



parallel-processing (1)

Hice todo lo posible para seguir la documentación de la caja de herramientas paralela, pero aún así no pude evitar el problema de reutilizar la matriz que estaba indexada en un bucle anidado. El problema es con nodo variable

parfor i=1:nX for j=1:nY [ind,dist]=findInCircle(node(i,j,:), part,r); UV=calcVelocity(part(ind,:), dist,node(i,j,:)) ; %here matlab complains that node is not indexed properly node(i,j,3)= UV(1); node(i,j,4)= UV(2); node(i,j,5)= UV(3); end end

No utilizo la matriz fuera del ciclo anidado, la indexación también está de acuerdo con la regla. ¿ Perdí otra restricción parfor ?


De acuerdo con la documentación, no puede usar diferentes índices como lo hizo:

Dentro del paréntesis o llaves del primer nivel, la lista de índices es la misma para todas las ocurrencias de una variable dada.

Una solución simple es posible:

parfor i=1:nX nodeSlice=node(i,:,:) for j=1:nY [ind,dist]=findInCircle(nodeSlice(j,:), part,r); UV=calcVelocity(part(ind,:), dist,nodeSlice(j,:)) ; %here matlab complains that node is not indexed properly nodeSlice(j,3)= UV(1); nodeSlice(j,4)= UV(2); nodeSlice(j,5)= UV(3); end node(i,:,:)=nodeSlice; end

Obtenga una porción de la matriz que contiene todos los índices, trabaje con ella y luego devuélvala.