Comments (6)
In theory does lit
provide a --vg
parameter that can be used to say, please run the tests inside with valgrind.
That also works on my machine (probably won't on Windows..?) but I'm not sure how often we want to use that as the performance is obviously awful... it also runs clang or whatever else we specify to run in the RUN
lines with valgrind (although thorin clearly dominated the testing time..).
Timings of running the lit tests on my 16 thread Ryzen 7 5850u:
Config | --vg | No --vg |
---|---|---|
Debug | 20min | 22s |
Release | 200s | 17s |
So I'd provide either a CMake option to add the parameter or just provide a check-valgrind
target or so?
Not sure if we want to run that in the CI though... maybe in the Release build?
What are your thoughts?
from thorin2.
args. 20 minutes is really bad.
Maybe we can disable running clang and what not from being run inside valgrind by somehow passing and fiddling around with the --trace-children
and --trace-children-skip
options?
Another idea that just came to my mind is to either explicitly include valgrind within our RUN: %thorin
command or - even better - have a another script that looks for RUN: %thorin
commands and runs just these commands with valgrind
interdependently from the lit stuff.
from thorin2.
given that we're down to 200s total, when building Thorin in Release, I would claim valgriding clang does not hurt too much.
I assume we could still build our own solution to just valgrind thorin: since we set the value of %thorin
in the lit config ourselves, we could also have some config option that replaces that with valgrind ... /path/to/thorin
instead of just /path/to/thorin
.
That obviously won't change much for that in debug thorin is the dominating factor.
from thorin2.
since we set the value of
%thorin
in the lit config ourselves, we could also have some config option that replaces that withvalgrind ... /path/to/thorin
instead of just/path/to/thorin
.
I really like this approach.
That obviously won't change much for that in debug thorin is the dominating factor.
I don't really get why this takes so long. make check
takes 21s on my old workstation here. Now using valgrind on Thorin alone would probably have an impact of an order of magnitude or so but not 2 orders of magnitudes???
from thorin2.
Release with %thorin
set to valgrind /path/to/thorin
takes 75s.
Debug 16m. (haven't rerun and averaged these numbers obvs..)
from thorin2.
So my vote would be to enable valgrind for release builds in GitHub CI and by enabling it simply using valgraind /path/to/thorin
.
My guess is that this dynamic loading of plugins is really, really slow with valgrind.
from thorin2.
Related Issues (20)
- Code generation for floating point casts HOT 2
- Scheduler returns wrong position dynamically
- Automatic Dialect Loading HOT 4
- Shadowing for variables HOT 1
- Association Dialect HOT 4
- Application Error with matching domain HOT 7
- Grammar Improvements HOT 1
- Add mem problem with dependent types
- Add mem adds too many mems HOT 2
- Backend Preparation: Nested Extract Splitting
- Float Infer Unification Issue
- Reshape phase messes up types
- cps2ds - wrong body type HOT 4
- Matrix map_reduce: missing token for extractvalue in generated llvm code HOT 4
- one button to reproduce them all
- Parametrized packs fail for arity <= 1
- %affine.For breaks without scalerize pass HOT 2
- Invalid intermediate code HOT 3
- `%core.wrap.sub nuw (a, 1:(.Idx n))` incorrectly normalizes to `%core.wrap.add nuw (a, n - 1)`
- cps2ds sometimes introduces ownerless Vars HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from thorin2.