| 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_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 |
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 |
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 |
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 |