1. An apparatus comprising: at least one storage and computing node comprising: at least one heterogeneous parallel processor comprising a central processing unit and a graphics processing unit; a plurality of data storage devices; a first guest operating system; a second guest operating system; first and second sets of pinned memory pages, the first set of pinned memory pages allocated to the first guest operating system and the second set of pinned memory pages allocated to the second guest operating system; first and second virtual graphics processing units based on the graphics processing unit, the first virtual graphics processing unit allocated to the first guest operating system and the second virtual graphics processing unit allocated to the second guest operating system; first and second client drivers, the first client driver used by the first guest operating system to access the first virtual graphics processing unit and the second client driver used by the second guest operating system to access the second virtual graphics processing unit; and a virtual device driver via which the first client driver accesses the first virtual graphics processing unit and the second client driver accesses the second virtual graphics processing unit, wherein the virtual device driver provides communication protocol signaling between the first client driver, the second client driver, storage and computing node threads, and virtual communication protocol registers.