About HP-PVM

PVM is a popular standard parallel communications library for building parallel software. It allows programs to easily create and manipulate tasks on remote computers, and allows them to communicate efficiently and easily through 'messages', in scalable heterogeneous environments.

HP-PVM (High Performance Parallel Virtual Machine) is a fully commercially supported replacement for the standard PVM system. Developed in-house from scratch, HP-PVM has been produced for performance, reliability, and rapid detection of faults. Clients have found the software to be far more stable than PVM, under Unix and MS-Windows platforms, and significantly faster with real world parallel applications. HP-PVM can be integrated into applications more invisibly and professionally than traditional PVM, as there are no elaborate daemon set-up procedures or obtrusive PVM graphical interfaces.

HP-PVM is a compatible subset of PVM 3.3, and has various extensions to the PVM command set and implementation to deal with some of its limitations, such as non-blocking send operations, multi-processor support and shared memory communications.

Installation of the software is straight forward, and a diagnostic test program allows any problems to be quickly detected. Debug modes allow all PVM calls and data to be dumped to files, along with detailed error reports. Checksum verification allows automatic checking of correct data transfer. A non-determinism harness allows the random execution divergence of parallel code to be captured and replayed, to allow reproduction of awkward intermittent problems. Each computer in the system can emulate many, allowing software to be tested on larger numbers of computers than are available.

A simple high level library for the construction of process farm programs is included. The library handles process mapping, fault tolerance, automatic utilisation of new computers, and co-ordination of communications, leaving the user to concentrate on the application logic.

We maintain a close co-operative partnership with our clients, to resolve any problems that occur. When problems with HP-PVM occur, they are fixed promptly. Where the cause of a problem is unclear, we will work with you to resolve the problem, through hands-on assistance, advice, or through extending error diagnosis tools. We are always happy to enhance or customise our software to provide the facilities you need, whether fleshing out any missing PVM commands, adding new commands (e.g., non-blocking I/O), or extending functionally (e.g., flow control in scalable communications).

We support most Unix and MS-Windows platforms. As operating system specifics are neatly isolated in our code, we can rapidly and reliably port to new operating systems, usually within a day. The software is available as a 32 bit library or DLL for Microsoft windows, and as a library for most Unix platforms. The library has C and Fortran interfaces.


These are results from a simple test, comparing HP-PVM to WPVM running on Windows NT systems.

The test is based on a group of processes, forming a cycle. The first process sends a message to the second, which sends it to the third, etc.

The throughput tests have the first task send a continuous sequence of messages, which pass through the chain of tasks once. We record how many messages per second arrive at the final computer.

The latency test has the first task sending periodic messages which pass through the system many times. We record the time it takes to complete it's journey.

In summary:

multiprocessor:     34 times faster
network:               3 times faster
multiprocessor:     11 times faster (207 for very small messages)
network:               3 times faster   (13 for very small messages)


Single process test. This uses a chain of 6 tasks. The latency test sends messages every 3 seconds, which cycle 40 times.

    HP-PVM using shared memory

        Latency                    Avg time to arrive
        4 bytes         70176
        800 bytes       80176
        8000 bytes     140176
        40000 bytes    941352
        Throughput                Avg msg/sec     Avg byte/sec
        4 bytes          2538       10152
        800 bytes        1735     1388000
        8000 bytes        469     3752000
        14400 bytes       265     3816000 (max)
        40000 bytes        52     2080000

    HP-PVM using tcp/ip (winsock)

        Latency                 Avg time to arrive
        4 bytes        372294
        800 bytes      400705
        000 bytes      761117
        40000 bytes   2799352
        Throughput                Avg msg/sec     Avg byte/sec
        4 bytes           153         612
        800 bytes         136      108800
        8000 bytes         65      520000
        40000 bytes        15      600000

    WPVM using tcp/ip (winsock)

        Latency                 Avg time to arrive
        4 bytes        2349411
        800 bytes      2366294
        8000 bytes     2450000
        40000 bytes   38337500
        Throughput                Avg msg/sec      Avg byte/sec
        4 bytes           15           60
        800 bytes         15        12000
        8000 bytes        15       120000
        17600 bytes       12       211200 (max)
        40000 bytes        4       160000

Network test. Throughput test uses just two computers, data being sent from the first to the second. The latency test uses two computers, with the message going around the cycle 8 times.


        Latency                 Avg time to arrive

        4 bytes          15647
        800 bytes        49647
        8000 bytes      233083
        40000 bytes     946583
        Throughput               Avg msg/sec     Avg byte/sec
        4 bytes          412        1648
        800 bytes        385      308000
        8000 bytes        84      672000
        40000 bytes       16      640000


        Latency                     Avg time to arrive
        4 bytes           46882
        800 bytes         46882
        8000 bytes       281250
        40000 bytes     1360833
        Throughput           Avg msg/sec        Avg byte/sec
        4 bytes          31         124
        800 bytes        31       24800
        8000 bytes       31      248000
        40000 bytes       2       80000

Quad processor file server test. This is the same as the single processor test

    HP-PVM using shared memory

        Latency                    Avg time to arrive
        4 bytes            31214
        800 bytes          31285
        8000 bytes         62500
        40000 bytes       410714
        Throughput        Avg msg/sec        Avg byte/sec
        4 bytes        6429       25716
        800 bytes      5199     4159200
        8000 bytes     1422    11376000
        40000 bytes     132     5280000

    HP-PVM using tcp/ip (winsock)

        Latency                  Avg time to arrive
        4 bytes       156214
        800 bytes     187500
        8000 bytes    312500
        40000 bytes  1122785
        Throughput        Avg msg/sec      Avg byte/sec
        4 bytes       377         1508
        800 bytes     373       298400
        8000 bytes    180      1440000
        40000 bytes    45      1800000

    WPVM using tcp/ip (winsock)

        Latency                 Avg time to arrive
        4 bytes        1069285
        800 bytes      1078214
        8000 bytes     1199785
        40000 bytes    5115000
        Throughput       Avg msg/sec       Avg byte/sec
        4 bytes        31          124
        800 bytes      31        24800
        8000 bytes     31       248000
        40000 bytes    25      1000000


Main plus points of HP-PVM

  •  Very reliable
  •  Full commercial support and customisation
  •  Fast communications, with 2-copy shared memory
  •  Default scalable comms plus automatic tcp link allocation
  •  Flow control in scalable communications
  •  Detailed error reporting
  •  Checksum data verification
  •  Emulation of large numbers of computers
  •  Multi-processor support
  •  Non-blocking and time-out send and probe commands
  •  Neat professional seamless integration into applications
  •  Distributed system starts up automatically when application is run, with no fussy 3rd party interfaces or configuration procedures