In general you should expect similar but not identical conference behavior. 

    I suggest running with all the monitoring you can. 
-ksp_monitor_true_residual -fieldsplit_0_monitor_true_residual 
-fieldsplit_1_monitor_true_residual and compare the various convergence between 
the CPU and GPU. Also run with -ksp_view and check that the various solver 
options are the same (they should be).

  Barry


> On Oct 30, 2022, at 11:02 AM, Carl-Johan Thore via petsc-users 
> <petsc-users@mcs.anl.gov> wrote:
> 
> Hi,
>  
> I'm solving a topology optimization problem with Stokes flow discretized by a 
> stabilized Q1-Q0 finite element method
> and using BiCGStab with the fieldsplit preconditioner to solve the linear 
> systems. The implementation
> is based on DMStag, runs on Ubuntu via WSL2, and works fine with PETSc-3.18.1 
> on multiple CPU cores and the following
> options for the preconditioner:
>  
> -fieldsplit_0_ksp_type preonly \
> -fieldsplit_0_pc_type gamg \
> -fieldsplit_0_pc_gamg_reuse_interpolation 0 \
> -fieldsplit_1_ksp_type preonly \
> -fieldsplit_1_pc_type jacobi 
>  
> However, when I enable GPU computations by adding two options -
>  
> ...
> -dm_vec_type cuda \
> -dm_mat_type aijcusparse \
> -fieldsplit_0_ksp_type preonly \
> -fieldsplit_0_pc_type gamg \
> -fieldsplit_0_pc_gamg_reuse_interpolation 0 \
> -fieldsplit_1_ksp_type preonly \
> -fieldsplit_1_pc_type jacobi 
>  
> - KSP still works fine the first couple of topology optimization iterations 
> but then
> stops with "Linear solve did not converge due to DIVERGED_DTOL ..".
>  
> My question is whether I should expect the GPU versions of the linear solvers 
> and pre-conditioners
> to function exactly as their CPU counterparts (I got this impression from the 
> documentation),
> in which case I've probably made some mistake in my own code, or whether 
> there are other/additional
> settings or modifications I should use to run on the GPU (an NVIDIA Quadro 
> T2000)?
>  
> Kind regards,
>  
> Carl-Johan

Reply via email to