One of the last issues with the current MPI prototype has been the difficulty of being forced to use dynamic linking. This makes it necessary to help the linker find the dynamic libraries (otherwise the executables just won’t start). So far I did require that the user configures the linker himself, but I would suggest we instead hard code the paths to the dynamic libraries instead (I found this out after spending more time than I ever intended on reading macos docs on linking).
The process works with the command
install_name_tool which I never used before. See the code here if you are interested. On Linux things are supposed to be easier - I have added the options to the linker, but I was not yet able to confirm if it indeed works on Linux.
In short, this means we can deploy MPI in such a way that we build our own boost mpi and hardcode the dynamic library paths which are used into all of our binaries. This should work for most users out of the box and make life much simpler as users won’t need to worry about linker stuff. In turn this means the devs should have it really easy now to get the branch up and running (it’s really worth it should you have a model which takes too much of your time to fit).
Does that approach make sense? Suggestions how to change it?