self_blas_matrixop_dim1_2d Subroutine

public subroutine self_blas_matrixop_dim1_2d(A, f, Af, controldegree, targetdegree, nvars, nelems, handle)

Arguments

TypeIntentOptionalAttributesName
type(c_ptr), intent(in) :: A
real(kind=prec), intent(in), pointer:: f(:,:,:,:)
real(kind=prec), intent(inout), pointer:: Af(:,:,:,:)
integer, intent(in) :: controldegree
integer, intent(in) :: targetdegree
integer, intent(in) :: nvars
integer, intent(in) :: nelems
type(c_ptr), intent(inout) :: handle

Calls

proc~~self_blas_matrixop_dim1_2d~~CallsGraph proc~self_blas_matrixop_dim1_2d self_blas_matrixop_dim1_2d hipblasgemm hipblasgemm proc~self_blas_matrixop_dim1_2d->hipblasgemm proc~hipblascheck hipblasCheck proc~self_blas_matrixop_dim1_2d->proc~hipblascheck

Called by

proc~~self_blas_matrixop_dim1_2d~~CalledByGraph proc~self_blas_matrixop_dim1_2d self_blas_matrixop_dim1_2d proc~gradient_vector2d Gradient_Vector2D proc~gradient_vector2d->proc~self_blas_matrixop_dim1_2d proc~gridinterp_scalar2d GridInterp_Scalar2D proc~gridinterp_scalar2d->proc~self_blas_matrixop_dim1_2d proc~gridinterp_vector2d GridInterp_Vector2D proc~gridinterp_vector2d->proc~self_blas_matrixop_dim1_2d proc~gradient_scalar2d Gradient_Scalar2D proc~gradient_scalar2d->proc~self_blas_matrixop_dim1_2d

Contents


Source Code

                          subroutine self_blas_matrixop_dim1_2d(A,f,Af,controldegree,targetdegree,nvars,nelems,handle)
                            type(c_ptr),intent(in) :: A
                            real(prec),pointer,intent(in) :: f(:,:,:,:)
                            real(prec),pointer,intent(inout) :: Af(:,:,:,:)
                            integer,intent(in) :: controldegree,targetdegree,nvars,nelems
                            type(c_ptr),intent(inout) :: handle
                            ! Local
                            integer(c_int) :: m
                            integer(c_int) :: n
                            integer(c_int) :: k
                            real(c_prec) :: alpha
                            integer(c_int) :: lda
                            integer(c_int) :: ldb
                            integer(c_int) :: ldc
                            real(c_prec) :: beta

                            m = targetdegree+1 ! number of rows of A^T
                            n = nvars*nelems*(controldegree+1) ! number of columns of B
                            k = controldegree+1 ! number of columns of A^T
                            alpha = 1.0_c_prec
                            lda = k ! leading dimension of A (interpolation/derivative matrix)
                            ldb = k ! leading dimension of B (f)
                            ldc = m ! leading dimension of C (fTarget)
                            beta = 0.0_c_prec

                            ! First pass interpolates in the first quadrature dimension
                            call hipblasCheck(hipblasgemm(handle, &
                                                          HIPBLAS_OP_T,HIPBLAS_OP_N, &
                                                          m,n,k,alpha, &
                                                          A,lda, &
                                                          c_loc(f),ldb,beta, &
                                                          c_loc(Af),ldc))

                          endsubroutine self_blas_matrixop_dim1_2d