[petsc-users] Converting complex PDE to real for KNL performance ?

Jed Brown jed at jedbrown.org
Wed Mar 27 21:36:50 CDT 2019


When you roll your own equivalent real formulation, PETSc has no way of
knowing what conjugate transpose might mean, thus symmetry is lost.  I
would suggest just using the AVX2 implementation for now and putting in
a request (or contributing a patch) for AVX-512 complex optimizations.

Sajid Ali via petsc-users <petsc-users at mcs.anl.gov> writes:

>  Hi,
>
> I'm able to solve the following equation using complex numbers (with
> ts_type cn and pc_type gamg) :
>                               u_t = A*u'' + F_t*u;
> (where A = -1j/(2k) amd u'' refers to u_xx+u_yy implemented with the
> familiar 5-point stencil)
>
> Now, I want to solve the same problem using real numbers. The equivalent
> equations are:
> u_t_real   =  1/(2k) * u''_imag + F_real*u_real   - F_imag*u_imag
> u_t_imag = -1/(2k) * u''_real   + F_imag*u_real - F_real*u_imag
>
> Thus, if we now take our new u vector to have twice the length of the
> problem we're solving, keeping the first half as real and the second half
> as imaginary, we'd get a matrix that had matrices computing the laplacian
> via the 5-point stencil in the top-right and bottom-left corners and a
> diagonal [F_real+F_imag, F_real-F_imag] term.
>
> I tried doing this and the gamg preconditioner complains about an
> unsymmetric matrix. If i use the default preconditioner, I get
> DIVERGED_NONLINEAR_SOLVE.
>
> Is there a way to better organize the matrix ?
>
> PS: I'm trying to do this using only real numbers because I realized that
> the optimized avx-512 kernels for KNL are not implemented for complex
> numbers. Would that be implemented soon ?
>
> Thank You,
> Sajid Ali
> Applied Physics
> Northwestern University


More information about the petsc-users mailing list