The final step in our pipeline is to transpose the matrix, resulting in a 513×1000 matrix of complex numbers. In fourier space, a convolution corresponds to an element-wise complex multiplication. After the transform we apply a convolution filter to each sample. Therefore, the result of our 1000×1024 example FFT is a 1000×513 matrix of complex numbers. The output of an -point R2C FFT is a complex sample of size. Therefore, you can think of this input as a 1000×1024 matrix of 8-bit fixed-point values.Īfter converting the 8-bit fixed-point elements to 32-bit floating point the application performs row-wise one-dimensional real-to-complex (R2C) FFTs on the input. For more efficient processing, we group samples into batches of 1000 samples each. Each sample consists of 1024 data points. Figure 1: The processing pipeline for our example before and with CUDA 6.5 callbacks.īatches of 8-bit fixed-point samples are input to the DSP pipline from an A/D converter. The source code for both versions is available on github. We will first discuss a solution without callbacks using multiple custom kernels which we then use as a stepping stone towards a solution based on cuFFT device callbacks. In this blog post we will implement the first stages of a typical DSP pipeline as depicted in Figure 1. You can use callbacks to implement many pre- or post-processing operations that required launching separate CUDA kernels before CUDA 6.5. Callback routines are user-supplied device functions that cuFFT calls when loading or storing data. The cuFFT library included with CUDA 6.5 introduces device callbacks to improve performance of this sort of transforms. For example, if the input data is supplied as low-resolution samples from an 8-bit analog-to-digital (A/D) converter, the samples may first have to be expanded into 32-bit floating point numbers before the FFT and the rest of the processing pipeline can start. Digital signal processing (DSP) applications commonly transform input data before performing an FFT, or transform output data afterwards.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |