Code covered by the BSD License  

Highlights from
CUDA Convolution filter

5.0

5.0 | 1 rating Rate this file 8 Downloads (last 30 days) File Size: 1.2 KB File ID: #23334
image thumbnail

CUDA Convolution filter

by Mario Tuerschmann

 

17 Mar 2009 (Updated 04 Aug 2010)

Convolution of an arbitrary 1D complex signal with an arbitrary filter kernel

| Watch this File

File Information
Description

1. Buy or use a CUDA enabled product from NVIDIA

2. Install a CUDA enabled driver for your version of WINDOWS on your PC

3. Download via the displayed link the zipped MEX & DLL files your MATLAB working directory

32 Bit --->

http://www.tytec.de/trial/cuda/Matlab/Cuda_3.1_FFT_Convolution_Filter_32Bit.zip

64 Bit --->

http://www.tytec.de/trial/cuda/Matlab/Cuda_3.1_FFT_Convolution_Filter_64Bit.zip

4. Start MATLAB

5. At the MATLAB prompt ">>" type "cuFilter"

6. When the function is called without any parameter simulated signals are used

7. The fuction accepts 2 parameter : 1st the 1D complex signal and 2nd the filter kernel

HPC for the masses, enjoy the speed of CUDA ;-)

MATLAB release MATLAB 7.4 (R2007a)
Other requirements + Operating system: W2K / WXP / WXP64 / Vista32 / Vistax64 / Win7_32_Bit / Win7_64_Bit + CUDA enabled graphic card from NVIDIA GeForce GTX 280 GeForce GTX 260 GeForce 9800 GX2 GeForce 9800 GTX, 9800 GTX+, 8800 GTS 512
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (9)
19 Apr 2009 Angela Strauss

what a speed up !!!

06 May 2009 Jarod

Can you compile for 64-bit or provide the source so I may?

08 May 2009 Mario Tuerschmann

+ support for MATLAB 64 Bit added
+ CUDA 2.2 support added

02 Jul 2009 Adrien

Good morning,
I tried this code with a Geforce 8500 GT and
Cuda NVIDIA Driver for Windows XP 32-bit 185.85 and Matlab 2007b.
When I launch cuFilter, I have an error but the computation seems to be done.
Then I tried with a signal (100000 elements) and a kernel (100). The cuFilter is approximately 0.2s whereas the conv function is 0.07s.
Moreover, the program seems not to be stable.
An idea?

Thank you,
Adrien

02 Jul 2009 Mario Tuerschmann

Good morning Adrien,

the 8500GT is not well suited (only 16 stream processors) and the CUDA memory for 100.000 signal elements is probably not sufficient enough.

There is no workaround in the software for a "low memory" case. Without the detailed error message i cant dive deeper into the problem.

I'm sure that a statement, that this algorithm is working well on 8800 series GPU's, does'nt help you that much on a 8500GT GPU.

Best regards

03 Jul 2009 Mario Tuerschmann

Hello,

here the benchmark results for "cuFilter" on a 8800GTS GPU vs. MATLAB "conv" function on a XEON E5345 CPU :

# signal elements: 100.000
# kernel elements: 100

cuFilter: 0.0155 s
conv: 0.0733 s

Best regards

24 Jul 2009 Mario Tuerschmann

Hello,

the following features were added:

+ support for CUDA 2.3
+ CUDA device selection for multiple QUADRO/GEFORCE/TESLA devies
+ CUDA device listing
+ improved error handling

the user can now select the CUDA device she/he wants by using a 3rd optional function parameter (0..N-1), where N denotes the number of CUDA devices in your computer.

If the 3rd parameter is set to -1, all CUDA devices available on the computer are listed.

Best regards

24 Jul 2009 Mario Tuerschmann

Hello,

the following features were added:

+ support for CUDA 2.3
+ CUDA device selection for multiple QUADRO/GEFORCE/TESLA devies
+ CUDA device listing
+ improved error handling

the user can now select the CUDA device she/he wants by using a 3rd optional function parameter (0..N-1), where N denotes the number of CUDA devices in your computer.

If the 3rd parameter is set to -1, all CUDA devices
available on the computer are listed.

Best regards

21 Aug 2009 Mario Tuerschmann

Hello,

the 64 Bit version of the convolution filter based on CUDA 2.3 is now available. Here the benchmark results tested in MATLAB2008B (32/64 Bit):

# signal elements: 100.000
# kernel elements: 100

***** 32 Bit *********

cuFilter: 0.014 s
MATLAB conv: 0.0433 s

***** 64 Bit ******

cuFilter: 0.007 s
MATLAB conv: 0.040 s

The NVIDIA driver version 190.38 is a basic requirement.

Best regards

Please login to add a comment or rating.
Updates
18 May 2009

Cosmetic changes

23 Jul 2009

+ Added support for CUDA 2.3
+ improved error handling
+ Added CUDA device selection for multiple TESLA devies
+ Added CUDA device listing

31 Mar 2010

Added download links

04 Aug 2010

Update to CUDA 3.1 toolkit

Tag Activity for this File
Tag Applied By Date/Time
cuda Mario Tuerschmann 18 Mar 2009 11:11:15
fft Mario Tuerschmann 18 Mar 2009 11:11:15
convolution Mario Tuerschmann 18 Mar 2009 11:11:15
parallel computing Mario Tuerschmann 18 Mar 2009 11:11:15
cluster Mario Tuerschmann 18 Mar 2009 11:11:15
hpc Mario Tuerschmann 18 Mar 2009 11:11:15
cluster Daniel Lander 16 Jun 2010 09:42:07

Contact us at files@mathworks.com