This MR aims to add functionality of predicting the runtime of FMM.
For motivations of this MR, please refer to this related issue in pytential.
I hope the related functionality in pytential will use the work in this MR (e.g. subclass).