Parallel streaming algorithm

Hello,

Basically, I’m having problems running my code in parallel. The problem comes in a special streaming algorithm that I’ve written. So rather than use the built-in collideAndStream (or either of the two separate built-in functions), I have three processors (all are applied to bulk only):

  1. Collides the nodes and records the rho at each node in a ScalarField (local write on lattice and scalar field)
  2. Streams the distribution function by storing the new distr. func. values for each node in a TensorField, which has size nx by ny by nz by q (potentially non-local write only on the TensorField)
  3. Updates the distribution function values on the lattice with those stored in the TensorField (local write on the lattice)

I’ve integrated the three processors at three different processor levels (0, 1 and 2, respectively) so there should be a communication between the envelopes between each one. However, for some reason the communication doesn’t seem to be executing, because there is no streaming across the two processors. For example, if I use two processor threads, and I put in a pulse in the centre of the lattice (that is, the first x value that is owned by the second processor), there is only streaming in one direction, in the second processor, and not in the other direction to the first processor. The picture attached illustrates this.

http://i56.tinypic.com/2ufeq1x.png

It seems as if the TensorField’s envelope just isn’t being updated at all. Why do you think this would happen? I’m running it with the MPIparallel and SMPparallel flags both set true in the Makefile, because I’m working on one multi-core machine, and using the command mpirun -np 2 to run the code. This is correct, right?

Thanks for reading, hope you can help.

–Arpon Raksit

As an additional question, I just downloaded the latest release of Palabos (I was one or two releases behind), and now when I run the program in parallel, I am getting the error


Assertion failed: (unserializer.getId() == this->getId())

from the processors, immediately.

I’m bumping this up the thread list (above all the spam . . .) in hopes that more people see it and can perhaps help.