mirror of
https://github.com/amd/blis.git
synced 2026-05-05 23:11:15 +00:00
Details:
- Moved amaxv from being a utility operation to being a level-1v operation.
This includes the establishment of a new amaxv kernel to live beside all
of the other level-1v kernels.
- Added two new functions to bli_part.c:
bli_acquire_mij()
bli_acquire_vi()
The first acquires a scalar object for the (i,j) element of a matrix,
and the second acquires a scalar object for the ith element of a vector.
- Added integer support to bli_getsc level-0 operation. This involved
adding integer support to the bli_*gets level-0 scalar macros.
- Added a new test module to test amaxv as a level-1v operation. The test
module works by comparing the value identified by bli_amaxv() to the
the value found from a reference-like code local to the test module
source file. In other words, it (intentionally) does not guarantee the
same index is found; only the same value. This allows for different
implementations in the case where a vector contains two or more elements
containing exactly the same floating point value (or values, in the case
of the complex domain).
- Removed the directory frame/include/old/.
358 lines
10 KiB
Plaintext
358 lines
10 KiB
Plaintext
# --------------------------------------------------------------------------
|
|
#
|
|
# input.operations
|
|
# BLIS test suite
|
|
#
|
|
# This file contains input values that control which BLIS operations are
|
|
# tested as well as how those test runs are parameterized. We will now
|
|
# describe how each section or line type may be edited.
|
|
#
|
|
# ENABLING/DISABLING ENTIRE SECTIONS
|
|
# The values in the "Section overrides" section allow you to disable
|
|
# all operations in a given "level". Enabling a level here by itself
|
|
# does not enable every operation in that level; it simply means that
|
|
# the individual switches for each operation (in that level) determine
|
|
# whether or not the tests are executed. Use 1 to enable a section, or
|
|
# 0 to disable.
|
|
#
|
|
# ENABLING/DISABLING INDIVIDUAL OPERATION TESTS
|
|
# Given that an operation's section override switch is set to 1
|
|
# (enabled, whether or not that operation will get tested is determined
|
|
# by its local switch. For example, if the level-1v section override is
|
|
# set to 1, and there is a 1 on the line marked "addv", then the addv
|
|
# operation will be tested. Similarly, a 0 would cause addv to not be
|
|
# tested. NOTE: You may ignore the lines marked "test sequential
|
|
# front-end." These lines are for future use, to distinguish tests of
|
|
# the sequential implementation from tests of the multithreaded
|
|
# implementation. For now, BLIS does not contain separate APIs for
|
|
# multithreaded execution, even though multithreading is supported.
|
|
# So, these should be left set to 1.
|
|
#
|
|
# CHANGING PROBLEM SIZE/SHAPES TESTED
|
|
# The problem sizes tested by an operation are determined by the
|
|
# dimension specifiers on the line marked "dimensions: <spec_labels>".
|
|
# If, for example, <spec_labels> contains two dimension labels (e.g.
|
|
# "m n"), then the line should begin with two dimension specifiers.
|
|
# Dimension specifiers of -1 cause the corresponding dimension to be
|
|
# bound to the problem size, which is determined by values set in
|
|
# input.general. Positive values cause the corresponding dimension to
|
|
# be fixed to that value and held constant.
|
|
#
|
|
# Examples of dimension specifiers (where the dimensions are m and n):
|
|
#
|
|
# -1 -1 Dimensions m and n grow with problem size (resulting in
|
|
# square matrices).
|
|
# -1 150 Dimension m grows with problem size and n is fixed at
|
|
# 150.
|
|
# -1 -2 Dimension m grows with problem size and n grows
|
|
# proportional to half the problem size.
|
|
#
|
|
# CHANGING PARAMTER COMBINATIONS TESTED
|
|
# The parameter combinations tested by an operation are determined by
|
|
# the parameter specifier characters on the line marked "parameters:
|
|
# <param_labels>". If, for example, <param_labels> contains two
|
|
# parameter labels (e.g. "transa conjx"), then the line should contain
|
|
# two parameter specifier characters. The '?' specifier character
|
|
# serves as a wildcard--it causes all possible values of that parameter
|
|
# to be tested. A character such as 'n' or 't' causes only that value
|
|
# to be tested.
|
|
#
|
|
# Examples of parameter specifiers (where the parameters are transa
|
|
# and conjx):
|
|
#
|
|
# ?? All combinations of the transa and conjx parameters are
|
|
# tested: nn, nc, tn, tc, cn, cc, hn, hc.
|
|
# ?n conjx is fixed to "no conjugate" but transa is allowed
|
|
# to vary: nn, tn, cn, hn.
|
|
# hc Only the case where transa is "Hermitian-transpose" and
|
|
# conjx is "conjugate" is tested.
|
|
#
|
|
# Here is a full list of the parameter types used by the various BLIS
|
|
# operations along with their possible character encodings:
|
|
#
|
|
# side: l,r left, right
|
|
# uplo: l,u lower, upper
|
|
# trans: n,t,c,h no transpose, transpose, conjugate, Hermitian-
|
|
# transpose (i.e. conjugate-transpose)
|
|
# conj: n,c no conjugate, conjugate
|
|
# diag: n,u non-unit diagonal, unit diagonal
|
|
#
|
|
|
|
# --- Section overrides ----------------------------------------------------
|
|
|
|
1 # Utility
|
|
1 # Level-1v kernels
|
|
1 # Level-1m
|
|
1 # Level-1f kernels
|
|
1 # Level-2
|
|
1 # Level-3 micro-kernels
|
|
1 # Level-3
|
|
|
|
|
|
# --- Utility --------------------------------------------------------------
|
|
|
|
1 # randv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
|
|
1 # randm
|
|
1 # test sequential front-end
|
|
-1 -1 # dimensions: m n
|
|
|
|
|
|
# --- Level-1v -------------------------------------------------------------
|
|
|
|
1 # addv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
? # parameters: conjx
|
|
|
|
1 # amaxv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
|
|
1 # axpbyv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
? # parameters: conjx
|
|
|
|
1 # axpyv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
? # parameters: conjx
|
|
|
|
1 # copyv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
? # parameters: conjx
|
|
|
|
1 # dotv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
?? # parameters: conjx conjy
|
|
|
|
1 # dotxv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
?? # parameters: conjx conjy
|
|
|
|
1 # normfv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
|
|
1 # scalv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
? # parameters: conjbeta
|
|
|
|
1 # scal2v
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
? # parameters: conjx
|
|
|
|
1 # setv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
|
|
1 # subv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
? # parameters: conjx
|
|
|
|
1 # xpbyv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
? # parameters: conjx
|
|
|
|
|
|
# --- Level-1m -------------------------------------------------------------
|
|
|
|
1 # addm
|
|
1 # test sequential front-end
|
|
-1 -2 # dimensions: m n
|
|
? # parameters: transa
|
|
|
|
1 # axpym
|
|
1 # test sequential front-end
|
|
-1 -1 # dimensions: m n
|
|
? # parameters: transa
|
|
|
|
1 # copym
|
|
1 # test sequential front-end
|
|
-1 -2 # dimensions: m n
|
|
? # parameters: transa
|
|
|
|
1 # normfm
|
|
1 # test sequential front-end
|
|
-1 -2 # dimensions: m n
|
|
|
|
1 # scalm
|
|
1 # test sequential front-end
|
|
-1 -2 # dimensions: m n
|
|
? # parameters: conjbeta
|
|
|
|
1 # scal2m
|
|
1 # test sequential front-end
|
|
-1 -2 # dimensions: m n
|
|
? # parameters: transa
|
|
|
|
1 # setm
|
|
1 # test sequential front-end
|
|
-1 -2 # dimensions: m n
|
|
|
|
1 # subm
|
|
1 # test sequential front-end
|
|
-1 -2 # dimensions: m n
|
|
? # parameters: transa
|
|
|
|
|
|
# --- Level-1f kernels -----------------------------------------------------
|
|
|
|
1 # axpy2v
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
?? # parameters: conjx conjy
|
|
|
|
1 # dotaxpyv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
??? # parameters: conjxt conjx conjy
|
|
|
|
1 # axpyf
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
?? # parameters: conja conjx
|
|
|
|
1 # dotxf
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
?? # parameters: conjat conjx
|
|
|
|
1 # dotxaxpyf
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
???? # parameters: conjat conja conjw conjx
|
|
|
|
|
|
# --- Level-2 --------------------------------------------------------------
|
|
|
|
1 # gemv
|
|
1 # test sequential front-end
|
|
-1 -2 # dimensions: m n
|
|
?? # parameters: transa conjx
|
|
|
|
1 # ger
|
|
1 # test sequential front-end
|
|
-1 -2 # dimensions: m n
|
|
?? # parameters: conjx conjy
|
|
|
|
1 # hemv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
??? # parameters: uploa conja conjx
|
|
|
|
1 # her
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
?? # parameters: uploc conjx
|
|
|
|
1 # her2
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
??? # parameters: uploc conjx conjy
|
|
|
|
1 # symv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
??? # parameters: uploa conja conjx
|
|
|
|
1 # syr
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
?? # parameters: uploc conjx
|
|
|
|
1 # syr2
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
??? # parameters: uploc conjx conjy
|
|
|
|
1 # trmv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
??? # parameters: uploa transa diaga
|
|
|
|
1 # trsv
|
|
1 # test sequential front-end
|
|
-1 # dimensions: m
|
|
??? # parameters: uploa transa diaga
|
|
|
|
|
|
# --- Level-3 micro-kernels ------------------------------------------------
|
|
|
|
1 # gemm
|
|
1 # test sequential micro-kernel
|
|
-1 # dimensions: k
|
|
|
|
1 # trsm
|
|
1 # test sequential micro-kernel
|
|
? # parameters: uploa
|
|
|
|
1 # gemmtrsm
|
|
1 # test sequential micro-kernel
|
|
-1 # dimensions: k
|
|
? # parameters: uploa
|
|
|
|
|
|
# --- Level-3 --------------------------------------------------------------
|
|
|
|
1 # gemm
|
|
1 # test sequential front-end
|
|
-1 -1 -1 # dimensions: m n k
|
|
?? # parameters: transa transb
|
|
|
|
1 # hemm
|
|
1 # test sequential front-end
|
|
-1 -1 # dimensions: m n
|
|
???? # parameters: side uploa conja transb
|
|
|
|
1 # herk
|
|
1 # test sequential front-end
|
|
-1 -1 # dimensions: m k
|
|
?? # parameters: uploc transa
|
|
|
|
1 # her2k
|
|
1 # test sequential front-end
|
|
-1 -1 # dimensions: m k
|
|
??? # parameters: uploc transa transb
|
|
|
|
1 # symm
|
|
1 # test sequential front-end
|
|
-1 -1 # dimensions: m n
|
|
???? # parameters: side uploa conja transb
|
|
|
|
1 # syrk
|
|
1 # test sequential front-end
|
|
-1 -1 # dimensions: m k
|
|
?? # parameters: uploc transa
|
|
|
|
1 # syr2k
|
|
1 # test sequential front-end
|
|
-1 -1 # dimensions: m k
|
|
??? # parameters: uploc transa transb
|
|
|
|
1 # trmm
|
|
1 # test sequential front-end
|
|
-1 -1 # dimensions: m n
|
|
???? # parameters: side uploa transa diaga
|
|
|
|
1 # trmm3
|
|
1 # test sequential front-end
|
|
-1 -1 # dimensions: m n
|
|
????n # parameters: side uploa transa diaga transb
|
|
|
|
1 # trsm
|
|
1 # test sequential front-end
|
|
-1 -1 # dimensions: m n
|
|
???? # parameters: side uploa transa diaga
|
|
|