Commit Graph

3645 Commits

Author SHA1 Message Date
varshav2
e3c434080a Fix duplicate check and early return in s8s8s32/u8s8s32
- removed the duplicate check for col-major inputs in s8s8s32/u8s8s32
  APIs
- Fixed the print in bench_lpgemm

Change-Id: If40837b89927dd82d8aa6f620d1a7f2c24aed53c
2024-08-23 02:32:20 +05:30
jagar
8fe1d32316 pkg-config file for blis MT library
Updated Makefile to update st/mt library in blis.pc

Change-Id: Idc61d7652ee6380cf2d73f08caaf9e9216fbb77a
2024-08-22 07:55:55 -04:00
Vignesh Balasubramanian
189a0b7224 Bugfix for {D/C/Z}AXPBY and ZAXPY BLAS APIs
- Bug : For non-zen architectures, {D/C/Z}AXPBY had
  incorrect datatypes passed when querying the computational
  kernel from context. The right datatype is now passed to
  each variant.

- Bug : For ZAXPY, a NULL context was passed to the kernel
  when using the single-threaded path. In case of further
  using the context inside the kernel, this would be an issue.
  We now pass the context instead of a null pointer.

AMD-Internal: [CPUPL-5643]
Change-Id: I01bb78bda6be61c43543b16fda0ac02a988a07bf
2024-08-22 14:12:14 +05:30
Edward Smyth
e7d3d444d8 Disable disabling sba pools
The disable sba pools functionality currently gives incorrect results
at runtime when multiple threads are used. Fixes and improvements are
present in the upstream version of BLIS, so until these are downstreamed
only allow builds where sba pools are enabled.

AMD-Internal: [CPUPL-5512]
Change-Id: I9ccd654477fb714a2fb5f38a138b7e9b5e55e33d
2024-08-21 08:03:43 -04:00
Edward Smyth
3a6d367f9c GTestSuite: Fix TRSM ukr tests in non-zen builds
Add guards around bli_trsm_small kernel tests to only call them
if BLIS_ENABLE_SMALL_MATRIX_TRSM is defined. This fixes missing
symbol errors in tests of non-zen builds, e.g. generic or skx.

AMD-Internal: [CPUPL-4500]
Change-Id: I7a822a41b5f686b5e38b0c63dd1871963e990407
2024-08-21 07:45:06 -04:00
Chandrashekara K R
545f9ee44e CMake: Updated cmake minimum version to be supported to 3.22.0 to maintain uniform across all AOCL libraries.
AMD Internal : [CPUPL-5616]

Change-Id: Ic53532ff9883b1bba39e859ea2523c20c1ac383b
2024-08-21 12:09:24 +05:30
Shubham Sharma
d322cc11f8 Tiny size optimization for DTRSV var2
- Use AVX2 kernels for tiny sizes on genoa.
- Removed the runtime init overhead for small sizes.

AMD-Internal: [CPUPL-5407]
Change-Id: I0db7d93abc659012916ef706f22528c7fabb4e30
2024-08-20 00:40:25 -04:00
Shubham Sharma.
1a17e95332 Fixed failures for mixed precision on ZEN5 in GEMM
- Optimized macro kernel (bli_dgemm_avx512_asm_8x24_macro_kernel)
  for zen5 do not support alpha scaling. Alpha scaling is
  supported by zen5 micro kernel (bli_dgemm_avx512_asm_8x24).
- Optimized macro kernel expects alpha scaling to be done during
  packing. The packing kernel used for mixed precision do not support
  alpha scaling. Therefore, the optimized Zen5 macro kernel is not
  compatible with existing packing logic.
- Changes have been made to use the generic macro kernel which in turn
  used zen5 micro kernel for mixed precision which supports alpha scaling.

AMD-Internal: [CPUPL-5058]
Change-Id: I1bfeb32ae07eedafadad7dd2c62d63913a46e446
2024-08-20 00:40:12 -04:00
Vignesh Balasubramanian
93631410a3 Bugfix : Fixed memory accesses in AVX512 SGEMMSUP RD kernels
- Bug: Among the list of AVX512 SGEMMSUP RD kernels, the ones handling
  m_fringe = 3 had incorrect usage of ZMM on a vector-load instruction
  that strictly needed YMMs.

- Further updated the existing micro-kernel test cases to simulate
  these issues and validate the fix.

AMD-Internal: [CPUPL-5353]
Change-Id: Id86e60ce36bb9f8433a1a203cfe0b8c6347df2c1
2024-08-19 17:18:31 +05:30
Arnav Sharma
a67c8f05fb Gtestsuite: Fix for GEMM_COMPUTE IIT_ERS Test
- The IIT_ERS test for GEMM_COMPUTE where alpha = 0 and beta = 0 was
  failing since neither of the matrices was being packed and thus,
  missing the scaling by alpha resulting in a non-zero output for C
  matrix (C := A * B).

- Enabled packing of A matrix for the ZeroAlpha_ZeroBeta IIT_ERS test
  which handles the alpha scaling.

AMD-Internal: [CPUPL-5598]
Change-Id: Id9179ec6150d1bc5a0274edce727ce6cc4172213
2024-08-13 17:24:27 +05:30
Vignesh Balasubramanian
fd47d0aebb Fixing compiler warnings when exporting internal BLIS kernels
- Added the attribute to export symbols, in the header file that
  contains the L1 kernel declarations. This attribute was previously
  added as part of the kernel definitions.

AMD-Internal: [CPUPL-4415]
Change-Id: I375246f47d53c220f885644f9b75c7d7991ae710
2024-08-12 12:30:51 +05:30
Meghana Vankadari
5514c7a75f Added LPGEMV(n=1) kernels for s8s8s32os32|s8 and s8s8s16os16|s8 APIs
- When n=1, reorder of B matrix is avoided to efficiently
  process data. A dot-product based kernel is implemented to
  perform gemv when n==1.

AMD-Internal: [SWLCSG-2354]
Change-Id: I6b73dfddd9a15e7b914d031646a1d913a7ab4761
2024-08-09 06:17:52 -04:00
jagar
ef011c9d92 CMake : Added cmake support for "test" in blis.
command to build test
$ "cmake --build . --target test_blis"

AMD-Internal: [CPUPL-2748]
Change-Id: I088af68115f3d9fdd007203dd22a42f53478a44f
2024-08-06 19:34:57 +05:30
Edward Smyth
7fff7b4026 Code cleanup: Miscellaneous fixes
- Delete unused cmake files.
- Add guards around call to bli_cpuid_is_avx2fma3_supported
  in frame/3/bli_l3_sup.c, currently assumes that non-x86
  platforms will not use bli_gemmtsup.
- Correct variable in frame/base/bli_arch.c on non-x86
  builds.
- Add guards around omp pragma to avoid possible gcc
  compiler warning in kernels/zen/2/bli_gemv_zen_int_4.c.
- Add missing registers in clobber list in
  kernels/zen4/1/bli_dotv_zen_int_avx512.c.
- Add gtestsuite ERS_IIT tests for TRMV, copied from TRSV.
- Correct calls to cblas_{c,z}swap in gtestsuite.
- Correct test name in ddotxf gtestsuite program.

AMD-Internal: [CPUPL-4415]
Change-Id: I69ad56390017676cc609b4d3aba3244a2df6a6b5
2024-08-06 06:56:01 -04:00
Hari Govind S
d349f89df6 Fix warning caused by dscalv
-  Setting the value for ST_THRESH for default
   code path in dscalv API to avoid warning
   message.

Change-Id: I8ace2070350267904faa498197b8356de9af58d1
2024-08-06 12:13:23 +05:30
Edward Smyth
89f52a6df5 Code cleanup: spelling corrections
Corrections for spelling and other mistakes in code comments
and doc files.

AMD-Internal: [CPUPL-4500]
Change-Id: I33e28932b0e26bbed850c55602dee12fd002da7f
2024-08-05 16:18:51 -04:00
Edward Smyth
82bdf7c8c7 Code cleanup: Copyright notices
- Standardize formatting (spacing etc).
- Add full copyright to cmake files (excluding .json)
- Correct copyright and disclaimer text for frame and
  zen, skx and a couple of other kernels to cover all
  contributors, as is commonly used in other files.
- Fixed some typos and missing lines in copyright
  statements.

AMD-Internal: [CPUPL-4415]
Change-Id: Ib248bb6033c4d0b408773cf0e2a2cda6c2a74371
2024-08-05 15:35:08 -04:00
Nallani Bhaskar
e712673ab7 Peformance fixes for gcc compiler in fringe kernels
Description:
1. GCC avoiding loading b into registers in m fringe
   kenrels of int8 kernels. Instead gcc generating
   fma with memory as an operand for B input.

2. This is causing performance regression for larger n
   where each fma needs to load the input from memory
   again and again.

3. This is observed with gcc but not with clang.

4. Inserted dummy shuffle instructions for b data to
   further explicitly tell compiler that b needs to be in
   registers.

   AMD-Internal: SWLCSG-2948

Change-Id: Ibbf186fe6569e6265e2c2bb4ec3141ef323ea3e6
2024-08-05 14:31:22 -04:00
Edward Smyth
09c45525f4 Missing early returns (2)
Add missing early return in axpyv.

AMD-Internal: [CPUPL-5540]
Change-Id: I522fd6f5551a4dab24e8c164fa38818c900b89f8
2024-08-05 12:18:33 -04:00
Edward Smyth
591a3a7395 Code cleanup: file formats and permissions
- Remove execute file permission from source and make files.
- dos2unix conversion.
- Add missing eol at end of files.

Also update .gitignore to not exclude build directory but to
exclude any build_* created by cmake builds.

AMD-Internal: [CPUPL-4415]
Change-Id: I5403290d49fe212659a8015d5e94281fe41eb124
2024-08-05 11:52:33 -04:00
mkadavil
9f5fec7713 Matrix MUL op support in element wise operations API for bfloat16.
-Matrix MUL op support added in main as well as fringe bfloat16 element
wise operations kernels.
-Benchmarking/testing framework for the same is added.
-Fixed issues in setting up post-ops node index.

AMD Internal: [SWLCSG-2947, SWLCSG-2953]

Change-Id: Iba7561a6a60df41211efbf06fab1b4900207bcf8
2024-08-05 08:29:42 +05:30
Edward Smyth
b964308e50 GTestSuite: option to check input arguments
Add tests to check input arguments have not been modified by BLIS
routine. These tests add a large runtime overhead, so they are
disabled by default. To enable them, configure gtestsuite with:

    cmake -DTEST_INPUT_ARGS=ON ...

and run desired tests as normal.

Also:
- Correct testinghelpers::chktrans to handle upper case values of
  argument trns.
- Change testinghelpers::matsize to return size 0 if m, n or
  leading dimension are 0, or if leading dimension is too small.

AMD-Internal: [CPUPL-4379]
Change-Id: I9494af800f9383195272ce99f622104a38fd0ed8
2024-08-05 09:58:17 -04:00
Edward Smyth
6393cb9d7c GTestSuite: misc corrections 3
- Set threshold to epsilon for early return cases where we are just
  scaling a matrix.
- Add this threshold to IIT_ERS files for appropriate tests.
- In IIT_ERS for gemm_compute, remove tests on null A and B when
  we are expecting to set or scale C. More thought is required
  in gemm_compute tests to handle these cases and look at cases
  where A or B has been packed.

AMD-Internal: [CPUPL-4500]
Change-Id: Ia649cc340ca1df6511388f9c43a31e53296cb2bf
2024-08-05 09:31:18 -04:00
Deepak Negi
80bf6249f0 Matrix MUL post-operation support for float(bf16|f32) LPGEMM APIs.
This post-operation computes C = (beta*C + alpha*A*B) * D, where D
is a matrix with dimensions and data type the same as that of C matrix.

AMD-Internal: [SWLCSG-2953]

Change-Id: Id4df2ca76a8f696cb16edbd02c25f621f9a828fd
2024-08-05 08:25:32 -04:00
Nallani Bhaskar
4c2f436cce Peformance fixes for gcc compiler in fringe kernels
Description:
1. GCC avoiding loading b into registers in m fringe
   kenrels of int8 kernels. Instead gcc generating
   fma with memory as an operand for B input.

2. This is causing performance regression for larger n
   where each fma needs to load the input from memory
   again and again.

3. This is observed with gcc but not with clang.

4. Inserted dummy shuffle instructions for b data to
   further explicitly tell compiler that b needs to be in
   registers.

5. Moved packb_s4_to_bf16 under JIT macro to resovle
   compilation  issue with gcc version < 11.2

AMD-Internal: SWLCSG-2948

Change-Id: I5bd1bad7ad129e0dde91ed78d49a4ede3bff456a
2024-08-05 08:13:06 -04:00
mkadavil
f040ba617f Element wise operations API for bfloat16 input matrix in LPGEMM.
-This API supports applying element wise operations (eg: post-ops) on a
bfloat16 input matrix to get an output matrix of the same(bfloat16) or
upscaled data type (float).
-Benchmarking/testing framework for the same is added.

AMD Internal: SWLCSG-2947

Change-Id: I43f1c269be1a1997d4912d8a3a97be5e5f3442d2
2024-08-05 07:17:08 -04:00
Shubham Sharma.
dac0524ac8 BugFix in AVX512 DGEMMT SUP ST RRC variant
- C<- alpha * op(A) *op(B) + beta *C.
  C(nxn) - A(n x k) * B(k x n)
  For ZEN4 and ZEN5
  DGEMM is col-preferred kernel
  DGEMMT = DGEMM + DGEMMT
  DGEMM is col-preferred and DGEMMT is row-preferred.
  DGEMM is evaluated as C = A*B (all col-storage)
  whereas DGEMMT is evaluated as C = B * A (row-storage).
  When A is packed it is packed as row-panels with col-stored elements.
  So DGEMM is evaluated as C = A*B (A is col-stored) it aligns
  with col-stored preference.
  For DGEMMT: C = B * A, here A will become col-stored
  because of packingand as result it will break the DGEMMT
  kernel assumption that A is row-storage.
- Fixed this by disabling this optimization for ZEN4
  and ZEN5.

AMD-Internal: [CPUPL-5542}
Change-Id: I9645624be009d1050ecb908d65c04aadcfa04379
2024-08-05 05:21:24 -04:00
Eleni Vlachopoulou
7d379c7879 Using znver2 flags for building zen/zen2/zen3 kernels on amdzen builds.
config => config/build/arch folder

Issue:

  1. Performance drop is observed as part of the fat binary(amdzen config)
     built to support all the platforms using dynamic dispatch feature.
  2. Observed only in intrinsic code and not in assembly code.
  3. Observed in many of level1 kernels on Milan and Genoa

Previous Design:

Znver flags are picked based on config or function name

In case of ref_kernels:
   Compiler picks up znver flag based on the function name. All
   ref_kernels are named based on BLIS_CNAME which is a
   config name (zen, zen2, zen3, zen4, zen5)
In case of Zen kernels:
   Compiler picks up znver flag based on the config name where the
   source file exists. All avx2 kernels are placed in zen and all avx512
   kernels are placed in zen4/zen5 folder.

   Kernels placed in zen (AVX2 kernels) are being compiled with znver1
   flag rather than using znver2/znver3 flags on  zen2/zen3 arch
   respectively

New Design: For amdzen builds

  1. For ref_kernels and kernels/(zen/zen2/zen3), znver2 flag is used instead of
     znver1 in make and cmake build system.
  2. To use znver2 flags, make_defs.mk of zen2 is included in zen config
  3. No changes are made for auto or any individual config
  4. Significant perfomance improvement is observed

AMD-Internal : [CPUPL-5407] [CPUPL-5406] [CPUPL-4873]  [CPUPL-4872] [CPUPL-4871]  [CPUPL-4801] [CPUPL-4800] [CPUPL-4799]

Change-Id: Ie817c13b8b69a2dc4328aad7ae09a3af06f83df5
2024-08-05 14:27:01 +05:30
Arnav Sharma
0a5c057475 DGEMV Optimizations for Tiny Sizes
- Added reference kernel for dgemv that handles computation for tiny
  sizes (m < 8 && n < 8).

- The reference kernel, bli_dgemv_zen_ref( ... ), supports both
  row/column storage schemes as well as transpose and no transpose
  cases.

- Added additional unit-tests for functional verification.

AMD-Internal: [CPUPL-5098]
Change-Id: I66fdf0a40e90bdb3fed40152c45ab28a17a87ada
2024-08-05 12:19:42 +05:30
Hari Govind S
3ae466697b Fixed performance drop of multi-threaded dscalv
-  Avoid performance degradation of dscalv for ST when OpenMP is enabled
   by using fast-path to skip the overhead caused by 'bli_nthreads_l1'
   function if the input size is less than a particular threshold.

-  Replaced 'bli_thread_vector_partition' work distribution function
   with 'bli_thread_range_sub'.

AMD-Internal: [CPUPL-5522]
Change-Id: I4ad0041d6e448c4a26fcd47ce44e0321a41b8b9f
2024-08-05 01:51:30 -04:00
Varaganti, Kiran
145e706992 Fixed auxiliary cache block sizes for Native and SUP DGEMM kernels for ZEN4 and ZEN5 configs.
Auxiliary blocksize values for cache blocksizes are interpreted as the maximum cache blocksizes. The maximum cache blocksizes are a convenient and portable way of smoothing performance of the level-3 operations when computing with a matrix operand that is just slightly larger than a multiple of the preferred cache blocksize in that dimension. In these "edge cases," iterations run with highly sub-optimal blocking. We can address this problem by merging the "edge case" iteration with the second-to-last iteration, such that the cache blocksizes are slightly larger--rather than significantly smaller--than optimal. The maximum cache blocksizes allow the developer to specify the maximum size of this merged iteration; if the edge case causes the merged iteration to exceed this maximum, then the edge case is not merged and instead it is computed upon in separate (final) iteration. (https://github.com/flame/blis/blob/master/docs/ConfigurationHowTo.md).
      In bli_cntx_init_zen4 and zen5 - auxiliary blocksize for KC was less than primary blocksize. These are fixed.
      Code-cleanup of the files bli_family_zen4, zen5.h" Removed unused constants.
Thanks to Igor Kozachenko <igork@berkeley.edu> for pointing out these two bugs.

Change-Id: I44fc564d5d91cb978d062c413e70751aeaa07f2c
2024-08-05 10:29:43 +05:30
Hari Govind S
f2acd4fd49 AOCL Dynamic for zen3 dcopy
-  Create seperate AOCL Dynamic values for
   multithreading dcopy API for zen1, zen2 and zen3

AMD-Internal: [CPUPL-5238]
Change-Id: I42f56393716edeeace8bfe71d7adab0ba7325b47
2024-08-05 00:44:14 -04:00
Vignesh Balasubramanian
9843bd0317 Tuning the decision logic to choose SUP vs Native for ZGEMM
- Added an additional decision logic to choose between SUP and
  Native paths for zen4 and zen5 micro-architectures, based on
  the input dimensions. This logic has been added to the
  architecture-specific thresholds functions, that are registered
  in the context.

- The decision logic will overrule the discrete thresholds present
  in the zen4 and zen5 contexts.

AMD-Internal: [CPUPL-5547]
Change-Id: I475f19b110064b3b9eef2e03bbdc21f4dd826c03
2024-08-03 19:08:07 +05:30
Ruchika Ashtankar
bdb94fb218 GTestSuite: Added tests for DGEMM SUP kernel
- Added dgemmGenericSUP test for the new 24x8 DGEMM SUP kernel for zen5.

AMD-Internal: [CPUPL-4404]
Change-Id: I150ca310655a495bdcf5ea9d5a16746483a17b68
2024-08-02 11:37:29 -04:00
Edward Smyth
0151ea748a Missing early returns
Add missing early returns in amax, asum, gemm_compute and gemv.

AMD-Internal: [CPUPL-5540]
Change-Id: I3ed682cae954331e48da5e8ef5c7f27dd4f11c5e
2024-08-02 10:16:19 -04:00
Mangala V
0a4f9d5ac1 Removed -fno-tree-loop-vectorize from kernel flags
- This change in made in MAKE build system.
- Removed -fno-tree-loop-vectorize from global kernel flags,
  instead added it to lpgemm specific kernels only.
- If this flag is not used , then gcc tries to auto
  vectorize the code which results in usages of
  vector registers, if the auto vectorized function
  is using intrinsic then the total numbers of vector
  registers used by intrinsic and auto vectorized
  code becomes more than the registers
  available in machine which causes read and writes
  to stack, which is causing regression in lpgemm.
- If this flag is enabled globally, then the files which
  do not use any intrinsic code do not get auto
  vectorized.
- To get optimal performance for both blis and lpgemm,
  this flag is enabled for lpgemm kernels only.

Previous commit (75df1ef218) contains
similar changes on cmake build system

AMD-Internal: [CPUPL-5544]

Change-Id: I796e89f3fb2116d64c3a78af2069de20ce92d506
2024-08-02 09:40:06 -04:00
Moripalli Chitra
448702a1b4 Coverity issue fix
Out-of-bound access fix in malloc failure case for following APIs: ddot_, zdotc_, zdotu_

AMD-Internal: [CPUPL-4686]
Change-Id: I676697223604fbb2a8d03421d98ed0d8d706f8c7
2024-08-02 09:31:38 -04:00
Shubham Sharma
0d95fcf20c Revert "DGEMM Native AVX512 updates"
This reverts commit f378fc57b5.

Reason for revert: Causing Failure

AMD-Internal: [CPUPL-5262]
Change-Id: I15860eabf2461fae3d0f7cedd436d4db2df5b82f
2024-08-02 07:32:28 -04:00
Moripalli Chitra
8b486e8d14 Added new decision logic to choose between 6x8 dgemm kernel vs 24x8 kernel. The decision is based on the values of "m, n and k".
Change-Id: I307ff002797ccef5bd61106b808cecb069b91fd6
2024-08-02 14:18:58 +05:30
Ruchika Ashtankar
92fbd04238 DGEMM SUP Optimizations for Turin
- Introduced a new 24x8 column preferred DGEMM sup kernel for zen5.
- A prefetch logic is modified compared to zen4 24x8 sup kernels.
- Earlier, next panel of A is prefetched into L2 cache,
  which is now modified to prefetching the second next column
  of the current panel of A into L1 cache.
- B and C prefetches are enabled and unchanged.
- Tuned MC, KC and NC block sizes for new kernel.

AMD-Internal: [CPUPL-5262]
Change-Id: If933537e50f43f5560e0fe18a716aa1e36ced64d
2024-08-02 04:00:51 -04:00
Ruchika Ashtankar
5760e06100 Threshold tuning for DGEMM SUP for zen5
- New Decision threshold constants are added to decide between
double precision sup vs native dgemm code-path for zen5 processors.
- The decision is based on the values of m, n and k.

AMD-Internal: [CPUPL-5262]
Change-Id: I87b8ff9eb603d6fda0875e000f7ab83b22d22040
2024-08-02 11:34:32 +05:30
Shubham Sharma.
45d82a1ebf Threshold tuning for DTRSM on zen5
- Added new decision logic to choose between
  native TRSM vs unpacked small TRSM for
  double precision.
- The changes are made for zen5 processor.

AMD-Internal: [CPUPL-5534]
Change-Id: I5204f6df111edec27d006daeb1c2b535a67b3e46
2024-08-01 11:27:28 -04:00
Vignesh Balasubramanian
4ec2bad744 Updating reduction step of AVX512 DNRM2 API
- Updated the final reduction of partial sums to use scalar accumulation
  entirely, instead of using the _mm512_reduce_add_pd( ... ) intrinsic.
  This will in turn change the associativity and the rounding-off
  pattern in the reduction step.

- Defined a union data-type to do the same, by having a 512-bit
  register and a double-precision array as its members.

- Updated the declaration and usage of the register variable according
  to the union definition, for uniformity.

AMD-Internal: [CPUPL-5472]
Change-Id: I997464a6ec47e4054dca48a000fbd4ac0cfcc679
2024-08-01 17:09:17 +05:30
Edward Smyth
75f21182bd GTestSuite: IIT and ERS test improvements
Various improvements:
- Where appropriate, test both:
  - with nullptr for suitable arguments that should never
    be touched.
  - with all arguments correct except the one we want to
    test, to check we are not returning early because
    another argument is a nullptr.
- Test incorrect values for order argument in CBLAS calls.
- Test early exits with limited data changes, e.g. set
  C to 0 or scale C in GEMM when alpha = 0.
- Bugfix in gemmt test when alpha is 0 and beta is 1.
- Use reference library gemmt for comparison when library
  is not netlib BLAS.

AMD-Internal: [CPUPL-4500]
Change-Id: Ibde7eaba5a484a87674044ca44855c6f6ee4ff4b
2024-07-31 15:36:01 -04:00
Shubham Sharma.
f378fc57b5 DGEMM Native AVX512 updates
- In the initial patch - for m, n non-multiple of MR and NR
  respectively we are calling bli_dgemm_ker_var2. Now we have
  implemented macro-kernel for these fringe cases as well.
- Replaced RBP register with R11 in the macro-kernel.
- Retuned MC, KC and NC with these new changes.
  This will result in better performance for matrix sizes
  like m=4000 or greater when running on single thread.


AMD-Internal: [CPUPL-5262]
Change-Id: I66c111ceb7feee776703339680d57e8d6d5c809a
2024-07-31 12:23:34 -04:00
Eleni Vlachopoulou
20d6a9a9f3 CMake: Add installation of .pc files.
AMD-Internal: [CPUPL-4938]
Change-Id: Iaf1ad702e61d8a81ee9ae6496ff3ba0dda21eceb
2024-07-31 11:54:57 -04:00
Vignesh Balasubramanian
f23b8e636b AVX2 and AVX512 optimizations for DAXPYV
- Removed some of the unrolling factors that affected the
  performance of AVX2 DAXPYV kernel. In addition to improving
  the current performance on sizes compatible to single-threaded
  runs, this will now perform better for tiny sizes as well
  since the overhead to reach the computation is less.

- Updated the vector partitioning logic, by using
  bli_thread_range_sub( ... ), which ensures that there is no
  false sharing among multiple threads.

- Updated the AOCL-DYNAMIC logic for the API, to include thresholds
  or zen4 and zen5 micro-architectures.

AMD-Internal: [CPUPL-5514]
Change-Id: Iee9edddac685334213cd6694421ab3df3547e930
2024-07-31 09:24:36 -04:00
Hari Govind S
e2e95a09b0 Fixing missing registers in end_asm for copyv APIs
-  Added the missing registers in end_asm for scopy,
   dcopy and zcopy APIs.

-  Removed unnecessary registers from end_asm for scopy
   and dcopy APIs.

-  Corrected mistakes in the comments.

Change-Id: I5ebe2ff9cb2c72ca7c71a67419281f73462f9498
2024-07-30 15:09:52 +05:30
Meghana Vankadari
d5b4d3aa5e Fixing control flow in aocl_gemm_bf16s4f32of32|bf16
- Fixed framework of bf16s4f32of32 API to correct
  pointer updations.
- Modified pre_op structure to exclude pre-op-offset.
  Now offset is passed as a separate parameter to the
  scale-pack functions.
- Fixed work-distribution among threads in MT scenario.
- Added Blocksizes and kernel-pointers and verified
  functionality for the new API.

AMD-Internal: [SWLCSG-2943]
Change-Id: I58fece240d62c798c880a2b2b7fa64e560cc753d
2024-07-29 05:12:09 -04:00
Edward Smyth
b90e12dfa4 GTestSuite: copyright notice
Standardize format of copyright notice.

AMD-Internal: [CPUPL-4500]
Change-Id: I6bde64c15ff639492dd0de95423c660112a37e2c
2024-07-26 15:34:41 -04:00