Previous | Next --- Slide 11 of 60
Back to Lecture Thumbnails
kayvonf

Question: Why do you think the term ghosts cells is used for the white dots?

top

@kayvonf Because those "dots" is not the actual data that the other threads are using but a local copy?

amaliujia

@Kayvonf I guess it is because white dots does not belong to address space of thread 2 at the beginning.

BigFish

@Kayvonf Just take thread 2 as an example. I guess the reason is that these cells are not computed by thread 2. Instead, there are just a copy of the border cells from thread 1 and thread 3, which are definitely computed and updated by thread 1 and thread 3.

afzhang

@kayvonf: They're called "ghost cells" because they're phantom copies of data that really reside elsewhere. The white dots in thread 2 are copies of data that thread 2 doesn't own (and therefore should never write to) but needs to perform its own computations.

kayvonf

Nice answer!

rflood

Why do we need to recv the ghost row each time? Theoretically couldn't we keep the non-writeable rule for the top and bottom rows, but just increase the original allocation to read the "ghost rows" originally, instead of dealing with the communication overhead from receiving it?

I realize that we need to recv them when they do get updated, but given that we only communicate twice, we can get rid of 1/2 of our communication overhead this way

kayvonf

By "each time" we are referring to each iteration of the outermost while not converged loop of the solver. Since all cells are updated after each iteration of this loop, within each iteration the data needs to be communicated.

The code snippet on the slide is only a block of communication code, it's not the entire application (which is not shown since we've talked about it many times before). The full message passing code for the solver is on the next slide.