llvm-project/polly/lib
Roman Gareev be5299af0b Change the determination of parameters of macro-kernel
Typically processor architectures do not include an L3 cache, which means that
Nc, the parameter of the micro-kernel, is, for all practical purposes,
redundant ([1]). However, its small values can cause the redundant packing of
the same elements of the matrix A, the first operand of the matrix
multiplication. At the same time, big values of the parameter Nc can cause
segmentation faults in case the available stack is exceeded.

This patch adds an option to specify the parameter Nc as a multiple of
the parameter of the micro-kernel Nr.

In case of Intel Core i7-3820 SandyBridge and the following options,

clang -O3 gemm.c -I utilities/ utilities/polybench.c -DPOLYBENCH_TIME
-march=native -mllvm -polly -mllvm -polly-pattern-matching-based-opts=true
-DPOLYBENCH_USE_SCALAR_LB -mllvm -polly-target-cache-level-associativity=8,8
-mllvm -polly-target-cache-level-sizes=32768,262144 -mllvm
-polly-target-latency-vector-fma=8

it helps to improve the performance from 11.303 GFlops/sec (39,247% of
theoretical peak) to 17.896 GFlops/sec (62,14% of theoretical peak).

Refs.:

[1] - http://www.cs.utexas.edu/users/flame/pubs/TOMS-BLIS-Analytical.pdf

Reviewed-by: Tobias Grosser <tobias@grosser.es>

Differential Revision: https://reviews.llvm.org/D28019

llvm-svn: 290256
2016-12-21 12:51:12 +00:00
..
Analysis Fix clang-format 2016-12-19 14:06:40 +00:00
CodeGen Align newly created arrays to the first level cache line boundary 2016-12-21 12:37:36 +00:00
Exchange Perform copying to created arrays according to the packing transformation 2016-09-14 06:26:09 +00:00
External Update to isl-0.17.1-314-g3106e8d 2016-12-06 14:37:39 +00:00
JSON Fix spacing around variable initializations and for-loops. NFC. 2016-08-09 17:49:24 +00:00
Support Add isl_multi_pw_aff to GICHelper 2016-12-16 23:41:26 +00:00
Transform Change the determination of parameters of macro-kernel 2016-12-21 12:51:12 +00:00
CMakeLists.txt [DeLICM] Add pass boilerplate code. 2016-11-29 16:41:21 +00:00
Polly.cpp Drop '@brief' from doxygen comments 2016-09-02 06:33:33 +00:00