[GRASS-dev] [GRASS GIS] #3166: Parallelization with tiling for grass.script

GRASS GIS trac at osgeo.org
Mon Sep 26 08:49:31 PDT 2016


#3166: Parallelization with tiling for grass.script
--------------------------+------------------------------
  Reporter:  wenzeslaus   |      Owner:  grass-dev@…
      Type:  enhancement  |     Status:  new
  Priority:  normal       |  Milestone:  7.4.0
 Component:  Python       |    Version:  unspecified
Resolution:               |   Keywords:  script, parallel
       CPU:  Unspecified  |   Platform:  Unspecified
--------------------------+------------------------------

Comment (by wenzeslaus):

 Replying to [comment:1 mlennert]:
 > Wow, this looks great !

 Note also what is in PyGRASS. Especially after r69507.

 > Could you just explain the relation

 Partial duplication. As in the case of `grass.script` and
 `grass.pygrass.modules`.

 > difference between this and the GridModule in pygrass ?

 * This supports list of modules (workflow) which are executed subsequently
 on the given tile.
 * User needs to prepare the list in a for loop (as opposed to not using
 any for loop). This is because it is in fact derived from the non-tiled
 parallelization API which is more general, so the user in fact loops over
 what needs to be done (with or without parallelization).
 * Related to that, the API for simple parallel processing, parallel
 processing of series of maps, and tiled parallel processing of series of
 maps is the same.
 * User needs to "help" the functions and objects by providing the with
 some metadata, i.e. types and names of the maps to patch (for patching),
 because no module run metadata are available in `grass.script`.
 * Some of the execution details are lost, e.g. only last command's textual
 output is preserved.
 * `GridModule` uses separate mapsets for individual tiles, this uses
 `WIND_OVERRIDE`.
 * `GridModule` uses PyGRASS ctypes wrappers for patching, this
 (potentially huge) expression `r.mapcalc` and `r3.mapcalc`.
 * The interface is like `grass.script`, not like `grass.pygrass.modules`.
 * It is not complete.
 * The implementation is now 300 lines. `MultiModule` alone has 200.
 * It uses from multiprocessing `Pool.map_async` function (which may be the
 cause of problem with interrupting).

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3166#comment:3>
GRASS GIS <https://grass.osgeo.org>



More information about the grass-dev mailing list