Go to file
Roman Gareev bd5c6039c6 Align newly created arrays to the first level cache line boundary
Aligning data to cache lines boundaries helps to avoid overheads related to
an access to it ([1]). This patch aligns newly created arrays and adds an
option to specify the first level cache line size. By default we use 64 bytes,
which is a typical cache-line size ([2]).

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 12.63 GFlops/sec (43,8542% of theoretical peak).

Refs.:

[1] - http://www.alexonlinux.com/aligned-vs-unaligned-memory-access
[2] - http://igoro.com/archive/gallery-of-processor-cache-effects/

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

Reviewed-by: Tobias Grosser <tobias@grosser.es>
llvm-svn: 290253
2016-12-21 12:37:36 +00:00
clang Rename several methods on ASTRecordReader to follow LLVM style (lowerCamelCase). 2016-12-21 04:34:52 +00:00
clang-tools-extra Comment out char16_t and char32_t tests 2016-12-20 22:57:21 +00:00
compiler-rt Reduce the size of quarantine cache in ASAN_LOW_MEMORY configuration. 2016-12-21 00:18:10 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc Fix build since r286752. 2016-11-14 16:06:33 +00:00
libcxx [CMake] Fix issue reported on sanitizer bots 2016-12-17 21:28:24 +00:00
libcxxabi [libc++abi] Mark failing test on Darwin as XFAIL 2016-12-13 02:43:04 +00:00
libunwind EHABI: mark some functions as exported 2016-11-17 23:53:35 +00:00
lld [ELF/tests] Use cpio -it instead of cpio -t. 2016-12-21 12:22:19 +00:00
lldb Ignore SIGPIPE in the mini-driver used by these tests. 2016-12-21 00:12:54 +00:00
llgo [llgo] Remove support for LLVM attributes 2016-12-06 19:22:04 +00:00
llvm Added a template for building target specific memory node in DAG. 2016-12-21 10:43:36 +00:00
openmp Reverting last change. 2016-12-21 09:04:08 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly Align newly created arrays to the first level cache line boundary 2016-12-21 12:37:36 +00:00