1

I developed auto-parallelizer for compiler-generated serial code ( see www.dalsoft.com ) and looking for the ways to apply this technology ( any suggestions? ). One possibility is to create parallel code for DSP filters. As an example I took Normalized Lattice filter ( latnrm ):

for (i = 0; i < NPOINTS; i++)   
   {
    top = InpData[i];
    for (j = 1; j < ORDER; j++)
     {
      left = top;
      right = InternalState[j];
      InternalState[j] = bottom;
      top = Coefficients[j-1] * left - Coefficients[j] * right;
      bottom = Coefficients[j-1] * right + Coefficients[j] * left;
     }
    InternalState[ORDER] = bottom;
    InternalState[ORDER+1] = top;
    sum = 0.0;
    for (j = 0; j <  ORDER; j++)
     {
      sum += InternalState[j] * Coefficients[j+ORDER];
     }
    OutData[i] = sum;
   }

Is there parallel version for this filter?

Is there need for parallel version for this filter?

After analyzing the code I realized that it is a 2-point stencil, thus parallelization may be attempted. It will help to better understand the usage of this kind of filters.

  1. What are the usual values for NPOINTS and ORDER?

  2. The code depends on the input InpData, InternalState and Coefficients. May it be assumed that routine will be called for different data in InpData and InternalState but the same Coefficients?

  3. What are the other DSP kernels that need to be parallelized?

Thank you,

David Livshin

www.dalsoft.com

4

0 回答 0