Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=*), | public, | parameter | :: | LIBXSMM_VERSION | = | "$VERSION" |
Name of the version (stringized set of version numbers). |
character(len=*), | public, | parameter | :: | LIBXSMM_BRANCH | = | "$BRANCH" |
Name of the branch of which the version is derived from. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_VERSION_MAJOR | = | $MAJOR |
Major version based on the last reachable tag under RCS. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_VERSION_MINOR | = | $MINOR |
Minor version based on the last reachable tag of the RCS. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_VERSION_UPDATE | = | $UPDATE |
Update number based on the last reachable tag under RCS. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_VERSION_PATCH | = | $PATCH |
Patch number counting commits since the last version stamp. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_CACHELINE | = | $CACHELINE |
Parameters the library and static kernels were built for. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_ALIGNMENT | = | $CACHELINE | |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_PREFETCH | = | $PREFETCH | |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_MAX_MNK | = | $MAX_MNK | |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_MAX_DIM | = | $MAX_DIM | |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_FLAGS | = | $FLAGS | |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_ILP64 | = | $ILP64 | |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_COL_MAJOR | = | 1 |
Parameters supplied for backward compatibility (deprecated). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_ROW_MAJOR | = | 0 | |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_BLASINT_KIND | = | $BLASINT_KIN |
LIBXSMM_BLASINT_KIND (LP64: 32-bit, ILP64: 64-bit). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_TICKINT_KIND | = | C_LONG_LONG |
Integer kind used by timer interface. |
real(kind=C_DOUBLE), | public, | parameter | :: | LIBXSMM_ALPHA | = | REAL($ALPHA, C_DOUB |
Parameters for simplified GEMM interface. |
real(kind=C_DOUBLE), | public, | parameter | :: | LIBXSMM_BETA | = | REAL($BETA, C_DOUBLE | |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_GEMM_FLAG_NONE | = | 0 |
Flag enumeration which can be IORed. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_GEMM_FLAG_TRANS_A | = | 1 |
Flag enumeration which can be IORed. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_GEMM_FLAG_TRANS_B | = | 2 |
Flag enumeration which can be IORed. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_GEMM_FLAG_TRANS_AB | = | IOR(LIBXSMM_GEMM_FLAG_TRANS_A, LIBXSMM_GEMM_FLAG_TRANS_B) |
Flag enumeration which can be IORed. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_GEMM_FLAG_BETA_0 | = | 4 |
Flag enumeration which can be IORed. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_GEMM_FLAG_ALIGN_A | = | 8 |
Flag enumeration which can be IORed. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_GEMM_FLAG_ALIGN_C | = | 16 |
Flag enumeration which can be IORed. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_GEMM_FLAG_ALIGN_C_NTS_HINT | = | IOR(1024, LIBXSMM_GEMM_FLAG_ALIGN_C) |
Flag enumeration which can be IORed. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_GEMM_FLAG_ALIGN_C_NTS_HINT_BETA_0 | = | IOR(LIBXSMM_GEMM_FLAG_ALIGN_C_NTS_HINT, LIBXSMM_GEMM_FLAG_BETA_0) |
Flag enumeration which can be IORed. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_GEMM_FLAG_INVALID | = | 131072 |
Flag enumeration which can be IORed. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_F64 | = | 0 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_F32 | = | 1 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_BF16 | = | 2 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_F16 | = | 3 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_BF8 | = | 4 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_HF8 | = | 5 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_I64 | = | 6 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_I32 | = | 7 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_I16 | = | 8 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_I8 | = | 9 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_UNSIGNED | = | 10 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_DATATYPE_UNSUPPORTED | = | 11 |
Enumerates element/data types. |
integer(kind=C_INT), | public, | parameter | :: |
Enumeration of prefetch strategies which can be IORed. |
|||
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_TARGET_ARCH_UNKNOWN | = | 0 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_TARGET_ARCH_GENERIC | = | 1 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_GENERIC | = | 1002 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_SSE3 | = | 1003 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_SSE4 | = | 1004 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX | = | 1005 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX2 | = | 1006 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX2_ADL | = | 1007 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX2_SRF | = | 1008 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX512_VL128_SKX | = | 1041 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX512_VL256_SKX | = | 1051 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX512_VL256_CLX | = | 1052 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX512_VL256_CPX | = | 1053 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX512_SKX | = | 1101 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX512_CLX | = | 1102 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX512_CPX | = | 1103 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX512_SPR | = | 1104 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX512_GNR | = | 1105 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_AVX512_DMR | = | 1106 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_X86_ALLFEAT | = | 1999 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_AARCH64_V81 | = | 2001 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_AARCH64_V82 | = | 2002 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_AARCH64_APPL_M1 | = | 2101 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_AARCH64_SVE128 | = | 2201 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_AARCH64_SVE256 | = | 2301 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_AARCH64_NEOV1 | = | 2302 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_AARCH64_SVX512 | = | 2401 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_AARCH64_A64FX | = | 2402 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_AARCH64_ALLFEAT | = | 2999 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_RV64 | = | 3000 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
integer(kind=C_INT), | public, | parameter | :: | LIBXSMM_RV64_ALLFEAT | = | 3999 |
Enumerates the available target architectures and instruction set extensions as returned by libxsmm_get_target_archid(). |
Returns the architecture and instruction set extension as determined by the CPUID flags, as set by the libxsmm_get_target_arch* functions, or as set by the LIBXSMM_TARGET environment variable.
Get the level of verbosity.
Impure function which returns the current clock tick of a monotonic timer source; uses a platform-specific resolution. Implicit FORTRAN 77 interface: not available.
Impure function (timer freq. may vary) which returns the duration (in seconds) between two values received by libxsmm_timer_tick. Implicit FORTRAN 77 interface: not available.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=LIBXSMM_TICKINT_KIND), | intent(in), | VALUE | :: | tick0 | ||
integer(kind=LIBXSMM_TICKINT_KIND), | intent(in), | VALUE | :: | tick1 |
Initialize the library.
De-initialize the library.
Set target architecture (archid: see PARAMETER enumeration) for subsequent code generation (JIT).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in), | VALUE | :: | archid |
Set target architecture for subsequent code generation (JIT); arch argument can be "sse", "snb", "hsw", "skx", "clx", "cpx", "spr", or "0" to rely on the CPUID (default). There are some alternative target names as well: "sse", "avx", "avx2", "avx3" (incomplete list).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | intent(in) | :: | arch(*) |
Set the level of verbosity (0: off, positive value: verbosity level, negative value: maximum verbosity, which also dumps JIT-code).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in), | VALUE | :: | level |
Deallocates the JIT'ted code, or unregisters and releases code from the registry. Implicit FORTRAN 77 interface: INTEGER(8) :: kernel
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_FUNPTR), | intent(in) | :: | kernel |
Type-generic (unsafe) code dispatch. Implicit FORTRAN 77 interface: INTEGER(4) :: gemm_precision, flags, prefetch INTEGER(4|8) :: m, n, k, lda, ldb, ldc REAL(4|8) :: alpha, beta INTEGER(8) :: kernel
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_FUNPTR), | intent(out) | :: | kernel | |||
integer(kind=C_INT), | intent(in) | :: | gemm_precision | |||
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 | :: | lda | ||
type(C_PTR), | intent(in), | VALUE | :: | ldb | ||
type(C_PTR), | intent(in), | VALUE | :: | ldc | ||
type(C_PTR), | intent(in), | VALUE | :: | alpha | ||
type(C_PTR), | intent(in), | VALUE | :: | beta | ||
type(C_PTR), | intent(in), | VALUE | :: | flags | ||
type(C_PTR), | intent(in), | VALUE | :: | prefetch |
Type-generic (unsafe) code dispatch. Implicit FORTRAN 77 interface: INTEGER(4) :: iprec, oprec, flags, prefetch INTEGER(4|8) :: m, n, k, lda, ldb, ldc REAL(4|8) :: alpha, beta INTEGER(8) :: kernel
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_FUNPTR), | intent(out) | :: | kernel | |||
integer(kind=C_INT), | intent(in) | :: | iprec | |||
integer(kind=C_INT), | intent(in) | :: | oprec | |||
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 | :: | lda | ||
type(C_PTR), | intent(in), | VALUE | :: | ldb | ||
type(C_PTR), | intent(in), | VALUE | :: | ldc | ||
type(C_PTR), | intent(in), | VALUE | :: | alpha | ||
type(C_PTR), | intent(in), | VALUE | :: | beta | ||
type(C_PTR), | intent(in), | VALUE | :: | flags | ||
type(C_PTR), | intent(in), | VALUE | :: | prefetch |
Generic call routine (3-argument form). Implicit FORTRAN 77 interface: REAL(4|8) :: a, b, c INTEGER(8) :: kernel
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_FUNPTR), | intent(in) | :: | kernel | |||
type(C_PTR), | intent(in), | VALUE | :: | a | ||
type(C_PTR), | intent(in), | VALUE | :: | b | ||
type(C_PTR), | intent(in), | VALUE | :: | c |
Generic call routine (6-argument form). Implicit FORTRAN 77 interface: REAL(4|8) :: a, b, c, pa, pb, pc INTEGER(8) :: kernel
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_FUNPTR), | intent(in) | :: | kernel | |||
type(C_PTR), | intent(in), | VALUE | :: | a | ||
type(C_PTR), | intent(in), | VALUE | :: | b | ||
type(C_PTR), | intent(in), | VALUE | :: | c | ||
type(C_PTR), | intent(in), | VALUE | :: | pa | ||
type(C_PTR), | intent(in), | VALUE | :: | pb | ||
type(C_PTR), | intent(in), | VALUE | :: | pc |
Fill destination with zeros; dst is a raw/binary buffer.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | dst | ||
integer(kind=C_INT), | intent(in) | :: | nbytes |
Remove key-value from code registry and release memory.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | key | ||
integer(kind=C_INT), | intent(in) | :: | keysize |
Matrix-copy (2-dimensional copy) routine. Implicit FORTRAN 77 interface: ARRAY :: input, output INTEGER(4|8) :: m, n, ldi, ldo INTEGER(4) :: typesize
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | output | ||
type(C_PTR), | intent(in), | VALUE | :: | input | ||
integer(kind=C_INT), | intent(in) | :: | typesize | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Transpose a matrix (in-place form). Implicit FORTRAN 77 interface: ARRAY :: matrix INTEGER(4|8) :: m, n, ldi, ldo INTEGER(4) :: typesize
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | matrix | ||
integer(kind=C_INT), | intent(in) | :: | typesize | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Transpose a matrix (out-of-place form). Implicit FORTRAN 77 interface: ARRAY :: input, output INTEGER(4|8) :: m, n, ldi, ldo INTEGER(4) :: typesize
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | output | ||
type(C_PTR), | intent(in), | VALUE | :: | input | ||
integer(kind=C_INT), | intent(in) | :: | typesize | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Matrix copy; MT via libxsmmext (out-of-place form). Implicit FORTRAN 77 interface: ARRAY :: output, input INTEGER(4|8) :: m, n, ldi, ldo INTEGER(4) :: typesize
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | output | ||
type(C_PTR), | intent(in), | VALUE | :: | input | ||
integer(kind=C_INT), | intent(in) | :: | typesize | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Matrix transpose; MT via libxsmmext (out-of-place form). Implicit FORTRAN 77 interface: ARRAY :: output, input INTEGER(4|8) :: m, n, ldi, ldo INTEGER(4) :: typesize
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | output | ||
type(C_PTR), | intent(in), | VALUE | :: | input | ||
integer(kind=C_INT), | intent(in) | :: | typesize | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in) | :: | iprec | |||
integer(kind=C_INT), | intent(in) | :: | oprec | |||
character(len=C_CHAR), | intent(in) | :: | transa | |||
character(len=C_CHAR), | 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. |
Process a series of SMMs (batch). See also libxsmm_xgemm_batch_task. Implicit FORTRAN 77 interface: INTEGER(4) :: iprec, oprec, batchcheck 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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in) | :: | iprec | |||
integer(kind=C_INT), | intent(in) | :: | oprec | |||
character(len=C_CHAR), | intent(in) | :: | transa | |||
character(len=C_CHAR), | 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 | ||
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 | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | index_base | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | batchsize | |||
integer(kind=C_INT), | intent(in) | :: | batchcheck |
Process a series of SMMs (batch) with OpenMP (libxsmmext). Implicit FORTRAN 77 interface: INTEGER(4) :: iprec, oprec, batchcheck 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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in) | :: | iprec | |||
integer(kind=C_INT), | intent(in) | :: | oprec | |||
character(len=C_CHAR), | intent(in) | :: | transa | |||
character(len=C_CHAR), | 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 | ||
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 | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | index_base | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | batchsize | |||
integer(kind=C_INT), | intent(in) | :: | batchcheck |
Reduces input into output such that the difference is maintained or increased (max function). The very first (initial) output should be zeroed (libxsmm_matdiff_clear). Implicit FORTRAN 77 interface: available.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_MATDIFF_INFO), | intent(inout) | :: | output | |||
type(LIBXSMM_MATDIFF_INFO), | intent(in) | :: | input |
Clears the given info-structure, e.g., for the initial reduction-value (libxsmm_matdiff_reduce). Implicit FORTRAN 77 interface: available.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_MATDIFF_INFO), | intent(out) | :: | info |
Calculates a hash value for the given array and seed. Routine suitable for FORTRAN 77; keysize in Bytes.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(inout) | :: | hash_seed | |||
type(C_PTR), | intent(in), | VALUE | :: | key | ||
integer(kind=C_INT), | intent(in) | :: | keysize |
Calculates if there is a difference between two arrays. Routine suitable for FORTRAN 77; size in Bytes.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical(kind=C_BOOL), | intent(out) | :: | diff | |||
type(C_PTR), | intent(in), | VALUE | :: | a | ||
type(C_PTR), | intent(in), | VALUE | :: | b | ||
integer(kind=C_LONG_LONG), | intent(in) | :: | nbytes |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_DOUBLE_COMPLEX), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_FLOAT_COMPLEX), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_SHORT), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | intent(in), | TARGET | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_DOUBLE_COMPLEX), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_FLOAT_COMPLEX), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_SHORT), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(in), | TARGET | :: | a(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(in), | TARGET | :: | a(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_DOUBLE_COMPLEX), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_FLOAT_COMPLEX), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_SHORT), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | intent(in) | :: | a(:,:) |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_DOUBLE_COMPLEX), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_FLOAT_COMPLEX), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_SHORT), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | intent(in), | TARGET | :: | a |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | intent(in), | TARGET | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_DOUBLE_COMPLEX), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_FLOAT_COMPLEX), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_SHORT), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_DOUBLE_COMPLEX), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_FLOAT_COMPLEX), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_SHORT), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(in), | TARGET | :: | a(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(in), | TARGET | :: | a(:) |
Deallocates JIT'ted code, or unregisters and releases code from registry.
Deallocate JIT'ted code created by libxsmm_create routines. To unregister code generated with libxsmm_dispatch is unnecessary.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(in) | :: | kernel |
Deallocate JIT'ted code created by libxsmm_create routines. To unregister code generated with libxsmm_dispatch is unnecessary.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(in) | :: | kernel |
Construct JIT-code depending on given argument set.
Query or JIT-generate an SMM-kernel (double-precision).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(out) | :: | kernel | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | k | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | lda | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldb | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldc | |
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | alpha | |
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | beta | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | flags | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | prefetch |
Query or JIT-generate an SMM-kernel (single-precision).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(out) | :: | kernel | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | k | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | lda | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldb | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldc | |
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | alpha | |
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | beta | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | flags | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | prefetch |
Construct JIT-code depending on given argument set.
Query or JIT-generate an SMM-kernel (double-precision).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(out) | :: | kernel | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | k | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | lda | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldb | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldc | |
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | alpha | |
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | beta | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | flags | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | prefetch |
Query or JIT-generate an SMM-kernel (single-precision).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(out) | :: | kernel | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | k | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | lda | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldb | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldc | |
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | alpha | |
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | beta | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | flags | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | prefetch |
Check if a function is available (LIBXSMM_?MMFUNCTION).
Checks if the given kernel was generated. JIT code is guaranteed to be generated if JIT support was enabled at build-time of the library (default). This overload belongs to libxsmm_(mm)available.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(in) | :: | kernel |
Checks if the given kernel was generated. JIT code is guaranteed to be generated if JIT support was enabled at build-time of the library (default). This overload belongs to libxsmm_(mm)available.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(in) | :: | kernel |
Check if a function is available (LIBXSMM_?MMFUNCTION).
Checks if the given kernel was generated. JIT code is guaranteed to be generated if JIT support was enabled at build-time of the library (default). This overload belongs to libxsmm_(mm)available.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(in) | :: | kernel |
Checks if the given kernel was generated. JIT code is guaranteed to be generated if JIT support was enabled at build-time of the library (default). This overload belongs to libxsmm_(mm)available.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(in) | :: | kernel |
Overloaded GEMM routines (double-precision).
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in) | :: | a(m,*) | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(k,*) | |||
real(kind=C_DOUBLE), | intent(inout) | :: | c(m,*) | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta |
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(lda,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | lda | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(ldb,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldb | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(ldc,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldc |
Overloaded GEMM routines (single-precision).
Auto-dispatched general dense MM (single-precision). This overload belongs to libxsmm_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (single-precision). This overload belongs to libxsmm_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (single-precision). This overload belongs to libxsmm_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in) | :: | a(m,*) | |||
real(kind=C_FLOAT), | intent(in) | :: | b(k,*) | |||
real(kind=C_FLOAT), | intent(inout) | :: | c(m,*) | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta |
Overloaded GEMM routines.
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in) | :: | a(m,*) | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(k,*) | |||
real(kind=C_DOUBLE), | intent(inout) | :: | c(m,*) | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta |
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(lda,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | lda | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(ldb,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldb | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(ldc,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldc |
Auto-dispatched general dense MM (single-precision). This overload belongs to libxsmm_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (single-precision). This overload belongs to libxsmm_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (single-precision). This overload belongs to libxsmm_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in) | :: | a(m,*) | |||
real(kind=C_FLOAT), | intent(in) | :: | b(k,*) | |||
real(kind=C_FLOAT), | intent(inout) | :: | c(m,*) | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta |
Auto-dispatched general dense MM (single-precision). This overload belongs to libxsmm_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a(lda,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | lda | |||
real(kind=C_FLOAT), | intent(in) | :: | b(ldb,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldb | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c(ldc,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldc |
Overloaded BLAS GEMM routines (double-precision).
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in) | :: | a(m,*) | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(k,*) | |||
real(kind=C_DOUBLE), | intent(inout) | :: | c(m,*) | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(lda,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | lda | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(ldb,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldb | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(ldc,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldc |
Overloaded BLAS GEMM routines (single-precision).
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in) | :: | a(m,*) | |||
real(kind=C_FLOAT), | intent(in) | :: | b(k,*) | |||
real(kind=C_FLOAT), | intent(inout) | :: | c(m,*) | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a(lda,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | lda | |||
real(kind=C_FLOAT), | intent(in) | :: | b(ldb,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldb | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c(ldc,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldc |
Overloaded BLAS GEMM routines (single/double-precision).
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in) | :: | a(m,*) | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(k,*) | |||
real(kind=C_DOUBLE), | intent(inout) | :: | c(m,*) | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(lda,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | lda | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(ldb,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldb | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(ldc,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in) | :: | a(m,*) | |||
real(kind=C_FLOAT), | intent(in) | :: | b(k,*) | |||
real(kind=C_FLOAT), | intent(inout) | :: | c(m,*) | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a(lda,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | lda | |||
real(kind=C_FLOAT), | intent(in) | :: | b(ldb,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldb | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c(ldc,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldc |
Overloaded MATCOPY routines (2d-copy).
Matrix-copy (2-dimensional copy) routine. If the input (optional) is not present, the routine is used to zero-fill the out-matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in) | :: | output | |||
type(C_PTR), | intent(in), | optional | :: | input | ||
integer(kind=C_INT), | intent(in) | :: | typesize | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Matrix-copy (2-dimensional copy) routine (DP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(out), | TARGET | :: | output(*) | ||
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | input(*) | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Matrix-copy (2-dimensional copy) routine (DP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(out), | TARGET | :: | output(ldo,*) | ||
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | input(ldi,*) | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Matrix-copy (2-dimensional copy) routine (SP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(out), | TARGET | :: | output(*) | ||
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | input(*) | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Matrix-copy (2-dimensional copy) routine (SP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(out), | TARGET | :: | output(ldo,*) | ||
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | input(ldi,*) | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Overloaded TRANSPOSE routines (in-place form).
Transpose a matrix (in-place form).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in) | :: | matrix | |||
integer(kind=C_INT), | intent(in) | :: | typesize | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (in-place form, DP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(inout), | TARGET | :: | matrix(*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (in-place form, DP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(inout), | TARGET | :: | matrix(ld,*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ld |
Transpose a matrix (in-place form, SP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(inout), | TARGET | :: | matrix(*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (in-place form, SP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(inout), | TARGET | :: | matrix(ld,*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ld |
Overloaded TRANSPOSE routines (out-of-place form).
Transpose a matrix (out-of-place form).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in) | :: | output | |||
type(C_PTR), | intent(in) | :: | input | |||
integer(kind=C_INT), | intent(in) | :: | typesize | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (out-of-place form, DP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(out), | TARGET | :: | output(*) | ||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | input(*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (out-of-place form, DP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(out), | TARGET | :: | output(ldo,*) | ||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | input(ldi,*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Transpose a matrix (out-of-place form, SP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(out), | TARGET | :: | output(*) | ||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | input(*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (out-of-place form, SP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(out), | TARGET | :: | output(ldo,*) | ||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | input(ldi,*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Calculate a hash value for a given key value (binary blob). Conceptually pure, but C_LOC may be (incorrectly) impure.
Calculates a hash value for the given array and seed. FORTRAN 77: see libxsmm_xhash
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | INTENT(IN)$CONTIGUOUS | :: | key(:) | |||
integer(kind=C_INT), | intent(in) | :: | seed |
Calculates a hash value for the given array and seed. FORTRAN 77: see libxsmm_xhash
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | INTENT(IN)$CONTIGUOUS | :: | key(:) | |||
integer(kind=C_INT), | intent(in) | :: | seed |
Calculates a hash value for the given array and seed. FORTRAN 77: see libxsmm_xhash
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | INTENT(IN)$CONTIGUOUS | :: | key(:) | |||
integer(kind=C_INT), | intent(in) | :: | seed |
Calculates a hash value for the given array and seed. FORTRAN 77: see libxsmm_xhash
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | INTENT(IN)$CONTIGUOUS | :: | key(:) | |||
integer(kind=C_INT), | intent(in) | :: | seed |
Calculate whether there is a difference between two series of items. Conceptually pure, but C_LOC may be (incorrectly) impure.
Calculates if there is a difference between two arrays. FORTRAN 77: see libxsmm_xdiff
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | INTENT(IN)$CONTIGUOUS | :: | a(:) | |||
character(len=C_CHAR), | INTENT(IN)$CONTIGUOUS | :: | b(:) |
Calculates if there is a difference between two arrays. FORTRAN 77: see libxsmm_xdiff
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | INTENT(IN)$CONTIGUOUS | :: | a(:) | |||
integer(kind=C_INT8_T), | INTENT(IN)$CONTIGUOUS | :: | b(:) |
Calculates if there is a difference between two arrays. FORTRAN 77: see libxsmm_xdiff
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | INTENT(IN)$CONTIGUOUS | :: | a(:) | |||
integer(kind=C_INT), | INTENT(IN)$CONTIGUOUS | :: | b(:) |
Calculates if there is a difference between two arrays. FORTRAN 77: see libxsmm_xdiff
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | INTENT(IN)$CONTIGUOUS | :: | a(:) | |||
integer(kind=C_LONG_LONG), | INTENT(IN)$CONTIGUOUS | :: | b(:) |
Generic function types with certain arity.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | a | ||
type(C_PTR), | intent(in), | VALUE | :: | b | ||
type(C_PTR), | intent(in), | VALUE | :: | c |
Generic function types with certain arity.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | a | ||
type(C_PTR), | intent(in), | VALUE | :: | b | ||
type(C_PTR), | intent(in), | VALUE | :: | c | ||
type(C_PTR), | intent(in), | VALUE | :: | pa | ||
type(C_PTR), | intent(in), | VALUE | :: | pb | ||
type(C_PTR), | intent(in), | VALUE | :: | pc |
Generic function type (double-precision).
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(C_FUNPTR), | public | :: | handle | = | C_NULL_FUNPTR |
Generic function type (single-precision).
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(C_FUNPTR), | public | :: | handle | = | C_NULL_FUNPTR |
Generic function type (low-precision)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(C_FUNPTR), | public | :: | handle | = | C_NULL_FUNPTR |
Structure of differences with matrix norms according to http://www.netlib.org/lapack/lug/node75.html).
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | public | :: | norm1_abs |
One-norm |
|||
real(kind=C_DOUBLE), | public | :: | norm1_rel |
One-norm |
|||
real(kind=C_DOUBLE), | public | :: | normi_abs |
Infinity-norm |
|||
real(kind=C_DOUBLE), | public | :: | normi_rel |
Infinity-norm |
|||
real(kind=C_DOUBLE), | public | :: | normf_rel |
Froebenius-norm |
|||
real(kind=C_DOUBLE), | public | :: | linf_abs |
Maximum difference, L2-norm (absolute and relative), and R-squared. |
|||
real(kind=C_DOUBLE), | public | :: | linf_rel |
Maximum difference, L2-norm (absolute and relative), and R-squared. |
|||
real(kind=C_DOUBLE), | public | :: | l2_abs |
Maximum difference, L2-norm (absolute and relative), and R-squared. |
|||
real(kind=C_DOUBLE), | public | :: | l2_rel |
Maximum difference, L2-norm (absolute and relative), and R-squared. |
|||
real(kind=C_DOUBLE), | public | :: | rsq |
Maximum difference, L2-norm (absolute and relative), and R-squared. |
|||
real(kind=C_DOUBLE), | public | :: | l1_ref |
Statistics (reference): sum/l1, minimum, maximum, arithmetic average, and variance. |
|||
real(kind=C_DOUBLE), | public | :: | min_ref |
Statistics (reference): sum/l1, minimum, maximum, arithmetic average, and variance. |
|||
real(kind=C_DOUBLE), | public | :: | max_ref |
Statistics (reference): sum/l1, minimum, maximum, arithmetic average, and variance. |
|||
real(kind=C_DOUBLE), | public | :: | avg_ref |
Statistics (reference): sum/l1, minimum, maximum, arithmetic average, and variance. |
|||
real(kind=C_DOUBLE), | public | :: | var_ref |
Statistics (reference): sum/l1, minimum, maximum, arithmetic average, and variance. |
|||
real(kind=C_DOUBLE), | public | :: | l1_tst |
Statistics (test): sum/l1, minimum, maximum, arithmetic average, and variance. |
|||
real(kind=C_DOUBLE), | public | :: | min_tst |
Statistics (test): sum/l1, minimum, maximum, arithmetic average, and variance. |
|||
real(kind=C_DOUBLE), | public | :: | max_tst |
Statistics (test): sum/l1, minimum, maximum, arithmetic average, and variance. |
|||
real(kind=C_DOUBLE), | public | :: | avg_tst |
Statistics (test): sum/l1, minimum, maximum, arithmetic average, and variance. |
|||
real(kind=C_DOUBLE), | public | :: | var_tst |
Statistics (test): sum/l1, minimum, maximum, arithmetic average, and variance. |
|||
real(kind=C_DOUBLE), | public | :: | v_ref |
Values(v_ref, v_tst) and location(m, n) of largest linf_abs. |
|||
real(kind=C_DOUBLE), | public | :: | v_tst |
Values(v_ref, v_tst) and location(m, n) of largest linf_abs. |
|||
integer(kind=LIBXSMM_BLASINT_KIND), | public | :: | m |
If r is non-zero (i is not negative), values (v_ref, v_tst), and location (m, n) stem from the i-th reduction (r calls of libxsmm_matdiff_reduce) of the largest difference (libxsmm_matdiff_epsilon). |
|||
integer(kind=LIBXSMM_BLASINT_KIND), | public | :: | n |
If r is non-zero (i is not negative), values (v_ref, v_tst), and location (m, n) stem from the i-th reduction (r calls of libxsmm_matdiff_reduce) of the largest difference (libxsmm_matdiff_epsilon). |
|||
integer(kind=LIBXSMM_BLASINT_KIND), | public | :: | i |
If r is non-zero (i is not negative), values (v_ref, v_tst), and location (m, n) stem from the i-th reduction (r calls of libxsmm_matdiff_reduce) of the largest difference (libxsmm_matdiff_epsilon). |
|||
integer(kind=LIBXSMM_BLASINT_KIND), | public | :: | r |
If r is non-zero (i is not negative), values (v_ref, v_tst), and location (m, n) stem from the i-th reduction (r calls of libxsmm_matdiff_reduce) of the largest difference (libxsmm_matdiff_epsilon). |
Returns the name of the target architecture as determined by the CPUID flags, as set by the libxsmm_get_target_arch* functions, or as set by the LIBXSMM_TARGET environment variable.
Returns C_NULL_PTR.
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_DOUBLE_COMPLEX), | intent(in), | TARGET | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_DOUBLE_COMPLEX), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_DOUBLE_COMPLEX), | intent(in) | :: | a(:,:) |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_FLOAT_COMPLEX), | intent(in), | TARGET | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_FLOAT_COMPLEX), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
complex(kind=C_FLOAT_COMPLEX), | intent(in) | :: | a(:,:) |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(in) | :: | a(:,:) |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(in), | TARGET | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(in) | :: | a(:,:) |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in), | TARGET | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in) | :: | a(:,:) |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_SHORT), | intent(in), | TARGET | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_SHORT), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_SHORT), | intent(in) | :: | a(:,:) |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | intent(in), | TARGET | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | intent(in) | :: | a(:,:) |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | intent(in), | TARGET | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | intent(in) | :: | a(:,:) |
Determines the C-address of the given array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | intent(in), | TARGET | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | intent(in), | TARGET | :: | a(*) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | intent(in) | :: | a(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(in), | TARGET | :: | a(:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(in), | TARGET | :: | a(:) |
Checks if the given kernel was generated. JIT code is guaranteed to be generated if JIT support was enabled at build-time of the library (default). This overload belongs to libxsmm_(mm)available.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(in) | :: | kernel |
Checks if the given kernel was generated. JIT code is guaranteed to be generated if JIT support was enabled at build-time of the library (default). This overload belongs to libxsmm_(mm)available.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(in) | :: | kernel |
Register user-defined key-value; value can be queried (libxsmm_xdispatch). Since the key-type is unknown to LIBXSMM, the key must be binary reproducible, i.e., a structured type (can be padded) must be initialized like a binary blob (libxsmm_xclear) followed by an element-wise initialization. The size of the key is limited (see documentation). The given value is copied by LIBXSMM and can be initialized prior to registration or whenever queried. Registered data is released when the program terminates but can be also released if needed (libxsmm_xrelease), .e.g., in case of a larger value reusing the same key.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | key | ||
integer(kind=C_INT), | intent(in) | :: | keysize | |||
integer(kind=C_INT), | intent(in) | :: | valsize | |||
type(C_PTR), | intent(in), | optional | :: | valinit |
Query user-defined value from LIBXSMM's code registry.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | key | ||
integer(kind=C_INT), | intent(in) | :: | keysize |
Returns the difference between two timer ticks (cycles). Implicit FORTRAN 77 interface: subroutine available.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=LIBXSMM_TICKINT_KIND), | intent(in) | :: | tick0 | |||
integer(kind=LIBXSMM_TICKINT_KIND), | intent(in) | :: | tick1 |
Calculate co-prime number <= n/2 (except: libxsmm_coprime2(0|1) == 0). Implicit FORTRAN 77 interface: INTEGER(8) :: coprime (OUT), n (IN)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | intent(in) | :: | n |
Calculates a hash value for the given array and seed. FORTRAN 77: see libxsmm_xhash
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | INTENT(IN)$CONTIGUOUS | :: | key(:) | |||
integer(kind=C_INT), | intent(in) | :: | seed |
Calculates a hash value for the given array and seed. FORTRAN 77: see libxsmm_xhash
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | INTENT(IN)$CONTIGUOUS | :: | key(:) | |||
integer(kind=C_INT), | intent(in) | :: | seed |
Calculates a hash value for the given array and seed. FORTRAN 77: see libxsmm_xhash
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | INTENT(IN)$CONTIGUOUS | :: | key(:) | |||
integer(kind=C_INT), | intent(in) | :: | seed |
Calculates a hash value for the given array and seed. FORTRAN 77: see libxsmm_xhash
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | INTENT(IN)$CONTIGUOUS | :: | key(:) | |||
integer(kind=C_INT), | intent(in) | :: | seed |
Calculates if there is a difference between two arrays. FORTRAN 77: see libxsmm_xdiff
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=C_CHAR), | INTENT(IN)$CONTIGUOUS | :: | a(:) | |||
character(len=C_CHAR), | INTENT(IN)$CONTIGUOUS | :: | b(:) |
Calculates if there is a difference between two arrays. FORTRAN 77: see libxsmm_xdiff
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT8_T), | INTENT(IN)$CONTIGUOUS | :: | a(:) | |||
integer(kind=C_INT8_T), | INTENT(IN)$CONTIGUOUS | :: | b(:) |
Calculates if there is a difference between two arrays. FORTRAN 77: see libxsmm_xdiff
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | INTENT(IN)$CONTIGUOUS | :: | a(:) | |||
integer(kind=C_INT), | INTENT(IN)$CONTIGUOUS | :: | b(:) |
Calculates if there is a difference between two arrays. FORTRAN 77: see libxsmm_xdiff
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_LONG_LONG), | INTENT(IN)$CONTIGUOUS | :: | a(:) | |||
integer(kind=C_LONG_LONG), | INTENT(IN)$CONTIGUOUS | :: | b(:) |
Check if location is SIMD-aligned and optionally consider the next access as if reached by incrementing the location (in Bytes). Optionally calculates the alignment of the given location in Bytes.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in), | VALUE | :: | location | ||
integer(kind=C_INT), | intent(in), | optional | :: | increment | ||
integer(kind=C_INT), | intent(out), | optional | :: | alignment |
Deallocate JIT'ted code created by libxsmm_create routines. To unregister code generated with libxsmm_dispatch is unnecessary.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(in) | :: | kernel |
Deallocate JIT'ted code created by libxsmm_create routines. To unregister code generated with libxsmm_dispatch is unnecessary.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(in) | :: | kernel |
Query or JIT-generate an SMM-kernel (double-precision).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(out) | :: | kernel | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | k | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | lda | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldb | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldc | |
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | alpha | |
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | beta | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | flags | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | prefetch |
Query or JIT-generate an SMM-kernel (single-precision).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(out) | :: | kernel | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | k | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | lda | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldb | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional, | TARGET | :: | ldc | |
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | alpha | |
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | beta | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | flags | |
integer(kind=C_INT), | intent(in), | optional, | TARGET | :: | prefetch |
Calls the kernel with the given arguments. Alternatively, PROCPOINTER can be used as shown by the inner comments of this routine (LIBXSMM_FUNCTION3). The libxsmm_xmmcall routines can be used in FORTRAN77.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(in) | :: | kernel | |||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | a(*) | ||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | b(*) | ||
real(kind=C_DOUBLE), | intent(inout), | TARGET | :: | c(*) |
Calls the kernel with the given arguments. Alternatively, PROCPOINTER can be used as shown by the inner comments of this routine (LIBXSMM_FUNCTION6). The libxsmm_xmmcall routines can be used in FORTRAN77.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(in) | :: | kernel | |||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | a(*) | ||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | b(*) | ||
real(kind=C_DOUBLE), | intent(inout), | TARGET | :: | c(*) | ||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | pa(*) | ||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | pb(*) | ||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | pc(*) |
See also libxsmm_dmmcall_abc and libxsmm_dmmcall_prf.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_DMMFUNCTION), | intent(in) | :: | kernel | |||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | a(*) | ||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | b(*) | ||
real(kind=C_DOUBLE), | intent(inout), | TARGET | :: | c(*) | ||
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | pa(*) | |
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | pb(*) | |
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | pc(*) |
Calls the kernel with the given arguments. Alternatively, PROCPOINTER can be used as shown by the inner comments of this routine (LIBXSMM_FUNCTION3). The libxsmm_xmmcall routines can be used in FORTRAN77.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(in) | :: | kernel | |||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | a(*) | ||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | b(*) | ||
real(kind=C_FLOAT), | intent(inout), | TARGET | :: | c(*) |
Calls the kernel with the given arguments. Alternatively, PROCPOINTER can be used as shown by the inner comments of this routine (LIBXSMM_FUNCTION6). The libxsmm_xmmcall routines can be used in FORTRAN77.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(in) | :: | kernel | |||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | a(*) | ||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | b(*) | ||
real(kind=C_FLOAT), | intent(inout), | TARGET | :: | c(*) | ||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | pa(*) | ||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | pb(*) | ||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | pc(*) |
See also libxsmm_smmcall_abc and libxsmm_smmcall_prf.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_SMMFUNCTION), | intent(in) | :: | kernel | |||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | a(*) | ||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | b(*) | ||
real(kind=C_FLOAT), | intent(inout), | TARGET | :: | c(*) | ||
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | pa(*) | |
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | pb(*) | |
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | pc(*) |
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in) | :: | a(m,*) | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(k,*) | |||
real(kind=C_DOUBLE), | intent(inout) | :: | c(m,*) | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta |
Auto-dispatched general dense MM (double-precision). This overload belongs to libxsmm_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(lda,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | lda | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(ldb,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldb | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(ldc,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldc |
Auto-dispatched general dense MM (single-precision). This overload belongs to libxsmm_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (single-precision). This overload belongs to libxsmm_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Auto-dispatched general dense MM (single-precision). This overload belongs to libxsmm_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in) | :: | a(m,*) | |||
real(kind=C_FLOAT), | intent(in) | :: | b(k,*) | |||
real(kind=C_FLOAT), | intent(inout) | :: | c(m,*) | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta |
Auto-dispatched general dense MM (single-precision). This overload belongs to libxsmm_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a(lda,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | lda | |||
real(kind=C_FLOAT), | intent(in) | :: | b(ldb,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldb | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c(ldc,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_DOUBLE), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in) | :: | a(m,*) | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(k,*) | |||
real(kind=C_DOUBLE), | intent(inout) | :: | c(m,*) | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(d)gemm. This overload belongs to libxsmm_blas_(d)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | alpha | ||
real(kind=C_DOUBLE), | intent(in) | :: | a(lda,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | lda | |||
real(kind=C_DOUBLE), | intent(in) | :: | b(ldb,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldb | |||
real(kind=C_DOUBLE), | intent(in), | optional | :: | beta | ||
real(kind=C_DOUBLE), | intent(inout) | :: | c(ldc,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | lda | ||
real(kind=C_FLOAT), | intent(in) | :: | b(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldb | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c(*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldc |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in) | :: | a(m,*) | |||
real(kind=C_FLOAT), | intent(in) | :: | b(k,*) | |||
real(kind=C_FLOAT), | intent(inout) | :: | c(m,*) | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta |
Re-exposes BLAS based GEMM routine with an interfaces similar to libxsmm_(s)gemm. This overload belongs to libxsmm_blas_(s)gemm.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=1), | intent(in), | optional | :: | transa | ||
character(len=1), | intent(in), | optional | :: | 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 | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | alpha | ||
real(kind=C_FLOAT), | intent(in) | :: | a(lda,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | lda | |||
real(kind=C_FLOAT), | intent(in) | :: | b(ldb,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldb | |||
real(kind=C_FLOAT), | intent(in), | optional | :: | beta | ||
real(kind=C_FLOAT), | intent(inout) | :: | c(ldc,*) | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldc |
Matrix-copy (2-dimensional copy) routine. If the input (optional) is not present, the routine is used to zero-fill the out-matrix.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in) | :: | output | |||
type(C_PTR), | intent(in), | optional | :: | input | ||
integer(kind=C_INT), | intent(in) | :: | typesize | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Matrix-copy (2-dimensional copy) routine (DP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(out), | TARGET | :: | output(*) | ||
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | input(*) | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Matrix-copy (2-dimensional copy) routine (DP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(out), | TARGET | :: | output(ldo,*) | ||
real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | input(ldi,*) | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Matrix-copy (2-dimensional copy) routine (SP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(out), | TARGET | :: | output(*) | ||
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | input(*) | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Matrix-copy (2-dimensional copy) routine (SP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(out), | TARGET | :: | output(ldo,*) | ||
real(kind=C_FLOAT), | intent(in), | optional, | TARGET | :: | input(ldi,*) | |
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Transpose a matrix (in-place form).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in) | :: | matrix | |||
integer(kind=C_INT), | intent(in) | :: | typesize | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (in-place form, DP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(inout), | TARGET | :: | matrix(*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (in-place form, DP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(inout), | TARGET | :: | matrix(ld,*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ld |
Transpose a matrix (in-place form, SP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(inout), | TARGET | :: | matrix(*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (in-place form, SP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(inout), | TARGET | :: | matrix(ld,*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ld |
Transpose a matrix (out-of-place form).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(C_PTR), | intent(in) | :: | output | |||
type(C_PTR), | intent(in) | :: | input | |||
integer(kind=C_INT), | intent(in) | :: | typesize | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (out-of-place form, DP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(out), | TARGET | :: | output(*) | ||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | input(*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (out-of-place form, DP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_DOUBLE), | intent(out), | TARGET | :: | output(ldo,*) | ||
real(kind=C_DOUBLE), | intent(in), | TARGET | :: | input(ldi,*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Transpose a matrix (out-of-place form, SP/rank-1).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(out), | TARGET | :: | output(*) | ||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | input(*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldi | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldo |
Transpose a matrix (out-of-place form, SP/rank-2).
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=C_FLOAT), | intent(out), | TARGET | :: | output(ldo,*) | ||
real(kind=C_FLOAT), | intent(in), | TARGET | :: | input(ldi,*) | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | n | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldi | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | ldo |
Process a series of SMMs (batch). See also libxsmm_xgemm_batch_task. Implicit FORTRAN 77 interface: INTEGER(4) :: iprec, oprec, batchcheck 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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in) | :: | iprec | |||
integer(kind=C_INT), | intent(in) | :: | oprec | |||
character(len=C_CHAR), | intent(in) | :: | transa | |||
character(len=C_CHAR), | 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), | optional | :: | lda | ||
type(C_PTR), | intent(in), | VALUE | :: | stride_a | ||
type(C_PTR), | intent(in), | VALUE | :: | b | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | 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), | optional | :: | ldc | ||
type(C_PTR), | intent(in), | VALUE | :: | stride_c | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | index_stride | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | index_base | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | batchsize | |||
integer(kind=C_INT), | intent(in), | optional | :: | batchcheck |
Process a series of SMMs (batch) with OpenMP (libxsmmext). Implicit FORTRAN 77 interface: INTEGER(4) :: iprec, oprec, batchcheck 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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer(kind=C_INT), | intent(in) | :: | iprec | |||
integer(kind=C_INT), | intent(in) | :: | oprec | |||
character(len=C_CHAR), | intent(in) | :: | transa | |||
character(len=C_CHAR), | 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), | optional | :: | lda | ||
type(C_PTR), | intent(in), | VALUE | :: | stride_a | ||
type(C_PTR), | intent(in), | VALUE | :: | b | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | 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), | optional | :: | ldc | ||
type(C_PTR), | intent(in), | VALUE | :: | stride_c | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | index_stride | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | index_base | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | batchsize | |||
integer(kind=C_INT), | intent(in), | optional | :: | batchcheck |
Utility function to calculate a collection of scalar differences between two matrices (libxsmm_matdiff_info). The location (m, n) of the largest difference (linf_abs) is recorded (also if NaN). In case of NaN, differences are set to infinity. If no difference is discovered, the location (m, n) is negative (OOB). Implicit FORTRAN 77 interface: TYPE :: info INTEGER(4) :: datatype INTEGER(4|8) :: m, n, ldref, ldtst ARRAY :: ref, tst
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(LIBXSMM_MATDIFF_INFO), | intent(out) | :: | info | |||
integer(kind=C_INT), | intent(in) | :: | datatype | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in) | :: | m | |||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | n | ||
type(C_PTR), | intent(in), | optional | :: | ref | ||
type(C_PTR), | intent(in), | optional | :: | tst | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldref | ||
integer(kind=LIBXSMM_BLASINT_KIND), | intent(in), | optional | :: | ldtst |