Further improving guard update
Richard Guenther
rguenth at tat.physik.uni-tuebingen.de
Fri Dec 26 19:01:26 UTC 2003
Hi!
After ensuring we only fill those internal guards we're actually going to
use, the next bottleneck is our lame data flow analysis in the scheduler.
It doesn't detect the case where a write doesn't conflict with a
read/write as it touches a different domain, which happens f.i. for the
guard layer update.
A quick hack using the generation count to track dependend iterate shows
there is much room for improvement here. But I'm not sure what way we
should go. I can think of those options:
- pass down the evaluation domain to the data object at request time (this
may be hard, as we're handling views here and need to go back to the
brick domain)
- do the full guard cell update within a special iterate bypassing all the
request machinery for the individual updates (sounds like a lot of code
duplication here, but maybe the biggest gains for the least headaches in
generic code)
- ??? -- I'm sure I missed the best one ;)
Any ideas? I suspect I'll try to follow the second option, but at least
for stencils in expression form ( b(i) = a(i-1) + a(i+1) ) this still
won't offer the best solution.
Thanks,
Richard.
More information about the pooma-dev
mailing list