Yesterday I finally got around to adding support for Debian 12 (Bookworm) and Ubuntu 23.10 (Mantic Minotaur) to FmiGo.
A bug that caused one test to hang put me off doing this for a while.
After a bunch of printf()
debugging the bug turned out to be some kind of race condition in mpich when calling MPI_Finalize()
.
I couldn't figure out how to fix the issue, despite following the documentation's recommendation to make the call the last thing the program does.
Therefore I switched the Dockerfile for bookworm
to use OpenMPI instead.
Fortunately FmiGo is already engineered to make such a switch easy.
It has also occurred to me that the SPOOK solver used in FmiGo is a form of feedforward control. This contrasts with feedback control in that feedforward controllers must model the system under regulation whereas feedback controllers do not. This also means feedforward is ex-ante whereas feedback is ex-post. Some readers may already suspect where I'm going with this: planning. However that is the topic of a future post I am working on, and I intend to keep this post short. Stay tuned!