The efficient use of heterogeneous systems and the code portability within that system, depends on open standards, such as OpenCL, SYCL, which support co-processors of any type, if these devices have a driver available to use.
Using local co-processors, connected to a single host system, not allowing to take advantage of accelerators connected to other systems, accessible via the network, is a common characteristic in all these standards, which restricts the potential for applications to accelerate.
The rOpenCL is one of the possible solutions, which extends the normal version of OpenCL standard and allowing the usage of remote co-processor. As show the figure above, through a driver, fully compatible with ICD-Loader mechanism, and rOpenCL services that running on remote nodes, an OpenCL application (even pre-compiled) can transparently and efficiently explore the set of available accelerators in a distributed Linux system environment, using portable BSD socket-based communication.
At its current stage, rOpenCL only supports version 1.2 of OpenCL, a "limitation" inherited from the implementations of most OpenCL vendors, which stick to this version. Also, not all OpenCL functions can be performed remotely by the rOpenCL. The choice of functions to be supported by rOpenCL was conditioned by the development context (oriented to high-performance computing, not graphical acceleration) and expected execution environment. Thus, rOpenCL only performs 70% of OpenCL 1.2 functions correctly and stably (more information check the project’s Coverage folder). Although, version 3.0, released on April 27, 2020, only requires vendors to support the features of version 1.2, making all functions of 2.x versions optional. In this way, rOpenCL ends up being aligned with what the latest version of the specification considers fundamental.For details about installing the rOpenCL components, see the README.txt documents within the installation folder. In any case, for clarification on the installation process, the authors can be contacted through the emails: rufino@ipb.pt and rui.alves@ipb.pt.
In the current state rOpenCL is already able to successfully execute a set of well-known benchmarks, such as: Babel Stream, Cl_mem, Cl_peak, Financebench, Polybench. In addition, it was also possible to use the hashcat tool for breaking ciphers. All these results, as well as the execution context of each test, can be consulted in the results folder of the project. In addition to these results, it is also possible to consult the results obtained in the comparison of rOpenCL with similar approaches: dOpenCL, clOpenCL and VCL respectively.
It is important to mention that the values shown are outdated, since the rOpenCL has undergone a set of updates that have allowed to optimize its performance. At the beginning of 2022 the new values will be published as well as the performance comparison with the rCUDA.
- Master Thesis Report (wrote in Portuguese Language) - http://hdl.handle.net/10198/23222
- R. Alves and J. Rufino, "Extending Heterogeneous Applications to Remote Co-processors with rOpenCL," 2020 IEEE 32nd International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD), 2020, pp. 305-312, doi: 10.1109/SBAC-PAD49847.2020.00049.
rOpenCL was created based on the structure and some of the Makefiles of POCL v1.2 (http://portablecl.org/).