VMPI (Valve Message Passing Interface) is a tool that distributes map compiles over multiple computers, either on a LAN or the Internet. Every computer runs VMPI in Valve's offices, even the receptionist's, allowing production-quality maps to be spat out in a matter of seconds.
Each distributed compile is organised by a master machine, to which worker machines connect. Each machine must have the game/mod being compiled for installed.
- To create a master, start VRAD or VVIS with
-mpi; port 23311 will open to allow workers to connect.
- To create a worker, start with
mpi_worker <master IP:port>
This will get the job done, but you may also want to consider the following:
- Change the master's connection port. Default is 23311.
- Delays the compile until a keystroke is pressed. Useful for letting workers connect.
- Shows a graphical output of the work that's being done.
- Gray: work unit not sent yet
- Green: completed work unit
- Light green: work unit being done by master
- Blue: work unit being done by a worker machine.
- Each block represents a single core on a machine, so a quad-core processor will have four.
- Enables a debug menu during compiles (
-mpi_graphicsautomatically enables it.) To access the menu, press "D" on the keyboard during a compile. This command also seems to be buggy as I have never gotten it to work.
- Shows the statistics of the workers used in the compile and how much work they have completed. Statistics are shown after the compile is completed.
- Sets the maximum amount of workers allowed in the job.
- Spawns a local worker on the master machine. Only useful for testing.
- Prevents the master from processing its own work units.
- Keeps polling a specified master until it starts a compile. If not used before a master machine starts a compile, the worker will time out and display an "MPI_Init failed" error.
- Auto-restarts polling mode after a compile is finished. This command is buggy and doesn't always work, so don't rely on it. Must be used with "-mpi_Retry" if you don't want to keep getting the "MPI_Init failed" message.
Either / unknown
- Throttles file transmission rate (kB/s)
- Level of debug output.
VMPI workers can connect over the internet. However, high-latency or low-bandwidth connections (including upload speed) can cause timeouts.
Bear in mind that because data flows both ways both the master and the worker require an open and forwarded port, TCP and UDP.
SENC (Source Extended Net Compiler) provides a GUI for VMPI compiles.
Additionally, its worker comes with a fake (but not in an illegal sense!) Steam installation, allowing you to run workers on whatever machine you please.