Abstract
This paper presents compiler technology that targets general purpose microprocessors augmented with SIMD execution units for exploiting data level parallelism. Numerical applications are accelerated by automatically vectorizing blocks of straight line code to be run on processors featuring two-way short vector SIMD extensions like Intel’s SSE 2 on Pentium 4, SSE 3 on Intel Prescott, AMD’s 3DNow! , and IBM’s SIMD operations implemented on the new processors of the BlueGene/L supercomputer.
The paper introduces a special compiler backend for Intel P4’s SSE 2 and AMD’s 3DNow! which is able (i) to exploit particular properties of FFT code, (ii) to generate optimized address computation, and (iii) to perform specialized register allocation and instruction scheduling.
Experiments show that the automatic SIMD vectorization techniques of this paper enable performance of hand optimized code for key benchmarks. The newly developed methods have been integrated into the codelet generator of Fftw and successfully vectorized complicated code like real-to-halfcomplex non-power of two FFT kernels. The floating-point performance of Fftw’s scalar version has been more than doubled, resulting in the fastest FFT implementation to date.
Chapter PDF
References
Belady, L.A.: A study of replacement algorithms for virtual storage computers. IBM Systems Journal 5, 78–101 (1966)
Franchetti, F., Püschel, M.: A SIMD vectorizing compiler for digital signal processing algorithms. In: Proc. International Parallel and Distributed Processing Symposium, IPDPS 2002 (2002)
Frigo, M.: A fast Fourier transform compiler. In: Proceedings of the ACM SIGPLAN 1999 Conference on Programming Language Design and Implementation, pp. 169–180. ACM Press, New York (1999)
Frigo, M., Johnson, S.G.: Fftw: An adaptive software architecture for the FFT. In: ICASSP 1998, vol. 3, pp. 1381–1384 (1998)
Guo, J., Garzarán, M.J., Padua, D.: The Power of Belady’s Algorithm in Register Allocation for Long Basic Blocks. In: Rauchwerger, L. (ed.) LCPC 2003. LNCS, vol. 2958. Springer, Heidelberg (2004)
Kral, S., Franchetti, F., Lorenz, J., Ueberhuber, C.W.: SIMD vectorization techniques for straight line code. Technical Report Aurora TR2003-02, Institute for Applied Mathematics and Numerical Analysis, Vienna University of Technology (2003)
Kral, S., Franchetti, F., Lorenz, J., Ueberhuber, C.W.: SIMD Vectorization of Straight Line FFT Code. In: Kosch, H., Böszörményi, L., Hellwagner, H. (eds.) Euro-Par 2003. LNCS, vol. 2790, pp. 251–260. Springer, Heidelberg (2003)
Larsen, S., Amarasinghe, S.: Exploiting superword level parallelism with multimedia instruction sets. ACM SIGPLAN Notices 35(5), 145–156 (2000)
Moura, J.M.F., Johnson, J., Johnson, R.W., Padua, D., Prasanna, V., Püschel, M., Veloso, M.M.: Spiral: Portable Library of Optimized Signal Processing Algorithms (1998), http://www.ece.cmu.edu/spiral
Muchnick, S.S.: Advanced Compiler Design and Implementation. Morgan Kaufman Publishers, San Francisco (1997)
Sreraman, N., Govindarajan, R.: A vectorizing compiler for multimedia extensions. International Journal of Parallel Programming 28, 363–400 (2000)
Srikant, Y.N., Shankar, P.: The Compiler Design Handbook. CRC Press LLC, Boca Raton (2003)
Almasi, G., et al.: An overview of the BlueGene/L system software organization. In: Kosch, H., Böszörményi, L., Hellwagner, H. (eds.) Euro-Par 2003. LNCS, vol. 2790, pp. 543–555. Springer, Heidelberg (2003)
Franchetti, F., Ueberhuber, C.: An abstraction layer for SIMD extensions. Institute for Applied Mathematics and Numerical Analysis, Vienna University of Technology, Technical Report Aurora TR2003-06 (2003)
Intel Corporation, Intel C/C++ compiler user’s guide (2002)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kral, S., Franchetti, F., Lorenz, J., Ueberhuber, C.W., Wurzinger, P. (2004). FFT Compiler Techniques. In: Duesterwald, E. (eds) Compiler Construction. CC 2004. Lecture Notes in Computer Science, vol 2985. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-24723-4_15
Download citation
DOI: https://doi.org/10.1007/978-3-540-24723-4_15
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-21297-3
Online ISBN: 978-3-540-24723-4
eBook Packages: Springer Book Archive