[vsipl++] [patch] support for non-contiguous rows or columns with Cell FFTM

Stefan Seefeld stefan at codesourcery.com
Wed Mar 7 18:32:25 UTC 2007


Don McCoy wrote:

> Index: src/vsip/opt/cbe/ppu/fft.cpp
> ===================================================================
> --- src/vsip/opt/cbe/ppu/fft.cpp	(revision 165069)
> +++ src/vsip/opt/cbe/ppu/fft.cpp	(working copy)
> @@ -306,7 +306,20 @@
>  			    length_type, length_type)
>    {
>    }
> -
> +  virtual void query_layout(Rt_layout<2> &rtl_inout)
> +  {
> +    // must have unit stride, but does not have to be dense
> +    rtl_inout.pack = stride_unit;
> +    rtl_inout.order = tuple<0, 1, 2>();

Since we want unit-stride in the direction in which the FFT is taken,
we need to take the axis parameter 'A' into account.
So, for example:

    if (A == 0) rtl_inout.order = tuple<0, 1, 2>();
    else rtl_inout.order = tuple<1, 0, 2>();

> +    rtl_inout.complex = cmplx_inter_fmt;
> +  }
> +  virtual void query_layout(Rt_layout<2> &rtl_in, Rt_layout<2> &rtl_out)
> +  {
> +    // must have unit stride, but does not have to be dense
> +    rtl_in.pack = rtl_out.pack = stride_unit;
> +    rtl_in.order = rtl_out.order = tuple<0, 1, 2>();

Same here.


> +    rtl_in.complex = rtl_out.complex = cmplx_inter_fmt;
> +  }
>  private:
>    rtype scale_;
>    length_type fft_length_;


Regards,
		Stefan

-- 
Stefan Seefeld
CodeSourcery
stefan at codesourcery.com
(650) 331-3385 x718



More information about the vsipl++ mailing list