Search code examples
clinuxfilesystemsmpiworkspace

How workspace is shared in MPI?


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 like mpiexec -n24 -share_files_across_machines=./file1.so:./lib_boost/**:./some_other_not_lib_file.txt?

Solution

  • 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.)