Lecture 6: WHT Package - A self-adapting package to compute the Walsh-Hadamard
- Matrices and Matrix Multiplication
- C/C++/Ruby Programming
- Jeremy Johnson and Markus Pueschel (2000), "In Search of the Optimal Walsh-Hadamard
Transform", Proc. ICASSP 2000, pp. 3347-3350
- Walsh-Hadamard Transform (WHT) (see JP00, WHT package)
Matrix operations and the tensor product (See JJRT90, HJ91, TAL89, vL92)
- Definition of the Walsh-Hadamard Transform (WHT)
- Tensor Product and a factorization of the WHT
- Space of algorithms for computing the WHT
- Number of flops/instructions
- WHT package
- Performance distribution of WHT algorithms
- Searching for the optimal WHT algorithm with dynamic programming
- Partitioned matrices and block matrix multiplication
- Matrix transposition: (AB)^T = B^T A^T
- Permutation matrices: exactly one 1 in each row and column.
P_pq = P_q P_p, P^(-1) = P^T, (PAP^T)_ij = A_p(i)p(j)
- Stride Permutations:
L^(mn)_n X = X_n
= (x_0,x_n,...,x_(m-1)n,...,x_(n-1),x_(n-1 + n),...,x_(n-1 +(m-1)n)).
(L^(mn)_n)^T = L^(mn)_m.
- Tensor (Kronecker) Product: ij block of A tensor B = a_ijB
- Properties of tensor product
- (aA) tensor B = a(A tensor B) = A tensor (aB)
- (A1 + A2) tensor B = (A1 tensor B) + (A2 tensor B)
- A tensor (B1 + B2) = (A tensor B1) + (A tensor B2)
- 1 tensor A = A = A tensor 1
- (A tensor (B tensor C)) = ((A tensor B) tensor C)
- (A tensor B)^T = (A^T tensor B^T)
- (A tensor B)(C tensor D) = AC tensor BD
- (A tensor B)(x tensor y) = Ax tensor By
- (A tensor B) = (A tensor I)(I tensor B) = (I tensor B)(A tensor I)
- (A1 tensor ... tensor At)(B1 tensor ... tensor Bt) =
A1B1 tensor ... tensor AtBt
- (A1 ... At) tensor (B1 ... Bt) = (A1 tensor B1) ... (At tensor Bt)
- (A tensor B)^(-1) = A^(-1) tensor B^(-1)
- I_m tensor I_n = I_mn
- tensor product of [permutation, diagonal, monomial] matrices are
[permutaiton, diagonal, monomial].
- A tensor B = L^(mn)_m(B tensor A) L^(mn)_n
- Programming tensor products (see JJRT90, JJ92, Pit97)
Lecture notes and slides
Programs and References
- WHT package
spiral_wht-2.0-pre-1.tar.gz (developers WHT package)
- Jeremy Johnson and Markus Püschel (2000), "In Search of the Optimal Walsh-Hadamard
Transform," Proc. ICASSP 2000, pp. 3347-3350.
- J. Johnson, R.W. Johnson, D. Rodriguez, and R. Tolimieri (1990),
"A Methodology for Designing, Modifying, and Implementing Fourier Transform
Algorithms on Various Architectures,"
Circuits, Systems, and Signal Processing 9, 449-500.
- J. Johnson and R.W. Johnson (1992), "Programming Schemata for Tensor Product,"
Technical report DU-MCS-92-01, Dept. of Mathematics and Computer Science,
- Roger A. Horn and Charles R. Johnson (1991). Topics in Matrix Analysis.
Cambridge University Press, Cambridge.
- N. P. Pitsianis (1997),
The Kronecker Product in Approximation and Fast
Transform Generation, PhD Thesis, Department of Computer Science,
Cornell University, Jan. 1997, Advisor Charles F. Van Loan.
- R. Tolimieri, M. An, and C. Lu (1989). Algorithms for the Discrete Fourier
Transform and Convolution. Springer-Verlag, New York. Second edition, 1997.
- Charles Van Loan (1992). Computational Frameworks for the Fast Fourier
Transform. Frontiers in Applied Mathematics, Society for Industrial
and Applied Mathematics, Philadelphia, Vol. 10.
Created: Oct. 29, 2008 by jjohnson AT cs DOT drexel DOT edu
- Prove by induction that I tensor A1...At =
(I tensor A1)...(I tensor At), or more generally
A1...At tensor B1...Bt = (A1 tensor B1)...(At tensor Bt).
- Install and test WHT package
- Implement recursive and iterative WHT algorithms (in place)
- Implement radix 4 recursive and iterative WHT algorithms (in place)
- Perform timings for recursive and iterative WHT with different sizes
of small. Also measure small and compare to iterative.
- Time random WHTs and produce histogram
- Run dynamic programming and compare to recursive, iterative and random.