I wonder about 2 things:
- when I ran my app on mpi cluster made from 3 computers is it ran from some shared virtual directory or I have row access to some dir/some folder on each computer my app is ran on?
- is my programm uses lots of shared libraries and tipically when I ran it on one computer I call
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 likempiexec -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
scpto 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.)