libxsmm_xgemm_batch_task Interface

interface
public pure subroutine libxsmm_xgemm_batch_task(iprec, oprec, transa, transb, m, n, k, alpha, a, lda, stride_a, b, ldb, stride_b, beta, c, ldc, stride_c, index_stride, index_base, batchsize, batchcheck, tid, ntasks) bind(C, NAME="0")

Arguments

Type IntentOptional Attributes Name
integer(kind=C_INT), intent(in) :: iprec
integer(kind=C_INT), intent(in) :: oprec
character, intent(in) :: transa
character, intent(in) :: transb
integer(kind=LIBXSMM_BLASINT_KIND), intent(in) :: m
integer(kind=LIBXSMM_BLASINT_KIND), intent(in) :: n
integer(kind=LIBXSMM_BLASINT_KIND), intent(in) :: k
type(C_PTR), intent(in), VALUE :: alpha
type(C_PTR), intent(in), VALUE :: a
integer(kind=LIBXSMM_BLASINT_KIND), intent(in) :: lda
type(C_PTR), intent(in), VALUE :: stride_a

Arrays of indexes determining the position of a, b, and c operands.

type(C_PTR), intent(in), VALUE :: b
integer(kind=LIBXSMM_BLASINT_KIND), intent(in) :: ldb
type(C_PTR), intent(in), VALUE :: stride_b
type(C_PTR), intent(in), VALUE :: beta
type(C_PTR), intent(in), VALUE :: c
integer(kind=LIBXSMM_BLASINT_KIND), intent(in) :: ldc
type(C_PTR), intent(in), VALUE :: stride_c
integer(kind=LIBXSMM_BLASINT_KIND), intent(in) :: index_stride

Stride (measured in Bytes) used to walk stride_*. In Fortran (usually): index_stride!=0.

integer(kind=LIBXSMM_BLASINT_KIND), intent(in) :: index_base

Determines index-base (1 for one-based indexes).

integer(kind=LIBXSMM_BLASINT_KIND), intent(in) :: batchsize

Number of SMMs. If the size is given as a neg. value, then internal synchronization is omitted.

integer(kind=C_INT), intent(in) :: batchcheck
integer(kind=C_INT), intent(in) :: tid

Task-ID (TID), and number of tasks.

integer(kind=C_INT), intent(in) :: ntasks

Task-ID (TID), and number of tasks.

Description

Process a series of SMMs (batch). See also libxsmm_gemm_batch/omp. The kind of matrices (a, b, c) depend on index_stride: index_stride==0: stride_ are each scalar strides used to walk the corresponding a, b, or c with each being an array of pointers to the respective matrices. index_stride!=0: stride_ are each scalar strides used to walk the corresponding a, b, or c with each being a pointer to the respective matrix-data. The index_stride is not used otherwise. index_stride is non-zero (smaller than libxsmm_blasint): stride_ indexes determining the start of the corresponding a, b, or c with each being a pointer to the respective matrix-data. The index_stride to walk stride_. Implicit FORTRAN 77 interface: INTEGER(4) :: iprec, oprec CHAR :: transa, transb INTEGER(4|8) :: m, n, k, lda, ldb, ldc REAL(4|8) :: alpha, beta ARRAY :: a, b, c ARRAY/VALUE :: stride_a, stride_b, stride_c INTEGER(4|8) :: index_stride, index_base, batchsize INTEGER(4) :: batchcheck, tid, ntasks