Split area sources into point sources (to improve distribution of calculation load)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenQuake (deprecated) |
Fix Released
|
High
|
Lars Butler |
Bug Description
Currently, hazard calculations are parallelized over sources (i.e. a task is created for each source in a source model).
In case of source models made of 'area sources' the current distribution mechanism can produce an unevenly distribution of computational load (in a single source model, area sources can have very different sizes and therefore the number of ruptures - and the required computation time - can vary a lot). In this case a calculation can last for a long time simply because a task is assigned to a large area source. Moreover this prevent an efficient utilization of the computational infrastructure.
This problem can be reduced if an area source is indeed considered as a collection of point sources (as it is actually done in NHLIB, an area source is an extension of a point source, see: https:/
The 'splitting mechanism' can be be implemented as follows:
1) Given an area source, discretize the area source region (https:/
2) Create a 'scaled' version of the original area source magnitude frequency distribution (mfd), that is take the original area source mfd and create a new evenly discretized mfd (https:/
3) For each point in the discretized polygon computed in 1) create a point source (https:/
A task can then be created for each point source.
Changed in openquake: | |
status: | New → Confirmed |
importance: | Undecided → High |
assignee: | nobody → Lars Butler (lars-butler) |
milestone: | none → 0.9.1 |
tags: | added: hazard optimization |
Changed in openquake: | |
milestone: | 0.9.1 → 1.0.0 |
Changed in openquake: | |
status: | Confirmed → In Progress |
Changed in openquake: | |
status: | In Progress → Fix Committed |
Changed in openquake: | |
status: | Fix Committed → Fix Released |
We have discovered that it is most efficient if we group many (100-300) point sources into a single task. For simple and complex fault sources, it is still advised that only 1 source is given per task.
I think we should add a separate configuration option to define `block_size` for point sources, like so:
[hazard] source_ block_size` : New. Suggested value is 200-300.
`point_
`block_size`: Already exists. No change. Suggested value is 1.