High performance implementation of 2-D convolution using AVX2

Abstract – Convolution is the most important and fundamental concept in multimedia processing. The 2-D convolution is used for different filtering operations such as sharpening, smoothing, and edge detection. It performs many mathematical operations on all image pixels. Therefore, it is almost a compute-intensive kernel. In this paper, we use Intrinsic Programming Model (IPM) and AVX2 technology to vectorize this kernel, explicitly. We compare our implementations to Compilers Automatic Vectorization (CAVs), OpenCV library and OpenMP API using ICC, GCC and LLVM compilers, on a single-core. For multi-threading, OpenMP has been used to perform IPM and CAVs implementations on multi-cores. Our experimental results show that the performance of our implementations is much higher than other approaches. In addition, OpenMP improves the performance of our explicit vectorizations significantly using ICC and GCC compilers.
In ieeexplore
Paper

High Performance Implementation of 2D Convolution using Intel’s Advanced Vector Extensions

Abstract – Convolution is the most important and fundamental concept in multimedia processing. For example, for digital image processing 2D convolution is used for different filtering operations. It has many mathematical operations and is performed on all image pixels. Therefore, it is almost a compute-intensive kernel. In order to improve its performance in this paper, we apply two approaches to vectorize it, broadcasting of coefficients and repetition of coefficients using Intrinsic Programming Model (IPM) and AVX technology. Our experimental results on an Intel Skylake microarchitecture show that the performance of broadcasting of coefficients is much higher than repetition of coefficients for different filter sizes and different image sizes. In addition, in order to evaluate the performance of Compiler Automatic Vectorization (CAV), and OpenCV library for this kernel, we use GCC and LLVM compilers. Our experimental results show that the performance of both IPM implementations are faster than GCC’s and LLVM auto-vectorizations.
In ieeexplore
Paper