I wonder about 2 things:
export LD_LIBRARY_PATH=./:./libs_boost/
how to make my .so libs be shared with that other machins with out sharing whole directory? Is it possible to say something like mpiexec -n24 -share_files_across_machines=./file1.so:./lib_boost/**:./some_other_not_lib_file.txt
?MPI makes no assumptions about how files are shared/distributed to all participating nodes. This is totally a matter of local configuration, so you cannot get a general answer: you have to see how your cluster is configured (ask your system administrator?).
More specifically:
an MPI process is still a regular UNIX (or Windows) process: so your application can use whatever operating system call to access the local filesystem or a shared network filesystem (if present).
on clusters that do not provide a shared directory, you can use scp
to copy the required startup files (e.g., libraries) to the other nodes and similarly collect back output files.
(It's better to automate this with a shell script.)
Some applications allow you to specify which node(s) can do I/O: all other nodes will receive input data through the MPI communication channels from processes running on the designated I/O nodes. (This won't work with the libraries, though, as they are loaded by the operating system before launching the MPI process.)