Skip to content

erkanoguz/Parallel-Convolution---CUDA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Separable image convolution using CUDA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published