C++ main module for emicrom Package
1.0
|
Mathematical Toeplitz Package for E-MicroM manages the matrix vector product for Multi levels Toeplitz matrix. A toeplitz matrix is a matrix whose value at element at row i and j depends only on i-j. A multi-level toeplitz matrix is a matrix whose block is toeplitz matrix. Each block is also a toeplitz matrix. More...
Mathematical Toeplitz Package for E-MicroM manages the matrix vector product for Multi levels Toeplitz matrix. A toeplitz matrix is a matrix whose value at element at row i and j depends only on i-j. A multi-level toeplitz matrix is a matrix whose block is toeplitz matrix. Each block is also a toeplitz matrix.
The description of a toeplitz matrix is in the class MATH_MultiLevelsToeplitzMatrix.
The main avantage of a toeplitz matrix is that the Matrix Vector product cost is in N.log(N) due to a diagonalization of this matrix thant to a Discret Fourier Transform. see FFTW library interface package . The projection in the spectral space and the matrix vector product are managed in the general interface class MATH_MultiLevelsToeplitzMatrix which have 4 implementations of the product by FFT method:
The MATH_ToeplitzClassFactory manages the creation of classes of the package.
The MATH_ToeplitzRun is the main class of the package.
The MATH_ToeplitzTest is the class test of the package.
To compare the different methods, a 3 levels toeplitz matrix is built with a full storage for leaf for the Global Multi levels based on polynomial covolution (GP) and a packed storage for the other methods.
we use the different grid of size Nx x Ny x Nz, the demagnetized operator is discretized on the grid and the projection of the spectral spaces is done for each different method. Then , 100 matrix product vector is computed and we compare the results with the openmp version of 4 threads:
Nx | Ny | Nz | N |
4 | 4 | 4 | 64 |
8 | 8 | 8 | 512 |
16 | 16 | 16 | 4 096 |
32 | 32 | 32 | 32 768 |
64 | 64 | 64 | 262 144 |
The result is as follow and the best methods is the LC/LP methods which are equivalents.
discretization (ms) |
100x matrix vector product (ms) |
memory size (Kb) |
The uml graph is as follow: