Parallelising AEILocalInterp

Issue #429 open
Erik Schnetter created an issue

The enclosed patch parallelises AEILocalInterp via OpenMP.

This leads to a slight change in behaviour. Currently, AEILocalInterp traverses the list of points sequentially, and aborts when the first error is encountered. After parallelisation, there is no fixed order in which the points are traversed, and if several errors are encountered, any one of the errors may be returned, not necessarily the first. I am not aware of any thorn that would or should rely on such an ordering.

This patch also adds "restrict" and "const" statements that may improve performance as it gives the compiler more information about dependencies between pointers.

Keyword:

Comments (6)

  1. Frank Löffler
    • changed status to open
    • assigned issue to
    • removed comment

    The patch mostly looks good, but I noticed two things: - next time please try to prepare two different patches: the one with restrict&const can probably be applied without discussion, and the remaining changes are then not that long - there are some #if 0 close to the new openmp statements. It would be nice to either remove them (since they are not used in any case), or if they should stay at least for some time, please use a #define to dis- or enable all at the same time, and to have some more information in the source. It reads better to have #if DISABLE_OPENMP (or similar) than #if 0

    Frank

  2. Erik Schnetter reporter
    • changed status to open
    • removed comment

    I reverted this patch because it led to test suite failures in SphericalHarmonicRecon (reported in #873). Another problem with this patch is that it (apparently) leads to too much output, since interpolation is not aborted any more after the first error.

    We will revisit this after the ET_2011_05 release.

  3. Log in to comment