The VirtualCL (VCL)
is a wrapper for OpenCL™ that allows most unmodified
applications to transparently utilize multiple OpenCL devices in a cluster.
VCL allows programs to run on a cluster
by providing the impression of a single host with many devices.
Users can start a parallel application on a hosting computer,
then VCL manages and transparently runs the kernels of the
application on different nodes.
The VCL run-time model is designed to run applications that combine a
CPU process with massive parallel computation on OpenCL devices
(CPUs, GPUs, Accelerators) from all vendors.
The CPU process is responsible for the overall program flow and may
as well also perform some of the computations.
It can be multi-threaded in order to utilize all the available cores
in the hosting node.
While each instance of the application runs on a single hosting node,
it can use multiple OpenCL devices of a cluster.
Choosing the location of the devices is transparent to the
program - applications need not be aware which cluster nodes and
devices are available and where the devices are located.
The number of hosting nodes and cluster nodes is configurable and
they may overlap.
VCL is an independent package that runs on Linux clusters, with or without