Recently, cloud systems composed of heterogeneous hardware have been increased to utilize progressed hardware power. However, to program applications for heterogeneous hardware to achieve high performance needs much technical skill and is difficult for users. Therefore, to achieve high performance easily, this paper proposes a PaaS which analyzes application logics and offloads computations to GPU and FPGA automatically when users deploy applications to clouds.
Recently, Infrastructure as a Service (IaaS) clouds have been progressed, and users can use computer resources or service components on demand (e.g., [1,2]). Early cloud systems are composed of many PC-like servers. Hypervisors, such as Xen [3] or kernel-based virtual machines (KVMs) [4], virtualize these servers to achieve high computational performance using distributed processing technology, such as MapReduce [5].
However, recent cloud systems change to make the best use of recent advances in hardware power. For example, to use a large amount of core CPU power, some providers have started to provide baremetal servers which do not virtualize physical servers. Moreover, some cloud providers use special servers with strong graphic processing units (GPUs) to process graphic applications or special servers with field programmable gate arrays (FPGAs) to accelerate specific computation logics. For example, Microsoft’s search engine Bing uses FPGAs to optimize search processing [6].
To use the recent advances in hardware power, users can benefit from high performance of their applications. However, to achieve this, users need to program appropriate applications for heterogeneous hardware and have much technical skill. Therefore, our objective is to enable users to achieve high performances easily. For this objective, cloud PaaS analyzes application logics and offloads computations to GPU and FPGA automatically when users deploy applications. The author previously proposed a Platform as a Service (PaaS) to select appropriate provisioning type of baremetal, container or virtual machine based on user requests [7]. In this paper, we investigate an element technology to offload part logics of applications to GPU and FPGA.
The rest of this paper is organized as follows. In Section 2, we review and clarify existing technologies problems. In Section 3, we propose a method of optimum application deployment for heterogeneous IaaS cloud. In Section 4, we conclude this paper.
Recently, GPU programming, such as the compute unified device architecture (CUDA) [8], that involves GPU computational power not only for graphics processing has become popular. Furthermore, to program ISBN 978-981-11-0008-6
(WCSE 2016) Tokyo, Japan, 17-19 June, 2016, pp. 34 -37 without walls between the CPU and GPU, the heterogeneous system architecture (HSA) [9], which allows shared memory access from the CPU and GPU and reduces communication latency between them, has been extensively discussed.
For heterogeneous programming, it is general to add and specify a code line to direct specified hardware processing. PGI Accelerator Compilers with OpenACC Directives [10] can compile C/C++/Fortran codes with OpenACC directives and deploy execution binary to run on GPU and CPU. OpenACC directives indicate parallel processing sections, then PGI compiler creates execution binary for GPU and CPU. Aparapi (A PARallel API) of Java [11] is API to call GPGPU (General Purpose GPU) from Java. Specifying this API, Java byte code is compiled to OpenCL and run when it is executed.
To control FPGA, development tools of OpenCL for FPGA are provided by Altera and Xilinx. For example, Altera SDK for OpenCL [12] is composed of OpenCL C Compiler and OpenCL Runtime Library. OpenCL C Compiler compiles OpenCL C codes to FPGA bit stream and configures FPGA logic, OpenCL Runtime Library controls FPGA from applications on CPU using libraries of OpenCL API. Programmers can describe FPGA logic and control by OpenCL, then configured logic can be offloaded to specified FPGA.
However, these technologies have two problems. A) General language codes of C, C++, Java need directives such as OpenACC or language extension such as Open CL C. If we would like to achieve high performance, timing to specify directives is very important and much technical knowledge is needed. B) There is no PaaS to utilize CPU/GPU/FPGA appropriately in clouds and users need to design how much GPU instances are needed.
The author previously proposed a PaaS to provide services based on user requests [7], [13], [14]. The work of [7] can provision baremetal, container or virtual machine appropriately, thus enhancing [7] idea, we can provide PaaS to select CPU/GPU/FPGA and can partly solve B). This paper targets to solve A) by an element technology to utilize GPU and FPGA from general language applications. Complex applications such as synchronous execution of FPGA and GPU are out of scope of this paper.
In this section, we propose a cloud provider PaaS with optimum application deployment technology. Our proposed technology involves a PaaS, an IaaS controller, such as OpenStack [15], heterogeneous cloud hardware, and a code patterns database (DB). The figures describe OpenStack as an IaaS controller, but OpenStack is not a precondition of the proposed technology. Fig. 1 shows system architecture and application deployment steps. There are 7 steps to deploy applications.
- Users specify applications to deploy
This content is AI-processed based on open access ArXiv data.