Scheduling with cycling mode = integer

I am trying my first cylc test, I hope it’s okay to ask really newbie questions here.

My scheduling section looks like:

[scheduling]
cycling mode = integer
initial cycle point = 01
final cycle point = 05

[[dependencies]]
[[[P1]]] # Integer Cycling
graph = “run => st_archive => timeseries”

What I would like to do is run 5 cycles of the sequence described by graph, but when I do
cylc run it submits three concurrent instances of the job described in the [runtime][[run]] section
How do I make the second run cycle depend on the first?
Why three instances? In my limited understanding of what’s gone wrong I would expect 5.

Hi,

How do I make the second run cycle depend on the first?

Cylc has a powerful approach to cycling rather than running cycles one after the other Cylc will run tasks from multiple cycles together.

In order to make your tasks run in order you will need to add inter-cycle dependencies which tell Cylc that a task in one cycle depends on one in another.

The syntax [-P1] means “from the previous cycle point” so for your example you probably want the following:

graph = “run[-P1] => st_archive => timeseries”

We have a cycling tutorial (currently in the Rose documentation) which may be helpful:
http://metomi.github.io/rose/doc/html/tutorial/cylc/scheduling/integer-cycling.html

Why three instances? In my limited understanding of what’s gone wrong I would expect 5.

This is due to the max active cycle points setting. By default this is set to 3 though it can be changed, in practice Cylc needs to limit the number of active cycles as suites can have very long or even infinite runs.

https://cylc.github.io/doc/built-sphinx/appendices/suiterc-config-ref.html#scheduling-max-active-cycle-points

Hi Jim,

The more newbie questions the better - we’re trying to get this new forum cranked up!

To add a little to what Oliver said, your workflow definition did not say anywhere that each cycle depends on the previous cycle, so Cylc tries to run them concurrently. If you’re processing archived data and there really is no dependence between cycles, that may allow you to get it all done much faster than if you were restricted to a series of consecutive cycles.

Hilary

I think I’ve found the right graph, the st_archive of the previous cycle must complete before the next cycle starts.

[[dependencies]]
[[[R1]]]
graph = “set_external_workflow => run => st_archive => timeseries”
[[[R/P1]]] # Integer Cycling
graph = “”"
st_archive[-P1] => run
run => st_archive => timeseries
“”"