In writing a highly-portable parallel program, we developed a library of parallel primitives to shield our application code from the various multiprocessors. Rather than adapt the different multiprocessors to a program-specific library via extensive implementation, we chose to first find a common 'intersection' of the virtual machine models provided by each vendor, define a common interface to that model, and then develop our application based on that model. This paper describes the resulting common virtual machine model and a library interface to that model. We have implementations for that model on seven different shared-memory multiprocessors, and two different uniprocessors. Each implementation averages less than 100 lines of code. The common virtual machine model requires more programming effort than any one vendor's library, but the resulting program executes reasonably efficiently on all machines.