# An Evaluation of Directive-Based Parallelization on the GPU Using a Parboil Benchmark
## 2 Related Work
They also indicate no significant differences between architectures and compilers. Evaluation of the performance of three HPC-style mini-applications written in OpenCL and SYCL is given in [24]. SYCL is a newly introduced C++-based parallel programming model for implementing single source applications running on heterogeneous platforms. The results show that SYCL implementations achieve similar performance to a direct OpenCL implementation. A performance comparison of the OpenMP, OpenACC, and CUDA programming models on NVIDIA TESLA V100 GPU is presented in [25]. The authors denote that OpenMP and OpenACC compilers were able to produce efficient parallel codes in simple cases, such as matrix multiplication. For more complex numerical simulations, OpenACC/OpenMP solutions are up to 80% slower in some cases compared to the CUDA solution. The General Plasmon Pole (GPP) kernel application is studied in [26] using OpenMP, OpenACC, and CUDA. While focusing predominantly on the OpenMP CPU and GPU implementation of the GPP code, it also compares both frameworks regarding register pressure and data movement. However, the CUDA implementation outperforms both OpenMP and OpenACC by a factor of two for the GPP application. The OpenACC and CUDA implementations of 19 kernels from 10 mini-applications chosen mainly from the Rodinia benchmark suite were evaluated in [27]. Various optimizations have been employed to improve performances. The results show that the PGI compiler produces a slightly less performant code compared to the hand-written CUDA code. On the other hand, they observed much faster data movements with an increased number of memory copy operations. The SPEC ACCEL 1.2 benchmark is one of the latest efforts to evaluate performance of different accelerator platforms. It comprises of 13 applications implemented in OpenCL, OpenACC, and OpenMP 4.5. It was carefully examined on several different supercomputing platforms using closed-source (PGI) and open-source (GCC) compilers [28]. The study suggests that OpenACC compilers are functionally more mature than the OpenMP 4.5 counterparts. However, access to the SPEC ACCEL 1.2 benchmark is limited, as it is a relatively high-cost commercial product. The Cactus suite [29] presents a novel top-down approach to GPU benchmarking using 10 complex, real-life applications. The authors state that workloads presented in their benchmark suite exhibit more complex and diverse execution behavior while covering a wider set of computational problems than previous solutions. Since its introduction in 2011, OpenACC was mostly backed up by the industry consortium led by Cray, CAPS, NVIDIA, and PGI. That affected the development of compiler infrastructure needed for the successful adoption of the standard, as well as portability on other architectures. Although there were several academic efforts, such as accULL [30], OpenUH [31], and Omni compiler infrastructure [32], PGI compilers has been the most mature and widely available compilers with an extensive OpenACC support for NVIDIA GPUs. The alternatives include _gcc_ compiler, which supports OpenACC from version 10 and Clacc based on Clang and LLVM [33]. However, those OpenACC compiler implementations are not stable, bug-free, and well documented, as reported in several studies such as [28; 34; 35], which indicate the highest conformance of the PGI compiler with the OpenACC standard.