Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 1.6 #79

Merged
merged 119 commits into from
Jun 21, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
888b83b
runtime restructure (#49)
sebastiankreutzer Jan 18, 2021
709076f
filter: whitelist important functions (#54)
ahueck Jan 28, 2021
886420c
fix bug with stringref temp being invalid
ahueck Jan 28, 2021
94836e6
fix lifetime issue with stringref
ahueck Jan 28, 2021
d69d1cb
Make runtime thread safe
sebastiankreutzer Jan 18, 2021
bdf2486
Introduce shared_mutex
sebastiankreutzer Jan 20, 2021
8e42a5e
Minimize lock scope
sebastiankreutzer Jan 22, 2021
5dffa3f
Add rudimentary multithreading tests
sebastiankreutzer Jan 22, 2021
4a3385b
Avoid tracking allocations from within runtime constructor/destructor…
sebastiankreutzer Jan 22, 2021
dd46136
Formatting
sebastiankreutzer Jan 22, 2021
d8f0557
add build system support for openmp
ahueck Jan 12, 2021
a1622a7
[WIP] make filter understand outlined omp code
ahueck Jan 15, 2021
86f3566
make basefilter aware of omp
ahueck Jan 17, 2021
8787893
add omp specific callbacks to pass
ahueck Jan 17, 2021
ce958a5
do not dump whole function
ahueck Jan 18, 2021
a8991d9
towards omp task compat
ahueck Jan 19, 2021
492f0f4
try handle errorneous filter with omp_task_alloc
ahueck Jan 21, 2021
5143dd0
filter pointer allocas holding f params
ahueck Jan 21, 2021
87260f6
misc test change
ahueck Jan 21, 2021
24732f5
fix bug: wrongly placed return
ahueck Jan 22, 2021
2234c53
fix bug: isTempAlloc used wrong type for check
ahueck Jan 22, 2021
d4421be
add more tests
ahueck Jan 22, 2021
7effc1d
make omp tests more specific
ahueck Jan 22, 2021
9b7c64c
misc fix of comment/log
ahueck Jan 22, 2021
6c3a05e
nested omp sharing tests
ahueck Jan 25, 2021
7e99ab1
combine first and last priv sharing
ahueck Jan 25, 2021
e6f551a
add omp callbacks introduced by pass to rt
ahueck Jan 25, 2021
68af103
avoid expensive filter op in non-omp context
ahueck Jan 26, 2021
2adad40
some cleanups, omp task struct test
ahueck Jan 26, 2021
5f2b6bd
add script/lit suite support for pthreads; add omp rt tests
ahueck Jan 26, 2021
4173e23
preload actual mpi_interceptor lib
ahueck Jan 26, 2021
a0a43e4
softcounter depedency for certain tests
ahueck Jan 26, 2021
b689b09
fix tests failing due to order of logs
ahueck Jan 27, 2021
6be1f67
softcounter: track calls from omp; fix flaky rt test 22
ahueck Jan 28, 2021
89e5a00
use call-filter in test 27
ahueck Jan 28, 2021
77134be
fix omp-related bugs w.r.t. lulesh and amg
ahueck Feb 2, 2021
ccbebff
runtime singleton (#55)
ahueck Feb 4, 2021
678aa63
merge devel
ahueck Feb 4, 2021
789b350
filter whitelist changes; dbg output fixed
ahueck Feb 4, 2021
9efaca0
Add member to set rtScope before RT is initalized
sebastiankreutzer Feb 5, 2021
885cc1b
fix test runtime/27; format rt tests
ahueck Feb 5, 2021
0141d6c
Fix alloc calls coming from within type check context. Improve guard …
sebastiankreutzer Feb 5, 2021
4e6c4e5
Minor changes to runtime guard
sebastiankreutzer Feb 9, 2021
d3e72e3
Formatting, code style
sebastiankreutzer Feb 9, 2021
22f8178
Runtime guard flag to avoid recursive rt operations (#56)
ahueck Feb 9, 2021
e8655c3
Fix runtime guard (#57)
sebastiankreutzer Feb 9, 2021
bce5ba9
Add safe_ptr dependency
sebastiankreutzer Feb 4, 2021
2a92c08
Apply safe_ptr for runtime thread-safety
sebastiankreutzer Feb 4, 2021
56a729d
Set rtScope directly in order to prevent any tracking during destruction
sebastiankreutzer Feb 9, 2021
c536090
Add thread-based counters
sebastiankreutzer Feb 10, 2021
5c769af
Fix remaining failing tests
sebastiankreutzer Feb 11, 2021
aebdb1a
Improve thread counter output
sebastiankreutzer Feb 18, 2021
5847b08
Add thread softcounters test
sebastiankreutzer Feb 18, 2021
6dff81f
Add tsan option
sebastiankreutzer Feb 17, 2021
98a09cd
Add tsan option
sebastiankreutzer Feb 17, 2021
7436f25
Enable tsan for mpi_interceptor and lulesh integration test
sebastiankreutzer Mar 8, 2021
07e3f78
Enable tsan for mpi_interceptor and lulesh integration test
sebastiankreutzer Mar 8, 2021
d3ce1f3
Fix RT constuctor to correctly reset value of rtScope
sebastiankreutzer Mar 8, 2021
a1fb2f7
Fix RT constuctor to correctly reset value of rtScope
sebastiankreutzer Mar 8, 2021
0f14bc2
towards making safe_ptr optional; thread counter always printed
ahueck Mar 25, 2021
1457eb4
wrap safe_ptr feat.; cmake improvement
ahueck Mar 26, 2021
d6be565
test support random order
ahueck Mar 26, 2021
e80e2b5
iwyu
ahueck Mar 26, 2021
0cda39d
make interceptor thread safe
ahueck Mar 26, 2021
313ff53
gitignore, unify table headers
ahueck Mar 26, 2021
15f6d03
TSAN ignore flag active only with omp; new test
ahueck Mar 26, 2021
8b576c4
crtp -> mixin
ahueck Mar 26, 2021
7396d07
protected bulk map operation(s)
ahueck Mar 26, 2021
5d25f11
protected inheritance
ahueck Mar 26, 2021
58dae06
support thread-unsafe rt map; make test check flag
ahueck Mar 29, 2021
33666e3
fix dep. option
ahueck Mar 29, 2021
96016a5
fix semantically broken tests
ahueck Mar 30, 2021
8e8e515
safe_ptr default off; refactor tests
ahueck Apr 1, 2021
69b4838
try fix for missing install in ext-ci
ahueck Apr 1, 2021
a76a750
Merge PR #61 from feat/safe_ptr
ahueck Apr 1, 2021
0d83f2a
Merge branch 'devel' into feat/omp
ahueck Apr 1, 2021
443bcca
allow manual/direct typeart use in tests
ahueck Apr 3, 2021
64d9594
extended lit testing; fixes #63
ahueck Apr 5, 2021
a6d441a
remove stl dep. closes #58 and fix #60
ahueck Apr 5, 2021
39ae7ce
fix test regex
ahueck Apr 5, 2021
2c7b895
enhance CI, see #35
ahueck Apr 5, 2021
0780981
more tests for alloctracker
ahueck Apr 6, 2021
4491571
resolve UB, fixes #65
ahueck Apr 6, 2021
af8fffd
support sanitizers
ahueck Apr 6, 2021
866b84e
run sanitizer in ci
ahueck Apr 6, 2021
b3be8ca
format demo
ahueck Apr 6, 2021
1f07ee7
iwyu, format .clang-format
ahueck Apr 7, 2021
8766f1f
ubsan no recover; check for tsan warn in tests
ahueck Apr 7, 2021
9a4e7e2
extend tests
ahueck Apr 8, 2021
a3c27c4
test and fix for #67
ahueck Apr 8, 2021
e279a17
format tests
ahueck Apr 8, 2021
eb19be5
set default value in script
ahueck Apr 14, 2021
f29991e
unknown types not instrumented
ahueck Apr 14, 2021
a15067b
fix test w.r.t. asan
ahueck Apr 14, 2021
1f554ed
Merge PR #68 from feat/testing
ahueck Apr 15, 2021
870e4ab
Merge PR #69 from feat/omp
ahueck May 5, 2021
d40d567
Implement detection of array cookies
alexanderlinne May 7, 2021
7781f78
add array cookies to MallocData
alexanderlinne May 7, 2021
1afdc89
install scripts (#72)
ahueck May 10, 2021
020c81d
refactor MemOpVisitor::visitMallocLike
alexanderlinne May 10, 2021
65684d7
add tests for padded and unpadded array cookies
alexanderlinne May 10, 2021
1a88ce0
share typeart-no-heap and typeart-alloca args
alexanderlinne May 10, 2021
0817a3a
add array cookie handling to the instrumentation
alexanderlinne May 10, 2021
08254d8
fix tests
alexanderlinne May 10, 2021
22d8b4f
add test for array cookies of dynamically sized arrays
alexanderlinne May 10, 2021
eabaac9
remove wrong comments from array cookie tests
alexanderlinne May 10, 2021
2931463
fix formatting
alexanderlinne May 10, 2021
650b1a3
instrument actual array address
alexanderlinne May 11, 2021
69dfe8d
add runtime array cookie test
ahueck May 11, 2021
26db6cd
fix array cookie handling with asan
ahueck May 11, 2021
b143701
fix code styling issues
alexanderlinne May 11, 2021
32a498f
improve error handling using a declarative approach
alexanderlinne May 12, 2021
4e4cc35
fix tests w.r.t. ci runner (#74)
ahueck May 18, 2021
ca0d874
Merge branch 'devel' into feat/array_cookies
alexanderlinne May 18, 2021
2ac2839
improve macro naming and fix spelling errors
alexanderlinne May 18, 2021
c31ff97
merge error macros
ahueck May 18, 2021
d25f5cb
Merge branch 'devel' into feat/array_cookies
ahueck May 18, 2021
15b4efc
Merge PR #73 from feat/array_cookies
ahueck May 18, 2021
0a5d109
Release 1.6 (#78)
ahueck Jun 18, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
Language: Cpp
Language: Cpp
# BasedOnStyle: Google
AccessModifierOffset: -1
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: true
AlignEscapedNewlinesLeft: true
AlignOperands: true
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
Expand All @@ -20,7 +20,7 @@ BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BinPackParameters: true
BinPackArguments: true
ColumnLimit: 120
ColumnLimit: 120
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
DerivePointerAlignment: false
Expand All @@ -43,31 +43,31 @@ PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Left
SpacesBeforeTrailingComments: 2
Cpp11BracedListStyle: true
Standard: Cpp11
IndentWidth: 2
TabWidth: 2
UseTab: Never
Standard: Cpp11
IndentWidth: 2
TabWidth: 2
UseTab: Never
BreakBeforeBraces: Attach
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpacesInAngles: false
SpacesInAngles: false
SpaceInEmptyParentheses: false
SpacesInCStyleCastParentheses: false
SpaceAfterCStyleCast: false
SpacesInContainerLiterals: true
SpaceBeforeAssignmentOperators: true
ContinuationIndentWidth: 4
CommentPragmas: '^ IWYU pragma:'
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
CommentPragmas: '^ IWYU pragma:'
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
SpaceBeforeParens: ControlStatements
DisableFormat: false
DisableFormat: false
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
- Regex: '<[[:alnum:].]+>'
Priority: 4
- Regex: '.*'
Priority: 1
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
- Regex: '<[[:alnum:].]+>'
Priority: 4
- Regex: '.*'
Priority: 1
161 changes: 131 additions & 30 deletions .github/workflows/basic-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,109 @@ on:
branches: [ master, devel ]
pull_request:

env:
CXX: clang++-10
CC: clang-10
EXTERNAL_LIT: /usr/lib/llvm-10/build/utils/lit/lit.py
OMP_NUM_THREAD: 2

jobs:
build-and-run-test:
format-check:
runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v2

- name: Format source code
run: |
find demo lib test \
-type f \
-a \( -name "*.c" -o -name "*.cpp" -o -name "*.h" \) \
-not -path "*/lulesh/*" \
-print0 \
| xargs -0 clang-format-10 -i

- name: List newly formatted files
run: git status --porcelain --untracked-files=no

- name: Check format
run: git status --porcelain --untracked-files=no | xargs -o -I {} test -z \"{}\"

lit-suite:
runs-on: ubuntu-20.04
if: "!contains(github.event.head_commit.message, '[ci skip]')"
strategy:
fail-fast: false
matrix:
config:
- {
name: Thread-safe-safeptr,
build_type: Debug,
safe_ptr: true,
tsan: true,
}
- {
name: Thread-safe,
build_type: Debug,
safe_ptr: false,
tsan: true,
}
- {
name: Thread-unsafe,
build_type: Debug,
thread_unsafe: true,
tsan: false,
}
- {
name: Coverage-thread-safe-safeptr,
build_type: Debug,
safe_ptr: true,
coverage: true,
tsan: false,
}
- {
name: Coverage-thread-safe,
build_type: Debug,
safe_ptr: false,
coverage: true,
tsan: false,
}
- {
name: Coverage-thread-unsafe,
build_type: Debug,
thread_unsafe: true,
coverage: true,
tsan: false,
}
- {
name: Thread-safe-libc++,
build_type: Debug,
cxxflags: -stdlib=libc++,
skip_test: true,
tsan: true,
}

steps:
- uses: actions/checkout@v2

- name: Install LLVM
run: sudo apt-get install libllvm10 llvm-10 llvm-10-dev

- name: Install LLVM OpenMP runtime
run: sudo apt-get install libomp-10-dev libomp5-10

- name: Install Clang
run: sudo apt-get install clang-10 clang-tidy-10

- name: Install libc++
if: contains(matrix.config.cxxflags, '-stdlib=libc++')
run: sudo apt-get install --no-install-recommends libc++-10-dev libc++abi-10-dev

- name: Install OpenMPI
run: sudo apt-get install libopenmpi-dev openmpi-bin

- name: Install lcov
if: matrix.config.coverage
run: sudo apt-get install lcov

- name: Setup env
Expand All @@ -32,49 +118,64 @@ jobs:
sudo ln -f -s /usr/bin/FileCheck-10 /usr/bin/FileCheck
sudo ln -f -s /usr/bin/llc-10 /usr/bin/llc
sudo ln -f -s /usr/bin/clang-tidy-10 /usr/bin/clang-tidy
echo "CC=clang-10" >> $GITHUB_ENV
echo "CXX=clang++-10" >> $GITHUB_ENV
echo "EXTERNAL_LIT=/usr/lib/llvm-10/build/utils/lit/lit.py" >> $GITHUB_ENV

- name: Build TypeART
- name: Configure TypeART
run: |
cmake -B build -DTEST_CONFIG=ON -DENABLE_CODE_COVERAGE=ON -DSOFTCOUNTERS=ON -DLLVM_EXTERNAL_LIT=${EXTERNAL_LIT}
cmake --build build --parallel
cmake -B build \
-DTEST_CONFIG=ON -DSOFTCOUNTERS=ON \
-DENABLE_CODE_COVERAGE=${{ matrix.config.coverage }} \
-DENABLE_TSAN=${{ matrix.config.tsan }} \
-DENABLE_ASAN=${{ matrix.config.tsan == false }} \
-DENABLE_UBSAN=${{ matrix.config.tsan == false }} \
-DENABLE_SAFEPTR=${{ matrix.config.safe_ptr }} \
-DDISABLE_THREAD_SAFETY=${{ matrix.config.thread_unsafe }} \
-DLLVM_EXTERNAL_LIT=${EXTERNAL_LIT} \
-DCMAKE_CXX_FLAGS="${{ matrix.config.cxxflags }}" \
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }}

- name: Test TypeART with coverage
run: |
cmake --build build --target lcov-clean
cmake --build build --target test -- ARGS=-VV
- name: Build TypeART
run: cmake --build build --parallel 2

- name: Prepare TypeART coverage
if: matrix.config.coverage
run: cmake --build build --target lcov-clean

- name: Test TypeART lit-suite
if: matrix.config.skip_test == false
run: cmake --build build --target lit-pass-test

- name: Build coverage report
if: matrix.config.coverage
run: cmake --build build --target lcov-html

- name: Build TypeART release
- name: Prepare coverage artifact
if: matrix.config.coverage
run: |
cmake -B build_lulesh -DCMAKE_BUILD_TYPE=Release -DMPI_INTERCEPT_LIB=ON -DSHOW_STATS=ON -DSOFTCOUNTERS=ON
cmake --build build_lulesh --parallel

- name: Test TypeART release on lulesh
working-directory: build_lulesh
run: ctest -V -R lulesh -O lulesh2.0_build.log
mkdir -p artifact/${{ matrix.config.name }}
mv build/profiles/ artifact/${{ matrix.config.name }}

- name: Prepare artifact
run: |
mkdir -p artifact/lulesh
mkdir -p artifact/coverage
mv build_lulesh/lulesh2.0_build.log artifact/lulesh/
mv test/lulesh/lulesh2.0_out.log artifact/lulesh/
mv test/lulesh/types.yaml artifact/lulesh/lulesh2.0_types.yaml
mv build/profiles/ artifact/coverage

- name: Upload lulesh test artifact
- name: Upload test coverage artifact
if: matrix.config.coverage
uses: actions/upload-artifact@v2
with:
name: typeart-ci
name: typeart-ci-coverage
path: artifact

- name: Coveralls
- name: Coveralls (parallel)
if: matrix.config.coverage
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: build/typeart.coverage
flag-name: ${{ matrix.config.name }}
parallel: true

finish-coverage:
needs: lit-suite
runs-on: ubuntu-20.04
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true
Loading