internal_process_mm_stack_d Subroutine

private subroutine internal_process_mm_stack_d(params, stack_size, a_data, b_data, c_data)

Processes MM stack and issues internal MM calls.

Arguments

Type IntentOptional Attributes Name
integer, intent(in), DIMENSION(dbcsr_ps_width, 1:stack_size) :: params

Stack of MM parameters

integer, intent(in) :: stack_size

Number of parameters

real(kind=real_8), intent(in), DIMENSION(*) :: a_data

Left-matrix data Right-matrix data

real(kind=real_8), intent(in), DIMENSION(*) :: b_data

Left-matrix data Right-matrix data

real(kind=real_8), intent(inout), DIMENSION(*) :: c_data

Product data


Source Code

      SUBROUTINE internal_process_mm_stack_d (params, stack_size, &
                                                          a_data, b_data, c_data)
     !! Processes MM stack and issues internal MM calls.

         INTEGER, INTENT(IN)                       :: stack_size
        !! Number of parameters
         INTEGER, DIMENSION(dbcsr_ps_width, 1:stack_size), &
            INTENT(IN)                              :: params
        !! Stack of MM parameters
         REAL(kind=real_8), DIMENSION(*), INTENT(IN)         :: a_data, &
            b_data
        !! Left-matrix data
        !! Right-matrix data
         REAL(kind=real_8), DIMENSION(*), INTENT(INOUT)      :: c_data
        !! Product data

         INTEGER                                   :: sp

!   ---------------------------------------------------------------------------

         DO sp = 1, stack_size
            CALL internal_mm_d_nn( &
               params(p_m, sp), &
               params(p_n, sp), &
               params(p_k, sp), &
               a_data(params(p_a_first, sp)), &
               b_data(params(p_b_first, sp)), &
               c_data(params(p_c_first, sp)))
         END DO
      END SUBROUTINE internal_process_mm_stack_d