Public API: constants. Public API: types and procedures. Public API: GEMM dispatch. Public API: prediction. Re-exported from ISO_C_BINDING for convenience.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_TIMER_TICK_KIND | = | C_LONG_LONG |
Integer kind used by timer interface. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_F64 | = | IOR(0, ISHFT(8, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_F32 | = | IOR(1, ISHFT(4, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_C64 | = | IOR(2, ISHFT(16, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_C32 | = | IOR(3, ISHFT(8, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_I64 | = | IOR(4, ISHFT(8, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_U64 | = | IOR(5, ISHFT(8, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_I32 | = | IOR(6, ISHFT(4, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_U32 | = | IOR(7, ISHFT(4, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_I16 | = | IOR(8, ISHFT(2, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_U16 | = | IOR(9, ISHFT(2, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_I8 | = | IOR(10, ISHFT(1, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_U8 | = | IOR(11, ISHFT(1, 4)) |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_DATATYPE_UNKNOWN | = | 12 |
Enumerates element/data types. The raw value encodes type-size in bits [7:4]. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_GEMM_FLAGS_DEFAULT | = | 0 |
Enumerates GEMM batch synchronization flags (bitfield). |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_GEMM_FLAG_NOLOCK | = | 1 |
Enumerates GEMM batch synchronization flags (bitfield). |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_TARGET_ARCH_UNKNOWN | = | 0 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_TARGET_ARCH_GENERIC | = | 1 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_X86_GENERIC | = | 1002 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_X86_SSE3 | = | 1003 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_X86_SSE42 | = | 1004 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_X86_AVX | = | 1005 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_X86_AVX2 | = | 1006 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_X86_AVX10_256 | = | 1030 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_X86_AVX512 | = | 1100 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_X86_AVX512_AMX | = | 1105 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_X86_AVX512_INT8 | = | 1110 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_X86_AVX10_512 | = | 1200 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_X86_ALLFEAT | = | 1999 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_AARCH64 | = | 2001 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_AARCH64_SVE128 | = | 2201 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_AARCH64_SVE256 | = | 2301 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_AARCH64_SVE512 | = | 2401 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_AARCH64_ALLFEAT | = | 2999 |
Enumerates the available target architectures and ISA extensions as returned by libxs_cpuid. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_AUTO | = | 0 |
Prediction mode flags (ORable). |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_INTERPOLATE | = | 1 |
Prediction mode flags (ORable). |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_CLASSIFY | = | 2 |
Prediction mode flags (ORable). |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_TEMPORAL | = | 4 |
Prediction mode flags (ORable). |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_IDENTITY | = | 0 |
Prediction output transform. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_LOG | = | 1 |
Prediction output transform. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_SQRT | = | 2 |
Prediction output transform. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_RAW | = | 0 |
Prediction input decomposition mode. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_SPREAD | = | 1 |
Prediction input decomposition mode. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_PCA | = | 2 |
Prediction input decomposition mode. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_SETDIFF | = | 3 |
Prediction input decomposition mode. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_FISHER | = | 4 |
Prediction input decomposition mode. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_PREDICT_RF | = | 5 |
Prediction input decomposition mode. |
| integer(kind=C_INT), | public, | parameter | :: | LIBXS_FPRINT_MAXORDER | = | 8 |
Maximum derivative order for fingerprints. |
SYR2K with pre-dispatched config.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_gemm_config_t), | intent(in), | TARGET | :: | config | ||
| character(len=C_CHAR), | intent(in), | VALUE | :: | uplo | ||
| real(kind=C_DOUBLE), | intent(in), | VALUE | :: | alpha | ||
| real(kind=C_DOUBLE), | intent(in), | VALUE | :: | beta | ||
| type(C_PTR), | intent(in), | VALUE | :: | a | ||
| type(C_PTR), | intent(in), | VALUE | :: | b | ||
| type(C_PTR), | VALUE | :: | c |
SYR2K direct: dispatch + call in one shot.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in) | :: | datatype | |||
| integer(kind=C_INT), | intent(in) | :: | n | |||
| integer(kind=C_INT), | intent(in) | :: | k | |||
| integer(kind=C_INT), | intent(in) | :: | lda | |||
| integer(kind=C_INT), | intent(in) | :: | ldb | |||
| integer(kind=C_INT), | intent(in) | :: | ldc | |||
| character(len=C_CHAR), | intent(in) | :: | uplo | |||
| real(kind=C_DOUBLE), | intent(in) | :: | alpha | |||
| real(kind=C_DOUBLE), | intent(in) | :: | beta | |||
| type(C_PTR), | intent(in) | :: | a | |||
| type(C_PTR), | intent(in) | :: | b | |||
| type(C_PTR) | :: | c | ||||
| type(C_PTR), | intent(in), | optional | :: | registry |
SYRK with pre-dispatched config.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_gemm_config_t), | intent(in), | TARGET | :: | config | ||
| character(len=C_CHAR), | intent(in), | VALUE | :: | uplo | ||
| real(kind=C_DOUBLE), | intent(in), | VALUE | :: | alpha | ||
| real(kind=C_DOUBLE), | intent(in), | VALUE | :: | beta | ||
| type(C_PTR), | intent(in), | VALUE | :: | a | ||
| type(C_PTR), | VALUE | :: | c |
SYRK direct: dispatch + call in one shot.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in) | :: | datatype | |||
| integer(kind=C_INT), | intent(in) | :: | n | |||
| integer(kind=C_INT), | intent(in) | :: | k | |||
| integer(kind=C_INT), | intent(in) | :: | lda | |||
| integer(kind=C_INT), | intent(in) | :: | ldc | |||
| character(len=C_CHAR), | intent(in) | :: | uplo | |||
| real(kind=C_DOUBLE), | intent(in) | :: | alpha | |||
| real(kind=C_DOUBLE), | intent(in) | :: | beta | |||
| type(C_PTR), | intent(in) | :: | a | |||
| type(C_PTR) | :: | c | ||||
| type(C_PTR), | intent(in), | optional | :: | registry |
Returns the detected ISA level for the current platform. Pass C_NULL_PTR instead of info to skip filling the CPU properties structure.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | info |
Returns a human-readable name for the given ISA level id. The returned pointer is to static storage.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in), | VALUE | :: | id |
Translates a CPU architecture name (e.g., "avx2") to the corresponding LIBXS id constant.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=C_CHAR), | intent(in) | :: | name(*) |
Returns the SIMD vector length (VLEN) in bytes for the given ISA level; zero if scalar.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in), | VALUE | :: | id |
Request AMX tile state from the OS. Returns 0 on success, -1 on failure.
Returns the current tick of a monotonic timer source. Uses a platform-specific resolution; convert to seconds with libxs_timer_duration.
Returns the duration (in seconds) between two ticks received by libxs_timer_tick.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=LIBXS_TIMER_TICK_KIND), | intent(in), | VALUE | :: | tick0 | ||
| integer(kind=LIBXS_TIMER_TICK_KIND), | intent(in), | VALUE | :: | tick1 |
Create a memory pool (returns opaque handle).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_FUNPTR), | intent(in), | VALUE | :: | malloc_fn | ||
| type(C_FUNPTR), | intent(in), | VALUE | :: | free_fn |
Create a pool with extended allocators (per-thread extra).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_FUNPTR), | intent(in), | VALUE | :: | malloc_fn | ||
| type(C_FUNPTR), | intent(in), | VALUE | :: | free_fn | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | max_nthreads |
Calculate a 64-bit hash for a character string.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=C_CHAR), | intent(in) | :: | string(*) |
CRC-32 (ISO 3309 polynomial) for the given data.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | data | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | size | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | seed |
Adler-32 checksum for the given data.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | data | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | size | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | seed |
Compare two memory regions (binds to libxs_memcmp).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | a | ||
| type(C_PTR), | intent(in), | VALUE | :: | b | ||
| integer(kind=C_SIZE_T), | intent(in), | VALUE | :: | nbytes |
Combine absolute and relative norms into a single value which can be used to check against a margin.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_matdiff_t), | intent(in) | :: | input |
Create a registry (key-value store). Returns C_NULL_PTR in case of an error.
Return internal lock of registry.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | registry |
Get registry information. Returns 0 on success.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | registry | ||
| type(libxs_registry_info_t), | intent(out) | :: | info |
Combine two single-matrix diffs into a meta-diff.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_matdiff_t), | intent(inout) | :: | output | |||
| type(libxs_matdiff_t), | intent(in) | :: | input |
Query the verbosity level.
Query timer properties.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_timer_info_t), | intent(out) | :: | info |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in), | VALUE | :: | ninputs | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | noutputs |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | lock | ||
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| real(kind=C_DOUBLE), | intent(in) | :: | inputs(*) | |||
| real(kind=C_DOUBLE), | intent(in) | :: | outputs(*) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | nclusters | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | order |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | lock | ||
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | nclusters | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | order | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | tid | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | ntasks |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| type(C_PTR), | intent(in), | VALUE | :: | buffer | ||
| integer(kind=C_SIZE_T), | intent(inout) | :: | size |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | buffer | ||
| integer(kind=C_SIZE_T), | intent(in), | VALUE | :: | size |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| character(len=C_CHAR), | intent(in) | :: | filename(*) | |||
| type(C_PTR), | intent(in), | VALUE | :: | delims | ||
| type(C_PTR), | intent(in), | VALUE | :: | inputs | ||
| type(C_PTR), | intent(in), | VALUE | :: | outputs | ||
| type(C_PTR), | intent(in), | VALUE | :: | header | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | header_size | ||
| type(C_PTR), | intent(in), | VALUE | :: | delim_out |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=C_CHAR), | intent(in) | :: | str(*) | |||
| character(len=C_CHAR), | intent(in) | :: | delims(*) | |||
| integer(kind=C_INT), | intent(in), | VALUE | :: | index | ||
| integer(kind=C_INT), | intent(out) | :: | length |
Initialize the library.
De-initialize the library and free internal memory.
Free memory allocated by libxs_malloc.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | ptr |
Destroy pool and free all associated memory.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | pool |
Set the per-thread extra argument for an extended pool.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | pool | ||
| type(C_PTR), | intent(in), | VALUE | :: | extra |
Reduces matdiff info (max function). Initialize output with libxs_matdiff_clear first.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_matdiff_t), | intent(inout) | :: | output | |||
| type(libxs_matdiff_t), | intent(in) | :: | input |
Clears the given info-structure, e.g., for the initial reduction-value (libxs_matdiff_reduce).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_matdiff_t), | intent(out) | :: | info |
Destroy registry and release all entries.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | registry |
Pointer-array GEMM batch. Shape, alpha/beta, datatype from config%shape.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in) | :: | a_array(*) | |||
| type(C_PTR), | intent(in) | :: | b_array(*) | |||
| type(C_PTR) | :: | c_array(*) | ||||
| integer(kind=C_INT), | intent(in), | VALUE | :: | batchsize | ||
| type(libxs_gemm_config_t), | intent(in) | :: | config |
Pointer-array GEMM batch: per-thread variant.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in) | :: | a_array(*) | |||
| type(C_PTR), | intent(in) | :: | b_array(*) | |||
| type(C_PTR) | :: | c_array(*) | ||||
| integer(kind=C_INT), | intent(in), | VALUE | :: | batchsize | ||
| type(libxs_gemm_config_t), | intent(in) | :: | config | |||
| integer(kind=C_INT), | intent(in), | VALUE | :: | tid | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | ntasks |
Index-array GEMM batch: element-offsets into contiguous A, B, C buffers. index_stride is the Byte-stride used to walk stride_a, stride_b, stride_c (e.g. 4 for packed INTEGER(C_INT) arrays). index_stride=0: constant-stride mode. index_base selects the indexing convention: 0 for zero-based (C), 1 for one-based (Fortran). Shape, alpha/beta, datatype from config%shape.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | a | ||
| type(C_PTR), | intent(in), | VALUE | :: | stride_a | ||
| type(C_PTR), | intent(in), | VALUE | :: | b | ||
| type(C_PTR), | intent(in), | VALUE | :: | stride_b | ||
| type(C_PTR), | VALUE | :: | c | |||
| type(C_PTR), | intent(in), | VALUE | :: | stride_c | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | index_stride | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | index_base | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | batchsize | ||
| type(libxs_gemm_config_t), | intent(in) | :: | config |
Index-array GEMM batch: per-thread variant.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | a | ||
| type(C_PTR), | intent(in), | VALUE | :: | stride_a | ||
| type(C_PTR), | intent(in), | VALUE | :: | b | ||
| type(C_PTR), | intent(in), | VALUE | :: | stride_b | ||
| type(C_PTR), | VALUE | :: | c | |||
| type(C_PTR), | intent(in), | VALUE | :: | stride_c | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | index_stride | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | index_base | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | batchsize | ||
| type(libxs_gemm_config_t), | intent(in) | :: | config | |||
| integer(kind=C_INT), | intent(in), | VALUE | :: | tid | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | ntasks |
Set the verbosity level.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in), | VALUE | :: | level |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | mode |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| real(kind=C_DOUBLE), | intent(in) | :: | weights(*) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | output | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | transform |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | iterations |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | nseries | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | window |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | target |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | decompose |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | order |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | lock | ||
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| real(kind=C_DOUBLE), | intent(in) | :: | inputs(*) | |||
| real(kind=C_DOUBLE), | intent(out) | :: | outputs(*) | |||
| type(libxs_predict_info_t), | intent(out) | :: | info | |||
| integer(kind=C_INT), | intent(in), | VALUE | :: | nblend |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | lock | ||
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| real(kind=C_DOUBLE), | intent(in) | :: | target_outputs(*) | |||
| real(kind=C_DOUBLE), | intent(out) | :: | inputs(*) | |||
| type(libxs_predict_info_t), | intent(out) | :: | info |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| type(libxs_predict_query_t), | intent(out) | :: | info |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | index | ||
| real(kind=C_DOUBLE), | intent(out) | :: | inputs(*) | |||
| real(kind=C_DOUBLE), | intent(out) | :: | outputs(*) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| real(kind=C_DOUBLE), | intent(in) | :: | inputs_batch(*) | |||
| real(kind=C_DOUBLE), | intent(out) | :: | outputs_batch(*) | |||
| integer(kind=C_INT), | intent(in), | VALUE | :: | count | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | nblend |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | model | ||
| real(kind=C_DOUBLE), | intent(in) | :: | inputs_batch(*) | |||
| real(kind=C_DOUBLE), | intent(out) | :: | outputs_batch(*) | |||
| integer(kind=C_INT), | intent(in), | VALUE | :: | count | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | nblend | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | tid | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | ntasks |
Allocate memory (flags=0: automatic).
Allocate from a pool reaching steady-state. alignment=0 (LIBXS_MALLOC_AUTO, default): automatic. alignment=1 (LIBXS_MALLOC_NATIVE): preserve allocator's point !er.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in) | :: | pool | |||
| integer(kind=C_SIZE_T), | intent(in) | :: | nbytes | |||
| integer(kind=C_INT), | intent(in), | optional | :: | alignment |
Calculate a hash value for a given array and seed.
Calculates a hash value for the given array and seed.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=C_CHAR), | intent(in), | CONTIGUOUS, TARGET | :: | key(:) | ||
| integer(kind=C_INT), | intent(in) | :: | seed |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT8_T), | intent(in), | CONTIGUOUS, TARGET | :: | key(:) | ||
| integer(kind=C_INT), | intent(in) | :: | seed |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in), | CONTIGUOUS, TARGET | :: | key(:) | ||
| integer(kind=C_INT), | intent(in) | :: | seed |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_LONG_LONG), | intent(in), | CONTIGUOUS, TARGET | :: | key(:) | ||
| integer(kind=C_INT), | intent(in) | :: | seed |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=C_CHAR), | intent(in), | CONTIGUOUS, TARGET | :: | key(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT8_T), | intent(in), | CONTIGUOUS, TARGET | :: | key(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in), | CONTIGUOUS, TARGET | :: | key(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_LONG_LONG), | intent(in), | CONTIGUOUS, TARGET | :: | key(:) |
Check if two arrays differ (.TRUE. if different).
Calculates if there is a difference between two arrays.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=C_CHAR), | intent(in), | CONTIGUOUS, TARGET | :: | a(:) | ||
| character(len=C_CHAR), | intent(in), | CONTIGUOUS, TARGET | :: | b(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT8_T), | intent(in), | CONTIGUOUS, TARGET | :: | a(:) | ||
| integer(kind=C_INT8_T), | intent(in), | CONTIGUOUS, TARGET | :: | b(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in), | CONTIGUOUS, TARGET | :: | a(:) | ||
| integer(kind=C_INT), | intent(in), | CONTIGUOUS, TARGET | :: | b(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_LONG_LONG), | intent(in), | CONTIGUOUS, TARGET | :: | a(:) | ||
| integer(kind=C_LONG_LONG), | intent(in), | CONTIGUOUS, TARGET | :: | b(:) |
Foeppl polynomial fingerprint (generic).
General fingerprint: C_PTR data, explicit shape/stride. stride and order and axis are optional.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_fprint_t), | intent(out) | :: | info | |||
| integer(kind=C_INT), | intent(in) | :: | datatype | |||
| type(C_PTR), | intent(in) | :: | data | |||
| integer(kind=C_INT), | intent(in) | :: | ndims | |||
| integer(kind=C_SIZE_T), | intent(in), | TARGET | :: | shape(ndims) | ||
| integer(kind=C_SIZE_T), | intent(in), | optional, | TARGET | :: | stride(ndims) | |
| integer(kind=C_INT), | intent(in), | optional | :: | order | ||
| integer(kind=C_INT), | intent(in), | optional | :: | axis |
1-D fingerprint for REAL(C_DOUBLE) array.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_fprint_t), | intent(out) | :: | info | |||
| real(kind=C_DOUBLE), | intent(in), | TARGET | :: | data(:) | ||
| integer(kind=C_INT), | intent(in), | optional | :: | order | ||
| integer(kind=C_INT), | intent(in), | optional | :: | axis |
1-D fingerprint for REAL(C_FLOAT) array.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_fprint_t), | intent(out) | :: | info | |||
| real(kind=C_FLOAT), | intent(in), | TARGET | :: | data(:) | ||
| integer(kind=C_INT), | intent(in), | optional | :: | order | ||
| integer(kind=C_INT), | intent(in), | optional | :: | axis |
1-D fingerprint for INTEGER(C_INT) array.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_fprint_t), | intent(out) | :: | info | |||
| integer(kind=C_INT), | intent(in), | TARGET | :: | data(:) | ||
| integer(kind=C_INT), | intent(in), | optional | :: | order | ||
| integer(kind=C_INT), | intent(in), | optional | :: | axis |
1-D fingerprint for INTEGER(C_INT8_T) array.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_fprint_t), | intent(out) | :: | info | |||
| integer(kind=C_INT8_T), | intent(in), | TARGET | :: | data(:) | ||
| integer(kind=C_INT), | intent(in), | optional | :: | order | ||
| integer(kind=C_INT), | intent(in), | optional | :: | axis |
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: sum/l1, min, max, avg, variance. |
|||
| real(kind=C_DOUBLE), | public | :: | min_ref |
Statistics: sum/l1, min, max, avg, variance. |
|||
| real(kind=C_DOUBLE), | public | :: | max_ref |
Statistics: sum/l1, min, max, avg, variance. |
|||
| real(kind=C_DOUBLE), | public | :: | avg_ref |
Statistics: sum/l1, min, max, avg, variance. |
|||
| real(kind=C_DOUBLE), | public | :: | var_ref |
Statistics: sum/l1, min, max, avg, variance. |
|||
| real(kind=C_DOUBLE), | public | :: | l1_tst | ||||
| real(kind=C_DOUBLE), | public | :: | min_tst | ||||
| real(kind=C_DOUBLE), | public | :: | max_tst | ||||
| real(kind=C_DOUBLE), | public | :: | avg_tst | ||||
| real(kind=C_DOUBLE), | public | :: | var_tst | ||||
| real(kind=C_DOUBLE), | public | :: | diag_min_ref |
Diagonal statistics: min and max of diagonal elements. |
|||
| real(kind=C_DOUBLE), | public | :: | diag_max_ref |
Diagonal statistics: min and max of diagonal elements. |
|||
| real(kind=C_DOUBLE), | public | :: | diag_min_tst | ||||
| real(kind=C_DOUBLE), | public | :: | diag_max_tst | ||||
| real(kind=C_DOUBLE), | public | :: | v_ref |
Values(v_ref, v_tst) at location of largest linf_abs. |
|||
| real(kind=C_DOUBLE), | public | :: | v_tst |
Values(v_ref, v_tst) at location of largest linf_abs. |
|||
| real(kind=C_DOUBLE), | public | :: | w |
Cumulative weight for online mean. |
|||
| integer(kind=C_INT), | public | :: | m |
Location (m, n) and reduction index (i, r). |
|||
| integer(kind=C_INT), | public | :: | n |
Location (m, n) and reduction index (i, r). |
|||
| integer(kind=C_INT), | public | :: | i |
Location (m, n) and reduction index (i, r). |
|||
| integer(kind=C_INT), | public | :: | r |
Location (m, n) and reduction index (i, r). |
Registry status information.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=C_SIZE_T), | public | :: | capacity | ||||
| integer(kind=C_SIZE_T), | public | :: | size | ||||
| integer(kind=C_SIZE_T), | public | :: | nbytes |
CPU identification result.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| character(len=C_CHAR), | public | :: | model(256) | ||||
| integer(kind=C_INT), | public | :: | constant_tsc |
Foeppl polynomial fingerprint.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=C_DOUBLE), | public | :: | l2(LIBXS_FPRINT_MAXORDER+1) | ||||
| real(kind=C_DOUBLE), | public | :: | l1(LIBXS_FPRINT_MAXORDER+1) | ||||
| real(kind=C_DOUBLE), | public | :: | linf(LIBXS_FPRINT_MAXORDER+1) | ||||
| real(kind=C_DOUBLE), | public | :: | mean(LIBXS_FPRINT_MAXORDER+1) | ||||
| integer(kind=C_INT), | public | :: | order | ||||
| integer(kind=C_INT), | public | :: | n | ||||
| integer(kind=C_INT), | public | :: | datatype |
Timer properties.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=C_INT), | public | :: | tsc |
GEMM shape: problem geometry, transpose flags, and scalar coefficients. Alpha/beta stored as double (float promoted without loss). Also serves as registry key when caching configurations.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(C_FUNPTR), | public | :: | jit_create_dgemm | = | C_NULL_FUNPTR | ||
| type(C_FUNPTR), | public | :: | jit_get_dgemm | = | C_NULL_FUNPTR | ||
| type(C_FUNPTR), | public | :: | jit_create_sgemm | = | C_NULL_FUNPTR | ||
| type(C_FUNPTR), | public | :: | jit_get_sgemm | = | C_NULL_FUNPTR | ||
| type(C_FUNPTR), | public | :: | xgemm_dispatch | = | C_NULL_FUNPTR | ||
| type(C_FUNPTR), | public | :: | dgemm_blas | = | C_NULL_FUNPTR | ||
| type(C_FUNPTR), | public | :: | sgemm_blas | = | C_NULL_FUNPTR |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=C_INT), | public | :: | datatype | = | 0 | ||
| character(len=C_CHAR), | public | :: | transa | = | C_NULL_CHAR | ||
| character(len=C_CHAR), | public | :: | transb | = | C_NULL_CHAR | ||
| integer(kind=C_INT), | public | :: | m | = | 0 | ||
| integer(kind=C_INT), | public | :: | n | = | 0 | ||
| integer(kind=C_INT), | public | :: | k | = | 0 | ||
| integer(kind=C_INT), | public | :: | lda | = | 0 | ||
| integer(kind=C_INT), | public | :: | ldb | = | 0 | ||
| integer(kind=C_INT), | public | :: | ldc | = | 0 | ||
| real(kind=C_DOUBLE), | public | :: | alpha | = | 0 | ||
| real(kind=C_DOUBLE), | public | :: | beta | = | 0 |
GEMM kernel configuration. All function-pointer fields are C_FUNPTR (default C_NULL_FUNPTR). Populate from Fortran with C_FUNLOC or pass to C code that calls libxs_gemm_dispatch. The shape member is populated by libxs_gemm_dispatch.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(C_FUNPTR), | public | :: | dgemm_blas | = | C_NULL_FUNPTR | ||
| type(C_FUNPTR), | public | :: | sgemm_blas | = | C_NULL_FUNPTR | ||
| type(C_FUNPTR), | public | :: | dgemm_jit | = | C_NULL_FUNPTR | ||
| type(C_FUNPTR), | public | :: | sgemm_jit | = | C_NULL_FUNPTR | ||
| type(C_FUNPTR), | public | :: | xgemm | = | C_NULL_FUNPTR | ||
| type(C_PTR), | public | :: | jitter | = | C_NULL_PTR | ||
| integer(kind=C_INT), | public | :: | flags | = | LIBXS_GEMM_FLAGS_DEFAULT | ||
| type(libxs_gemm_shape_t), | public | :: | shape |
Per-output confidence information from prediction.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(C_PTR), | public | :: | values | = | C_NULL_PTR | ||
| type(C_PTR), | public | :: | error | = | C_NULL_PTR | ||
| type(C_PTR), | public | :: | confidence | = | C_NULL_PTR | ||
| type(C_PTR), | public | :: | variance | = | C_NULL_PTR | ||
| type(C_PTR), | public | :: | interpolated | = | C_NULL_PTR | ||
| integer(kind=C_INT), | public | :: | noutputs | = | 0 | ||
| integer(kind=C_INT), | public | :: | cluster | = | -1 | ||
| real(kind=C_DOUBLE), | public | :: | distance | = | 0 |
Model statistics after build.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=C_DOUBLE), | public | :: | compression | = | 0 | ||
| integer(kind=C_INT), | public | :: | order | = | 0 | ||
| integer(kind=C_INT), | public | :: | nclusters | = | 0 | ||
| integer(kind=C_INT), | public | :: | nentries | = | 0 | ||
| integer(kind=C_INT), | public | :: | iterations | = | 0 |
Extract type-size (in Bytes) from datatype enum.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in) | :: | datatype |
Weighted Sobolev distance between two fingerprints. If weights is absent, default weights are used.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_fprint_t), | intent(in) | :: | a | |||
| type(libxs_fprint_t), | intent(in) | :: | b | |||
| real(kind=C_DOUBLE), | intent(in), | optional, | TARGET | :: | weights(*) |
Register a key-value pair. Returns a pointer to the stored value, or C_NULL_PTR on failure.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in) | :: | registry | |||
| type(C_PTR), | intent(in) | :: | key | |||
| integer(kind=C_SIZE_T), | intent(in) | :: | key_size | |||
| type(C_PTR), | intent(in) | :: | value_init | |||
| integer(kind=C_SIZE_T), | intent(in) | :: | value_size |
Query a value by key. Returns C_NULL_PTR if the key is not found.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in) | :: | registry | |||
| type(C_PTR), | intent(in) | :: | key | |||
| integer(kind=C_SIZE_T), | intent(in) | :: | key_size |
Thread-safe query: copies up to value_size bytes into value_out under the lock. Returns non-zero if the key was found.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in) | :: | registry | |||
| type(C_PTR), | intent(in) | :: | key | |||
| integer(kind=C_SIZE_T), | intent(in) | :: | key_size | |||
| type(C_PTR), | intent(in) | :: | value_out | |||
| integer(kind=C_SIZE_T), | intent(in) | :: | value_size |
Check if a key exists (non-zero if found).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in) | :: | registry | |||
| type(C_PTR), | intent(in) | :: | key | |||
| integer(kind=C_SIZE_T), | intent(in) | :: | key_size |
Atomically retrieve and remove a key-value pair. Copies up to value_size bytes into value_out, then removes the entry. Returns non-zero if found.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in) | :: | registry | |||
| type(C_PTR), | intent(in) | :: | key | |||
| integer(kind=C_SIZE_T), | intent(in) | :: | key_size | |||
| type(C_PTR), | intent(in) | :: | value_out | |||
| integer(kind=C_SIZE_T), | intent(in) | :: | value_size |
Dispatch a GEMM kernel and populate config. Accepts OPTIONAL backend function pointers for MKL JIT, LIBXSMM xgemm, and BLAS fallback. Returns nonzero if a usable kernel was obtained.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_gemm_config_t), | intent(inout) | :: | config | |||
| integer(kind=C_INT), | intent(in) | :: | datatype | |||
| character(len=C_CHAR), | intent(in) | :: | transa | |||
| character(len=C_CHAR), | intent(in) | :: | transb | |||
| integer(kind=C_INT), | intent(in) | :: | m | |||
| integer(kind=C_INT), | intent(in) | :: | n | |||
| integer(kind=C_INT), | intent(in) | :: | k | |||
| integer(kind=C_INT), | intent(in) | :: | lda | |||
| integer(kind=C_INT), | intent(in) | :: | ldb | |||
| integer(kind=C_INT), | intent(in) | :: | ldc | |||
| real(kind=C_DOUBLE), | intent(in) | :: | alpha | |||
| real(kind=C_DOUBLE), | intent(in) | :: | beta | |||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_create_dgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_get_dgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_create_sgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_get_sgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | xgemm_dispatch | ||
| type(C_FUNPTR), | intent(in), | optional | :: | dgemm_blas | ||
| type(C_FUNPTR), | intent(in), | optional | :: | sgemm_blas | ||
| type(C_PTR), | intent(in), | optional | :: | registry |
Dispatch a GEMM config for SYR2K. Accepts OPTIONAL backend function pointers. Returns C_PTR to registry-owned config (NULL on failure).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in) | :: | datatype | |||
| integer(kind=C_INT), | intent(in) | :: | n | |||
| integer(kind=C_INT), | intent(in) | :: | k | |||
| integer(kind=C_INT), | intent(in) | :: | lda | |||
| integer(kind=C_INT), | intent(in) | :: | ldb | |||
| integer(kind=C_INT), | intent(in) | :: | ldc | |||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_create_dgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_get_dgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_create_sgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_get_sgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | xgemm_dispatch | ||
| type(C_FUNPTR), | intent(in), | optional | :: | dgemm_blas | ||
| type(C_FUNPTR), | intent(in), | optional | :: | sgemm_blas | ||
| type(C_PTR), | intent(in), | optional | :: | registry |
Dispatch a GEMM config for SYRK. Accepts OPTIONAL backend function pointers. Returns C_PTR to registry-owned config (NULL on failure).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=C_INT), | intent(in) | :: | datatype | |||
| integer(kind=C_INT), | intent(in) | :: | n | |||
| integer(kind=C_INT), | intent(in) | :: | k | |||
| integer(kind=C_INT), | intent(in) | :: | lda | |||
| integer(kind=C_INT), | intent(in) | :: | ldc | |||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_create_dgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_get_dgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_create_sgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | jit_get_sgemm | ||
| type(C_FUNPTR), | intent(in), | optional | :: | xgemm_dispatch | ||
| type(C_FUNPTR), | intent(in), | optional | :: | dgemm_blas | ||
| type(C_FUNPTR), | intent(in), | optional | :: | sgemm_blas | ||
| type(C_PTR), | intent(in), | optional | :: | registry |
Copy a matrix (or zero if source is NULL). ldo defaults to m (tightly packed output).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | outm | ||
| type(C_PTR), | intent(in), | VALUE | :: | inm | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | typesize | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | m | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | n | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | ldi | ||
| integer(kind=C_INT), | intent(in), | optional, | VALUE | :: | ldo |
Copy a matrix: task variant for external threading. ldo defaults to m (tightly packed output).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | outm | ||
| type(C_PTR), | intent(in), | VALUE | :: | inm | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | typesize | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | m | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | n | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | ldi | ||
| integer(kind=C_INT), | intent(in), | optional, | VALUE | :: | ldo | |
| integer(kind=C_INT), | intent(in), | VALUE | :: | tid | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | ntasks |
Out-of-place matrix transpose. ldo defaults to n (tightly packed transposed output).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | outm | ||
| type(C_PTR), | intent(in), | VALUE | :: | inm | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | typesize | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | m | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | n | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | ldi | ||
| integer(kind=C_INT), | intent(in), | optional, | VALUE | :: | ldo |
Out-of-place transpose: task variant. ldo defaults to n (tightly packed transposed output).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in), | VALUE | :: | outm | ||
| type(C_PTR), | intent(in), | VALUE | :: | inm | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | typesize | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | m | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | n | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | ldi | ||
| integer(kind=C_INT), | intent(in), | optional, | VALUE | :: | ldo | |
| integer(kind=C_INT), | intent(in), | VALUE | :: | tid | ||
| integer(kind=C_INT), | intent(in), | VALUE | :: | ntasks |
Matdiff wrapper with OPTIONAL arguments.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_matdiff_t), | intent(out) | :: | info | |||
| integer(kind=C_INT), | intent(in) | :: | datatype | |||
| integer(kind=C_INT), | intent(in) | :: | m | |||
| integer(kind=C_INT), | intent(in), | optional | :: | n | ||
| type(C_PTR), | intent(in), | optional | :: | ref | ||
| type(C_PTR), | intent(in), | optional | :: | tst | ||
| integer(kind=C_INT), | intent(in), | optional | :: | ldref | ||
| integer(kind=C_INT), | intent(in), | optional | :: | ldtst |
In-place matrix transpose. ldo defaults to n. scratch defaults to NULL (auto-allocate internally).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in) | :: | inout | |||
| integer(kind=C_INT), | intent(in) | :: | typesize | |||
| integer(kind=C_INT), | intent(in) | :: | m | |||
| integer(kind=C_INT), | intent(in) | :: | n | |||
| integer(kind=C_INT), | intent(in) | :: | ldi | |||
| integer(kind=C_INT), | intent(in), | optional | :: | ldo | ||
| type(C_PTR), | intent(in), | optional | :: | scratch |
In-place transpose: task variant. ldo defaults to n. scratch defaults to NULL.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in) | :: | inout | |||
| integer(kind=C_INT), | intent(in) | :: | typesize | |||
| integer(kind=C_INT), | intent(in) | :: | m | |||
| integer(kind=C_INT), | intent(in) | :: | n | |||
| integer(kind=C_INT), | intent(in) | :: | ldi | |||
| integer(kind=C_INT), | intent(in), | optional | :: | ldo | ||
| type(C_PTR), | intent(in), | optional | :: | scratch | ||
| integer(kind=C_INT), | intent(in) | :: | tid | |||
| integer(kind=C_INT), | intent(in) | :: | ntasks |
Remove a key-value pair from the registry.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(C_PTR), | intent(in) | :: | registry | |||
| type(C_PTR), | intent(in) | :: | key | |||
| integer(kind=C_SIZE_T), | intent(in) | :: | key_size |
Call the GEMM kernel dispatched into config.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_gemm_config_t), | intent(in) | :: | config | |||
| type(C_PTR), | intent(in), | VALUE | :: | a | ||
| type(C_PTR), | intent(in), | VALUE | :: | b | ||
| type(C_PTR), | VALUE | :: | c |
Release a GEMM config: clear all kernel pointers. If the config holds a JIT jitter handle, the caller must destroy it first (e.g., call mkl_jit_destroy before calling this routine).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(libxs_gemm_config_t), | intent(inout) | :: | config |