Neko  0.8.99
A portable framework for high-order spectral element flow simulations
fusedcg_cpld_device Module Reference

Defines a fused Conjugate Gradient method for accelerators.

Data Types

type  fusedcg_cpld_device_t
 Fused preconditioned conjugate gradient method. More...
 
interface  cuda_fusedcg_cpld_part1
 
interface  cuda_fusedcg_cpld_update_p
 
interface  cuda_fusedcg_cpld_update_x
 
interface  cuda_fusedcg_cpld_part2
 

Functions/Subroutines

subroutine device_fusedcg_cpld_part1 (a1_d, a2_d, a3_d, b1_d, b2_d, b3_d, tmp_d, n)
 
subroutine device_fusedcg_cpld_update_p (p1_d, p2_d, p3_d, z1_d, z2_d, z3_d, po1_d, po2_d, po3_d, beta, n)
 
subroutine device_fusedcg_cpld_update_x (x1_d, x2_d, x3_d, p1_d, p2_d, p3_d, alpha, p_cur, n)
 
real(kind=rp) function device_fusedcg_cpld_part2 (a1_d, a2_d, a3_d, b_d, c1_d, c2_d, c3_d, alpha_d, alpha, p_cur, n)
 
subroutine fusedcg_cpld_device_init (this, n, max_iter, M, rel_tol, abs_tol, monitor)
 Initialise a fused PCG solver. More...
 
subroutine fusedcg_cpld_device_free (this)
 Deallocate a pipelined PCG solver. More...
 
type(ksp_monitor_t) function, dimension(3) fusedcg_cpld_device_solve_coupled (this, Ax, x, y, z, fx, fy, fz, n, coef, blstx, blsty, blstz, gs_h, niter)
 Pipelined PCG solve coupled solve. More...
 
type(ksp_monitor_t) function fusedcg_cpld_device_solve (this, Ax, x, f, n, coef, blst, gs_h, niter)
 Pipelined PCG solve. More...
 

Variables

integer, parameter device_fusedcg_cpld_p_space = 10
 

Function/Subroutine Documentation

◆ device_fusedcg_cpld_part1()

subroutine fusedcg_cpld_device::device_fusedcg_cpld_part1 ( type(c_ptr), value  a1_d,
type(c_ptr), value  a2_d,
type(c_ptr), value  a3_d,
type(c_ptr), value  b1_d,
type(c_ptr), value  b2_d,
type(c_ptr), value  b3_d,
type(c_ptr), value  tmp_d,
integer(c_int)  n 
)
private

Definition at line 148 of file fusedcg_cpld_device.F90.

Here is the caller graph for this function:

◆ device_fusedcg_cpld_part2()

real(kind=rp) function fusedcg_cpld_device::device_fusedcg_cpld_part2 ( type(c_ptr), value  a1_d,
type(c_ptr), value  a2_d,
type(c_ptr), value  a3_d,
type(c_ptr), value  b_d,
type(c_ptr), value  c1_d,
type(c_ptr), value  c2_d,
type(c_ptr), value  c3_d,
type(c_ptr), value  alpha_d,
real(c_rp)  alpha,
integer  p_cur,
integer  n 
)
private

Definition at line 189 of file fusedcg_cpld_device.F90.

Here is the caller graph for this function:

◆ device_fusedcg_cpld_update_p()

subroutine fusedcg_cpld_device::device_fusedcg_cpld_update_p ( type(c_ptr), value  p1_d,
type(c_ptr), value  p2_d,
type(c_ptr), value  p3_d,
type(c_ptr), value  z1_d,
type(c_ptr), value  z2_d,
type(c_ptr), value  z3_d,
type(c_ptr), value  po1_d,
type(c_ptr), value  po2_d,
type(c_ptr), value  po3_d,
real(c_rp)  beta,
integer(c_int)  n 
)
private

Definition at line 161 of file fusedcg_cpld_device.F90.

Here is the caller graph for this function:

◆ device_fusedcg_cpld_update_x()

subroutine fusedcg_cpld_device::device_fusedcg_cpld_update_x ( type(c_ptr), value  x1_d,
type(c_ptr), value  x2_d,
type(c_ptr), value  x3_d,
type(c_ptr), value  p1_d,
type(c_ptr), value  p2_d,
type(c_ptr), value  p3_d,
type(c_ptr), value  alpha,
integer(c_int)  p_cur,
integer(c_int)  n 
)
private

Definition at line 176 of file fusedcg_cpld_device.F90.

Here is the caller graph for this function:

◆ fusedcg_cpld_device_free()

subroutine fusedcg_cpld_device::fusedcg_cpld_device_free ( class(fusedcg_cpld_device_t), intent(inout)  this)
private

Definition at line 312 of file fusedcg_cpld_device.F90.

Here is the call graph for this function:

◆ fusedcg_cpld_device_init()

subroutine fusedcg_cpld_device::fusedcg_cpld_device_init ( class(fusedcg_cpld_device_t), intent(inout), target  this,
integer, intent(in)  n,
integer, intent(in)  max_iter,
class(pc_t), intent(inout), optional, target  M,
real(kind=rp), intent(inout), optional  rel_tol,
real(kind=rp), intent(inout), optional  abs_tol,
logical, intent(in), optional  monitor 
)
private

Definition at line 215 of file fusedcg_cpld_device.F90.

Here is the call graph for this function:

◆ fusedcg_cpld_device_solve()

type(ksp_monitor_t) function fusedcg_cpld_device::fusedcg_cpld_device_solve ( class(fusedcg_cpld_device_t), intent(inout)  this,
class(ax_t), intent(inout)  Ax,
type(field_t), intent(inout)  x,
real(kind=rp), dimension(n), intent(inout)  f,
integer, intent(in)  n,
type(coef_t), intent(inout)  coef,
type(bc_list_t), intent(inout)  blst,
type(gs_t), intent(inout)  gs_h,
integer, intent(in), optional  niter 
)
private

Definition at line 591 of file fusedcg_cpld_device.F90.

◆ fusedcg_cpld_device_solve_coupled()

type(ksp_monitor_t) function, dimension(3) fusedcg_cpld_device::fusedcg_cpld_device_solve_coupled ( class(fusedcg_cpld_device_t), intent(inout)  this,
class(ax_t), intent(inout)  Ax,
type(field_t), intent(inout)  x,
type(field_t), intent(inout)  y,
type(field_t), intent(inout)  z,
real(kind=rp), dimension(n), intent(inout)  fx,
real(kind=rp), dimension(n), intent(inout)  fy,
real(kind=rp), dimension(n), intent(inout)  fz,
integer, intent(in)  n,
type(coef_t), intent(inout)  coef,
type(bc_list_t), intent(inout)  blstx,
type(bc_list_t), intent(inout)  blsty,
type(bc_list_t), intent(inout)  blstz,
type(gs_t), intent(inout)  gs_h,
integer, intent(in), optional  niter 
)
private

Definition at line 459 of file fusedcg_cpld_device.F90.

Here is the call graph for this function:

Variable Documentation

◆ device_fusedcg_cpld_p_space

integer, parameter fusedcg_cpld_device::device_fusedcg_cpld_p_space = 10
private

Definition at line 50 of file fusedcg_cpld_device.F90.