- Using a template class for the printing operator that depends
on the type.
- USe a macro to denote which interface is being tested.
AMD-Internal: [CPUPL-4500]
Change-Id: I453c4ef4842c354064f49ff32ec4bf42920cc17c
Following a recent change to the data generators to allow a stride
to be specified (60cc23f3d3), seg
faults can occur if m<=0 for column storage or n<=0 for row storage.
Prevent this by having separarate code paths to handle these
scenarios.
AMD-Internal: [CPUPL-4500]
Change-Id: I23ed8b2dccaaca140e2ddfda45bcdb4c888d5708
Improve consistency in test names across different APIs.
In this commit, standardize m, n, k and b in test names.
AMD-Internal: [CPUPL-4500]
Change-Id: I53e7dd83cbf426ab1ebe8aa4af1da01594f4af23
- Implemented AVX512 kernels for scopyv_, dcopyv_ and zcopyv_
using respective AVX512 intrinsics including masked
load and store operations.
- Implemented AVX512 kernels for scopy_, dcopy_ and
zcopy_ using assembly language to prevent loss of
performance during the translation of intrinsics.
- Updated the dcopy_blis_impl( ... ) and
zcopy_blis_impl( ... ) function to support
multithreaded calls to the respective computational
kernels, if and when the OpenMP support is enabled.
- Implemented OpenMP parallelization for dcopyv_ and
zcopyv_ APIs, while scopyv_ and ccopyv_ only support
single thread.
AMD-Internal: [CPUPL-4854]
Change-Id: I5fbd0bcca4e59001fbe2b1168b624d0c33242b3e
- Updated the IIT_ERS tests for SUBV to avoid using undefined
variables. These tests are enabled only when GTestSuite is
configured for BLIS_TYPED interface testing.
- Updated an instantiator in DAXPBY accuracy tests, to avoid
parsing error(extra comma). These tests are enabled only when
GTestSuite is configured for BLIS_TYPED interface.
AMD-Internal: [CPUPL-4500]
Change-Id: If6894daadbbc353dd66968649642ff07fa663782
Return type of xerbla and xerbla_array APIs are defined as int in BLIS, but according to netlib it should be void. Updated the defination and declaration accordingly.
Signed-off-by: Sridhar Govindaswamy <Sridhar.Govindaswamy@amd.com>
Change-Id: I3072ba76111189de5c5cf08df83ea154163dd34d
First in a series of commits to improve consistency in test names
across different APIs. This will help with gtest filtering.
In this commit, standardize alpha, beta, incx and incy.
AMD-Internal: [CPUPL-4500]
Change-Id: I0cde85f9a4cf969c0b12ac589b232786ad011f09
Details:
- variable m0 is being loaded into a register without typecasting
it to uint64_t. This resulted in seg-fault when int size is set
to be 32 bits during configure time.
- Any variable that is loaded using mov in assembly needs to be
typecasted to uint64_t before begin_asm, so that change in size
of integer doesn't affect the functionality.
- Modified all instances using variable m0 to use variable 'm' where
m = (uint64_t)m0;
AMD-Internal: [CPUPL-4971]
Change-Id: I49b66d2cacf19ace40ab44c9f85904644e8921f4
- Updated test_gemv.h to pass the right boolean
to computediff( ... ), based on whether we run
it for exception value tests or not.
AMD-Internal: [CPUPL-4500]
Change-Id: I1ad2cde4f9b4bb1dadc32d1f7d02a90a457e218f
*covered large sizes, scalar combinations and strides greater than the
size for cger, dger, sger and zger.
Signed-off-by: Sangadala Eswari <Sangadala.Eswari@amd.com>
AMD-Internal: CPUPL-4414
Change-Id: I6fba26a35903d1f6dbd713f19eac6bb537b3d8d2
- Changed the macro guard for accuracy tests of SIMATCOPY,
to ensure that tests are enabled/disabled based on the reference.
- Updated test_gemv.h to make sure the contents of y vector is copied
to y_ref post inducing exception values.
AMD-Internal: [CPUPL-4500]
Change-Id: I7249e643677e7e493eba5d072567615bc913a532
Add name of variable being tested in error output from
computediff functions. First step to adding (optional)
tests on input arguments.
AMD-Internal: [CPUPL-4379]
Change-Id: I9553b660bcf5ecf1dd675cb837655078933455ac
Modify thresholds to reflect number of operations that
accumulate results into each output element. Different
limits are set for early return and special cases.
Constants are still subject to experimentation and change.
AMD-Internal: [CPUPL-4378]
Change-Id: I81f63a36c161ff1866f2d404b9e3cbb9a2948d3a
Modify thresholds to reflect number of operations that
accumulate results into each output element. Different
limits are set for early return and special cases.
Constants are still subject to experimentation and change.
AMD-Internal: [CPUPL-4378]
Change-Id: I03cd8901e574f2e44e85ce8b0bc234e36edb4819
Correct the order of tests in bli_cpuid.c to test all known zen
AVX512 platforms before considering fallback tests on AVX512
support. This avoids builds with "configure auto" or
"cmake -DBLIS_CONFIG_FAMILY=auto" incorrectly selecting zen5
sub-configuration on zen4 systems.
AMD-Internal: [CPUPL-4966]
Change-Id: I8706382e2df7c9ae4bb456e3a7f465053e15beea
1. Fixed issue related to linking reference library.
2. Clean-up of how reference library variables are set.
2. Compilation error related to std::max() and std::min().
AMD-Internal: [CPUPL-4879]
Change-Id: I427a4a4c0ea56a340a8bbd1a6649252e9680b937
- Added Memory Access Test support for GEMV.
- Added Extreme Value Tests for various combinations of NaN, Inf and
-Inf for ?GEMV.
- Also fixed some invalid IIT_ERS tests.
AMD-Internal: [CPUPL-4825]
Change-Id: Iee77b305f6c6b9427153fbbc5191176dae9fbfea
- In 2x1 fringe case in [RUN/RLT] kernel, 3 scomplex
precision numbers are being read instead of 1 scomplex.
- Fixed the code to read only one scomplex.
AMD-Internal: [CPUPL-4403]
Change-Id: If3ac03ed864618382d3a382a8cdff7ff8a94eb7d
- Scaling vector X is skipped when alpha is 1 in ZTRSV.
- Scaling matrix A is skipped when alpha is 1 in ZTRSM.
AMD-Internal: [CPUPL-4324]
Change-Id: I03c5a454ed1f5be36dac0f121408749bfc9cfc81
- Comparision using bli_eqsc is slower than direct comparison.
- Changed comparision logic for 1x1 matrix
from bli_sqsc to direct comparision.
AMD-Internal: [CPUPL-4324]
Change-Id: Ifb2d0ad7a97c8bf33b66d624a7ecc53e38c1c803
Correction to commit 2450a1813b
to add -DBLIS_CONFIG_FAMILY=zen5 support in cmake.
AMD-Internal: [CPUPL-3518]
Change-Id: Iecff2b64d5d95960cecbbf98d5269133747b122e
Implement full support for zen5 as a separate BLIS sub-configuration
and code path within amdzen configuration family.
AMD-Internal: [CPUPL-3518]
Change-Id: Iaa5096e0b83bf0f0c3fd1c41e601ccd29bda3c09
1. Different matrix sizes
2. Different Stride values and Scalar values
3. Added Early Return tests in new file
Signed-off by: Harish Kumar<harish.kumar@amd.com>
AMD-Internal: [CPUPL-4417]
Change-Id: I5e645612808336e11da0c5ed8da9fe17a5543fbd
- Implemented the feature to benchmark ?AXPYV APIs
for the supported datatypes. The feature allows to
benchmark BLAS, CBLAS or the native BLIS API, based
on the macro definition.
- Added a sample input file to provide examples to benchmark
AXPYV for all its datatype supports.
- Updated the sample input file for SCALV to provide examples
to benchmark all of its datatype supports.
AMD-Internal: [CPUPL-4805]
Change-Id: I550920e3a57fcc2e4900e9e698330d8b8595bdee
Previous commit introduced an infinite recursion problem in
generators for symmetric matrices. This was reported as a
compiler warning by gcc 12.2 but not by gcc 11.4.
AMD-Internal: [CPUPL-4862]
Change-Id: I8642b81a62f0643b5a9ebedb4fcc83b25542de1b
- Added test-cases to verify the functional behaviour
of the BLAS-extension API ?imatcopy_() and ?omatcopy2_().
The test-cases cover the following categories for the
supported datatypes :
- Functional and memory testing.
- Negative parameter testing with invalid inputs.
- Early return scenarios.
- Exception value testing.
- Updated functions in testinghelpers to include strides
in addition to leading-dimension, when initializing
a matrix. The default value for stride is set as 1.
- Implemented functions to load the reference symbol, based
on the choice of the reference library. The function definition
is overloaded due to different API standards being exposed by
different libraries.
- Code cleanup of files for ?OMATCOPY API.
AMD-Internal: [CPUPL-4862]
Change-Id: If63b348f517e2cde1fe48f3a195808b33a91c312
- Added support for ?DOTC in bench.
- Updated DTL to accept conjx as a parameter:
- 'N', i.e., no conjugate for DOTU
- 'C', i.e., conjugate for DOTC
- Updated DTL calls in the interface with respective values of
conjx.
AMD-Internal: [CPUPL-4804]
Change-Id: I447b19a6273566c6021c1721ce173bac4a59142c
- Added overflow and underflow tests for dgemm
These tests cause floating point overflow and underflow by feeding
values close to DBL_MAX and DBL_MIN values to matrices
DBL_MAX = 1.7976931348623158e+308
DBL_MIN = 2.2250738585072014e-308
When computations result in values beyond the range [DBL_MIN, DBL_MAX],
it leads to an overflow or underflow condition
Two new arguments are added to test_gemm routine - over_under and input_range
over_under = 0 indicates overflow
over_under = 1 indicates underflow
input_range = -1 indicates values within overflow or underflow limits
input_range = 0 indicates values very close to DBL_MIN or DBL_MAX
input_range = 1 indicates values beyond DBL_MIN or DBL_MAX
- New file: dgemm_ovr_undr.cpp
Overflow and underflow tests are called from this file
dgemm_overflow and dgemm_underflow. This file uses
cfloat header file for DBL_MIN and DBL_MAX values
Signed-off-by: Nimmy Krishnan <nimmy.krishnan@amd.com>
AMD-Internal: [CPUPL-4492]
Change-Id: I4bbd519abacc56f322c73d6c0187ed6e1abbbf2b
- Added test-cases to verify the functional behaviour
of the BLAS-extension API ?omatcopy_(). The test-cases
cover the following categories for the supported datatypes :
- Functional and memory testing.
- Negative parameter testing with invalid inputs.
- Early return scenarios.
- Exception value testing.
- Implemented a function to load the reference symbol, based
on the choice of the reference library. The function definition
is overloaded due to different API standards being exposed by
different libraries.
AMD-Internal: [CPUPL-4810][SWLCSG-2706]
Change-Id: I8dcaeeaa36d392b752eb0685e32583a12ddc4220
- Updated the generate_NAN_INF() in test_trsm.h to properly induce NaNs
and Infs for complex types.
AMD-Internal: [CPUPL-4639]
Change-Id: I4226e5c5b5f7de85eb89271551f897f87755f4f5
- Handle -0.0 separately in get_value_string()
- Avoid unused variable warning when not TEST_BLIS_TYPED in
subv_evt_testing.cpp
- Remove unused variables in dgemm_ukernel.cpp
- Remove unnecessary local copies of greenzone1 in test
programs now that greenzone_1 and greenzone_2 will
not overlap.
- Protect tests of haswell kernels by ifdef on
BLIS_KERNELS_HASWELL rather than BLIS_KERNELS_ZEN.
- Added GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST
statements in TRSM kernel tests.
- Correct descriptions of trsm and trmm operations.
- Correct typos.
AMD-Internal: [CPUPL-4500]
Change-Id: If8520347e417785e6aa953a0c8a65d4f5f3c1591
- Added API tests
- Added Invalid input test cases (IIT).
- Added memory testing for SWAPV API.
- Added micro kernel testing for single and double precision
- Added reference swapv functionality in testinghelpers
- Added binary comparison method for two vectors with different
increments in check_error.h
AMD-Internal: [CPUPL-4814]
Change-Id: I32bcca51b4e998d51ede70869035da76a7f6dbca
> 1. Ranges with small and average sizes
> 2. Values with different orders
> 3. Negative tests added with negative range of values and stride values.
> 4. Added Early Return tests.
> Signed-off by: Harish Kumar<harish.kumar@amd.com>
AMD-Internal: [CPUPL-4419]
Change-Id: Iaadc0f3104c237d3fb6ccf2c2b398b30edcd1ee4
- Added unit-test cases for accuracy and memory-testing of the
following kernels :
- bli_samaxv_zen_int( ... ) and bli_samaxv_zen_int_avx512( ... )
- bli_damaxv_zen_int( ... ) and bli_damaxv_zen_int_avx512( ... )
- Added test cases to verify the compliance of SAMAXV and DAMAXV
APIs, through Exception Value Testing(EVT). This is done by
inducing exception values in the input vector(at two places).
The induction is controlled by the user, through indices given as
part of the parameterized test-cases.
AMD-Internal: [CPUPL-4660][CPUPL-4661]
Change-Id: I25b7d54487fa9fb6a30ac13563d1497af8b582ab
- Added API tests for DGEMMT.
- Added Extreme Value Test cases (EVT) for DGEMMT.
- Tests for various combinations of INFs
and NANs for A and B matrix are added.
- Added Invalid input test cases (IIT).
- Added memory testing for DGEMMT API.
AMD-Internal: [CPUPL-4724]
Change-Id: Ib40802ea49417b4a4883831c2d971e59a2e093e5
Description:
1. Replaced aligned load intrinsics _mm512_load_ps
with unaligned load intrinsics _mm512_loadu_ps.
2. There is no guarantee that the memory address
can be aligned everywhere. The changes are under
beta multiplication. Copy paste error.
Change-Id: I978231b556e17ad7e66c5028ed1cd904c653e0a8
- Added API tests for ZTRSV.
- Added Extreme Value Test cases (EVT) for ZTRSV.
- Tests for various combinations of INFs
and NANs for X vector and B matrix are added.
- Added memory testing for ZTRSV
API.
AMD-Internal: [CPUPL-4716]
Change-Id: I0291acaafa78073979c307a4cc9595d429229c0c
- Added API tests for DTRSV.
- Added Extreme Value Test cases (EVT) for DTRSV.
- Tests for various combinations of INFs
and NANs for X vector and B matrix are added.
- Added Invalid input test cases (IIT).
- Added memory testing for DTRSV
kernels.
- Fixed a bug in alphax function where scaling
of a vector with a scalar was not handled
correctly when incx was negative.
AMD-Internal: [CPUPL-4715]
Change-Id: I84c873e98f845e05b11860e7ef6083d1184489b4
- Updating gemm/cgemm_ukernel.cpp to cast integers so that gtestsuite works for ILP64.
- Updating BLIS cmake presets to be conditional on Windows and Linux.
- Updating GTestSuite cmake system to use environment variable to set BLIS_PATH and reference library.
- Add more cmake presets options in gtestsuite.
- Updating printing functionality for vectors and matrices.
- Adding macro definition checks so that GTestSuite builds successfully for shared libraries on zen3.
- Casting integers so that code builds for ILP64.
AMD-Internal: [CPUPL-4500]
Change-Id: I03afd08d5ad8ae50193d9559cf4ab8fc1d08753c
Modifications to testinghelpers::get_value_string() to allow
floating point values (e.g. for alpha and beta) to be used in
generating test names. Values will be generated in the form
1p3 or m2p4, or 3p0_4p5i for complex data. One decimal place
is currently enabled but this can be increased if needed. This
helps prevent duplicate test name errors when the list of values
for alpha or beta includes e.g. 1.0 and 1.3.
Also add support in testinghelpers::get_value_string() for
variables of type gtint_t.
AMD-Internal: [CPUPL-4500]
Change-Id: Icc8ca3c3cfacd7d46fffefee5a6e05452f704d4e
- Added BUILD_STATIC_LIBS option which is on by default, only on Linux.
- Added TEST_WITH_SHARED option which is off by default, only on Linux.
- If only shared or static lib is being built, that's the one that will be used for testing.
- If both are being built, TEST_WITH_SHARED determins which library wil be used for testing.
- Set linux workflows so that they build both static and shared libs, and use linux-static and linux-shared to denote which one should be used for testing.
- Set -fPIC for both static and shared builds to fix issues faced when building blis using AOCC 4.0.0 and gtestsuite using gcc 9.4.0.
AMD-Internal: [CPUPL-2748]
Change-Id: I4227bab97ff31ecddfe218e18499f33b4e4ee63e
- Added Functional Tests, Early Return Scenarios, Invalid Input Tests
and Extreme Value Tests for S/D/C/ZGER.
- EVTs are added for the sake of sanity since GER is primarily utilizing
the AXPYV kernel.
AMD-Internal: [CPUPL-4758]
Change-Id: I12db0ba952eeb97ab167656ab5fd614e56437154
CMakelists.txt is updated to support aocl_gemm on windows.
On windows, BLIS library(blis+aocl_gemm) is built successfully
only with AOCC Compiler. (Clang has an issue with optimizing
VNNI instructions).
$cmake .. -DENABLE_ADDON="aocl_gemm" ....
AMD-Internal: [CPUPL-2748]
Change-Id: I9620878ab6934233fadc9ddc5d5e82ad85be9209
Updated compiler id in cmake related files from
CMAKE_CXX_COMPILER_ID to CMAKE_C_COMPILER_ID
AMD-Internal: [CPUPL-2748]
Change-Id: Ib0e2a2e3ec8fafeb423fe56b9842a93db0115371
CGEMM:
API: Functional testing of CGEMM
Covers different matrix sizes
Hence it covers SUP and Native code path
EVT: Insertion of Exception values like NAN, +/-INF in Matrix
EV is inserted in user provided indices of in/out Matrices
EV is passed as alpha and beta values
Expectation is output should be complaint with standard output
MEM: To check for out of bound read or write through protected pages
ZGEMM:
- Updated EVT tests for special case for alpha, beta when
imaginary component is 0
- Updated SUP & Native method to support C/Z datatype
AMD-Internal: [CPUPL-4712]
Change-Id: If8ba99998e0a494375a764bb7756d45147388965
- dotxf is a blis specific kernel, which performs dotxv
operation but in multiple of fused factors to speed up
the operations.
- So dotxf reference function is implemented for gtestsuite,
where dotxf computation compared against computation done by
looping over dotxv function.
AMD-Internal: [CPUPL-4764]
Change-Id: I342dab066ceb1710649e54bb73afc5a23e2a8177
- Testcases with exception values such as nan and +/-inf.
- Randomly inserting nan, +/- inf in A,B or C matrix along with
alpha and beta with extreme values
AMD-Internal: [CPUPL-4681]
Change-Id: Ia92bcdb4519e9a0e4c6026e93b5e2e2f0e19b065