|
FE-Project
|
module FElib / Element / Driver for operation with 3D tensor product elements using GPU More...
Data Types | |
| type | elementoperationgpudriver |
| Driver for element operation with 3D tensor product elements using GPU. More... | |
Functions/Subroutines | |
| subroutine | elementoperationgpu_init (this, elem_optr_base3d) |
| Initialize an object of ElementOperationGPUDriver. | |
| subroutine, public | elementoperationgpu_vfilterpm1 (this, vec_in, ne_in, ne_out, vec_out) |
| subroutine, public | elementoperationgpu_div_kplane (this, flux2d_kplane, e11, e22, k, div_xy) |
| subroutine, public | elementoperationgpu_divvar5_kplane (this, flux2d_kplane, e11, e22, k, div_xy) |
| subroutine, public | elementoperationgpu_divvar5_kplane2 (this, flux2d_kplane_x, flux2d_kplane_y, e11, e22, k, div_xy) |
| subroutine, public | elementoperationgpu_divvar5_z_lift (this, fluxz, ebnd_flux, e33, gsqrt, div3d) |
| subroutine, public | elementoperationgpu_divvar5 (this, flux_x, flux_y, flux_z, ebnd_flux, e11, e22, e33, gsqrt, ne, div3d) |
| subroutine, public | elementoperationgpu_modalfilter_var5 (this, vec_in, vec_work, ne, vec_out) |
| Apply a modal filter for five variables. | |
module FElib / Element / Driver for operation with 3D tensor product elements using GPU
| subroutine scale_element_operation_gpu_driver::elementoperationgpu_init | ( | class(elementoperationgpudriver), intent(inout) | this, |
| class(elementoperationbase3d), intent(in), target | elem_optr_base3d ) |
Initialize an object of ElementOperationGPUDriver.
The pointer to the given ElementOperationBase3D object are attached and necessary data is transferred to GPU.
| [in,out] | this | An object of ElementOperationGPUDriver to be initialized |
| [in] | elem_optr_base3d | An obect of 3D element operation base tyoe |
Definition at line 75 of file scale_element_operation_gpu_driver.F90.
| subroutine, public scale_element_operation_gpu_driver::elementoperationgpu_vfilterpm1 | ( | type(elementoperationgpudriver), intent(in) | this, |
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v,ne_in), intent(in) | vec_in, | ||
| integer, intent(in) | ne_in, | ||
| integer, intent(in) | ne_out, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v,ne_out), intent(out) | vec_out ) |
Definition at line 257 of file scale_element_operation_gpu_driver.F90.
References scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p1(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p10(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p11(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p12(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p13(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p14(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p15(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p3(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p4(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p5(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p6(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p7(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p8(), and scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_dirz_p9().
Referenced by scale_atm_dyn_dgm_globalnonhydro3d_rhot_heve_gpu::atm_dyn_dgm_globalnonhydro3d_rhot_heve_gpu_cal_tend_shallow_atm(), scale_atm_dyn_dgm_nonhydro3d_rhot_heve_gpu::atm_dyn_dgm_nonhydro3d_rhot_heve_cal_tend_gpu(), scale_atm_dyn_dgm_nonhydro3d_rhot_heve_gpu::atm_dyn_dgm_nonhydro3d_rhot_heve_cal_tend_gpu2(), and scale_element_operation_gpu_driver::elementoperationgpudriver::final().
| subroutine, public scale_element_operation_gpu_driver::elementoperationgpu_div_kplane | ( | type(elementoperationgpudriver), intent(in) | this, |
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,2), intent(in) | flux2d_kplane, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v), intent(in) | e11, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v), intent(in) | e22, | ||
| integer, intent(in) | k, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d), intent(out) | div_xy ) |
Definition at line 302 of file scale_element_operation_gpu_driver.F90.
References scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p1(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p10(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p11(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p12(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p13(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p14(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p15(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p3(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p4(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p5(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p6(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p7(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p8(), and scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_p9().
Referenced by scale_atm_dyn_dgm_globalnonhydro3d_rhot_heve_gpu::atm_dyn_dgm_globalnonhydro3d_rhot_heve_gpu_cal_tend_shallow_atm(), scale_atm_dyn_dgm_nonhydro3d_rhot_heve_gpu::atm_dyn_dgm_nonhydro3d_rhot_heve_cal_tend_gpu(), scale_atm_dyn_dgm_nonhydro3d_rhot_heve_gpu::atm_dyn_dgm_nonhydro3d_rhot_heve_cal_tend_gpu2(), and scale_element_operation_gpu_driver::elementoperationgpudriver::final().
| subroutine, public scale_element_operation_gpu_driver::elementoperationgpu_divvar5_kplane | ( | type(elementoperationgpudriver), intent(in) | this, |
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,5,2), intent(in) | flux2d_kplane, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v), intent(in) | e11, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v), intent(in) | e22, | ||
| integer, intent(in) | k, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,5), intent(out) | div_xy ) |
Definition at line 379 of file scale_element_operation_gpu_driver.F90.
References scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p1(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p10(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p11(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p12(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p13(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p14(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p15(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p3(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p4(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p5(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p6(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p7(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p8(), and scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p9().
Referenced by scale_atm_dyn_dgm_nonhydro3d_rhot_heve_gpu::atm_dyn_dgm_nonhydro3d_rhot_heve_cal_tend_gpu(), and scale_element_operation_gpu_driver::elementoperationgpudriver::final().
| subroutine, public scale_element_operation_gpu_driver::elementoperationgpu_divvar5_kplane2 | ( | type(elementoperationgpudriver), intent(in) | this, |
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,5), intent(in) | flux2d_kplane_x, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,5), intent(in) | flux2d_kplane_y, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d), intent(in) | e11, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d), intent(in) | e22, | ||
| integer, intent(in) | k, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,5), intent(out) | div_xy ) |
Definition at line 456 of file scale_element_operation_gpu_driver.F90.
References scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p1(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p10(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p11(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p12(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p13(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p14(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p15(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p3(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p4(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p5(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p6(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p7(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p8(), and scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirxy_var5_p9().
Referenced by scale_atm_dyn_dgm_globalnonhydro3d_rhot_heve_gpu::atm_dyn_dgm_globalnonhydro3d_rhot_heve_gpu_cal_tend_shallow_atm(), scale_atm_dyn_dgm_nonhydro3d_rhot_heve_gpu::atm_dyn_dgm_nonhydro3d_rhot_heve_cal_tend_gpu2(), and scale_element_operation_gpu_driver::elementoperationgpudriver::final().
| subroutine, public scale_element_operation_gpu_driver::elementoperationgpu_divvar5_z_lift | ( | type(elementoperationgpudriver), intent(in) | this, |
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,5,this%nnode_v), intent(in) | fluxz, | ||
| real(rp), dimension(this%nfptot,5), intent(in) | ebnd_flux, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v), intent(in) | e33, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v), intent(in) | gsqrt, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,5,this%nnode_v), intent(inout) | div3d ) |
Definition at line 534 of file scale_element_operation_gpu_driver.F90.
References scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p1(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p10(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p11(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p12(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p13(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p14(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p15(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p3(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p4(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p5(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p6(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p7(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p8(), and scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_dirz_lift_var5_p9().
Referenced by scale_atm_dyn_dgm_globalnonhydro3d_rhot_heve_gpu::atm_dyn_dgm_globalnonhydro3d_rhot_heve_gpu_cal_tend_shallow_atm(), scale_atm_dyn_dgm_nonhydro3d_rhot_heve_gpu::atm_dyn_dgm_nonhydro3d_rhot_heve_cal_tend_gpu(), scale_atm_dyn_dgm_nonhydro3d_rhot_heve_gpu::atm_dyn_dgm_nonhydro3d_rhot_heve_cal_tend_gpu2(), and scale_element_operation_gpu_driver::elementoperationgpudriver::final().
| subroutine, public scale_element_operation_gpu_driver::elementoperationgpu_divvar5 | ( | type(elementoperationgpudriver), intent(in) | this, |
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,5,this%nnode_v,ne), intent(in) | flux_x, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,5,this%nnode_v,ne), intent(in) | flux_y, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,5,this%nnode_v,ne), intent(in) | flux_z, | ||
| real(rp), dimension(this%nfptot,5,ne), intent(in) | ebnd_flux, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v,ne), intent(in) | e11, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v,ne), intent(in) | e22, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v,ne), intent(in) | e33, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,this%nnode_v,ne), intent(in) | gsqrt, | ||
| integer, intent(in) | ne, | ||
| real(rp), dimension(this%nnode_h1d,this%nnode_h1d,5,this%nnode_v,ne), intent(out) | div3d ) |
Definition at line 611 of file scale_element_operation_gpu_driver.F90.
References scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p10_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p11_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p12_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p13_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p14_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p15_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p1_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p2_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p3_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p4_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p5_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p6_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p7_v2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p8_v2(), and scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_divlike_var5_p9_v2().
Referenced by scale_atm_dyn_dgm_globalnonhydro3d_rhot_heve_gpu::atm_dyn_dgm_globalnonhydro3d_rhot_heve_gpu_cal_tend_shallow_atm(), scale_atm_dyn_dgm_nonhydro3d_rhot_heve_gpu::atm_dyn_dgm_nonhydro3d_rhot_heve_cal_tend_gpu2(), and scale_element_operation_gpu_driver::elementoperationgpudriver::final().
| subroutine, public scale_element_operation_gpu_driver::elementoperationgpu_modalfilter_var5 | ( | type(elementoperationgpudriver), intent(in) | this, |
| real(rp), dimension(this%nnode_h1d**2*this%nnode_v,ne,5), intent(in) | vec_in, | ||
| real(rp), dimension(this%nnode_h1d**2*this%nnode_v,ne), intent(out) | vec_work, | ||
| integer, intent(in) | ne, | ||
| real(rp), dimension(this%nnode_h1d**2*this%nnode_v,ne,5), intent(out) | vec_out ) |
Apply a modal filter for five variables.
Definition at line 724 of file scale_element_operation_gpu_driver.F90.
References scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p1(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p10(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p11(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p12(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p13(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p14(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p15(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p2(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p3(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p4(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p5(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p6(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p7(), scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p8(), and scale_element_operation_tensorprod3d_kernel_gpu::element_operation_kernel_matvec_modalfilter_p9().
Referenced by scale_atm_dyn_dgm_modalfilter::atm_dyn_dgm_modalfilter_apply(), and scale_element_operation_gpu_driver::elementoperationgpudriver::final().