Skip to content

Latest commit

 

History

History
48 lines (21 loc) · 2.31 KB

README.md

File metadata and controls

48 lines (21 loc) · 2.31 KB

Parallel-Convolution---CUDA

Separable image convolution using CUDA

Convolutions are used by many application for engineering. In this project CUDA is used for an efficient and high performance implementation of separable convolutoion filter. All code is developed with Opencv 4.1.0 and CUDA 10.1 libraries on Visiual Studio 2019 platform. Sequential convolution is performed on CPU and parallel convolution is performed on GPU using global memory. In CPU result:0.0034949, in GPU result: 2.66e-05.

CONVOLUTION

In mathematically, Convolution is a mathematical way of combining two signals to form a third signal.

Ekran Alıntısı

In discrete time.

discretetime

Convolution can be implemented into two dimensions.

2d

In image processing, convolution kernel is a scalar product. This scalar product is a parallel operation that is well suited to computation on highly parallel hardware such as the GPU

exampleOfConv

Generally, two dimensional convolution filter requires n * m multiplications. Separable filter is a composition of two one dimensional filter. A separable filter can be divided into one dimensional filters. So that, Convolutions requires m + n multiplications.

Two dimensional filter

kernel

Divided filters into one dimensional row and column filters,

row filter -> rowKernel column filter -> colKernel

Inpu image:

inputImage

Output image:

outputImage