-
Notifications
You must be signed in to change notification settings - Fork 201
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
experiments submitted with Flush=True cannot interrupt other experiments #640
Comments
Are you sure you want to do that, and not simply set the lowest priority on your long experiment that calls |
And if you really want that, you can write this function yourself and put it into the experiment. This will come in handy: https://m-labs.hk/artiq/manual-release-2/management_system.html#artiq.master.scheduler.Scheduler.get_status |
I have set the lowest priority on my long (main) experiment, and the calibration experiments still never run. I believe this is because I've also already written this function myself, but I figure that other groups will also want this functionality, so it probably makes sense to build it into artiq. |
Please post a screenshot of the scheduler showing the problem. |
In the example below, ExpA is the "main" experiment, and ExpB is the "calibration" experiment. ExpA is submitted first with
If you look at artiq/artiq/master/scheduler.py Line 465 in 5d184f8
you'll see that check_pause ignores experiments that have Status=flushing .
|
I ran into this problem as well. It would be useful if experiments set to flush at a higher priority would run ahead of experiments running in the background at a lower priority. |
This is not a bug, "flushed" previously meant "nothing else ahead of us", which is a perfectly valid definition. It now means "nothing else ahead of us at our and higher priority levels". Without complexity explosion, we can have either behavior selectable at experiment submission time, if that's relevant. Open a new issue if you want that. |
Running 2.0.
I'd like to schedule some calibration experiments that run every x seconds such that they interrupt the main experiment. The calibration experiments need to use the newest values of the various parameters (that are being computed by other calibration experiments), so I'd like to run them with Flush=True. However, when my main experiment calls
scheduler.check_pause()
, it always returns False because the calibration experiments were submitted with Flush=True, so the calibration experiments never run.I actually think that the behavior of
scheduler.check_pause()
makes sense, but can we add another function to the scheduler that returns true if there is a higher priority experiment in the schedule that was submitted with Flush=True? Then when this new function returns True I can end the current experiment and reschedule it.The text was updated successfully, but these errors were encountered: