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

Zhang, Hong hongzhang at anl.gov
Tue Apr 14 13:28:10 CDT 2020



On Mar 27, 2019, at 8:07 PM, Sajid Ali via petsc-users <petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>> wrote:

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 ?

Can you provide a PETSc log for your code using complex numbers with -ts_type cn and -pc_type gamg? I am doubtful that it could benefit much from AVX optimizations on KNL.

Thanks,
Hong (Mr.)



Thank You,
Sajid Ali
Applied Physics
Northwestern University

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200414/03fb6f24/attachment.html>


More information about the petsc-users mailing list