Efficient Performance Estimation and WorkGroup Size Pruning for OpenCL Kernels on GPUs Graphic Processing Units (GPUs) play a vital role in stateoftheart highperformance scientific computing realm and research work towards its performance analysis is crucial but nontrivial. Extant GPU performance models are far from practical use, while finegrained GPU simulation requires a considerably large time cost. Moreover, massive amounts of designs with various program inputs and parameter settings pose a challenge for efficient performance estimation and tuning of parallel GPU applications. To this end, this article presents a hybrid framework for the efficient performance estimation and workgroup size pruning of OpenCL workloads on GPUs. The framework contains a static module used to extract the kernel execution trace from the highlevel source code and a dynamical module used to mimic the kernel execution flow to estimate the runtime performance. For the design space pruning, an extra analysis is performed to filter out the redundant workgroup sizes with duplicated execution traces and inferior pipelines. The proposed framework does not require any program runs to estimate the performance and find the optimal or nearoptimal designs. Experiments on four Commercial OffTheShelf (COTS) Nvidia GPUs show that the framework can predict the runtime performance with an average error of 17.04 percent and reduce the program design space by an average of 78.47 percent.

Optimizing the Aggregated Throughput of GPUs in Public Clouds Based on Adaptive Kernel Reordering GPGPUs have been widely used in public Clouds for the high computational ability, while a single GPU is shared by multiple tenants. When multiple applications share a single GPU, their kernels timeshares the GPU and the frequent context switches result in heavy overhead, and degrade the aggregated throughput of the GPU in consequence. To improve the aggregated throughput of GPUs, we design a system that eliminates unnecessary context switches throughput adaptive kernel reordering. It is challenging to achieve the above purpose because emerging realsystem GPUs encapsulate the kernel scheduling policy in the device driver and there is no open interface to schedulereorder the kernels. To resolve the above challenge, the designed system reorders kernels of different applications before they are transmitted to GPU. By scheduling kernels in the same application as long as possible unless the interval between adjacent kernels of an application is too long, the expenses of context switching can be reduced. Specifically, we propose three kernel reordering methods and test them on a Nvidia P100 GPU. Our experimental results show the aggregated throughput is improved by up to 31.07% when multiple applications share a GPU.