An unreleased tool which is used for distributed compiles, reducing the compile time by distributing the work among multiple networked machines. The Source Engine features page, under the tools header, implies that VMPI is included to licensees as part of the Source Engine package. It is common belief that Valve did not release VMPI due to licensing issues with MySQL. In order for VMPI to be properly licensed, its source code must be public domain or Valve must purchase a proprietary license from the MySQL allowing distribution of parts of the MySQL code in their program.
There are several parts to have a working VMPI "cluster".
The MySQL server
VMPI uses the SQL server to track statistics on the compile. It does not actually need the SQL server to do a distributed compile, but it will produce errors when a SQL server isn't present.
The master machine
When the master initiates a VMPI compile, it will only keep track of the compiled data. It will not do any of the compiling itself (CPU wise). You can make the master machine contribute to the compile if you run a VMPI worker client on the master but, you may run out of system memory from having two copies of the compile tools running at the same time.
The master initiates a compile by first searching for available non-busy workers. When it finds one or more worker machines, it will upload a specific set of files to a network directory that both the master and the worker machines can see and have read / write access to. If one or more worker machines cannot access the uploaded files, the compile will fail.
The VMPI worker machine
A VMPI worker machine is a computer that has both the
vmpi_service and the
vmpi_service_ui running. When the
vmpi_service is started, it will start broadcasting on the LAN that it is available to start working on compiles. VMPI worker machines do not have to all be mirror images of each other (like beowulf clusters), you may have a plethora of different kinds of hardware as long as they are running some form of Windows NT (Win9x, WinME and Vista don't work very well with VMPI.)
- This is the UI for the
vmpi_service.exe, it will add an octagonal icon to the system tray. the icon has a total of 3 states; one being a brown color with a yellow question mark indicating that it cannot find a
vmpi_serviceprocess. One being a dark green color indicating that
vmpi_service.exeis running and waiting for jobs, and the final variation being a bright green (sometimes accompanied by the system repeatedly beeping out of its PC speaker) indicating that it is working on a compile.
- The process that runs on the worker machine that broadcasts itself for available jobs and listens for a master.
- Reads the SQL database and displays information on current and past compiles. This tool is somewhat buggy and doesn't work correctly.
- A command line tool used to monitor a compile in progress, it is somewhat useful if you can catch the
JobIDfrom the compile window before it disappears.
- vmpi_browser_services.exe & vmpi_ping.exe
- These two tools are used to find worker machines on the network.
vmpi_ping.exeis the command line version while the latter is the Windows version.
- Installs the VMPI worker services on a machine.
- Seems to be some sort of reset program to end botched compiles on the network.
- mpi - use VMPI to distribute computations.
- mpi_pw <password> - use a password to choose a specific set of VMPI workers.
- mpi_workers <integer> - specifies the maximum amount of VMPI workers that are allowed to work on a process (defaults to 32).