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

[mini] run regression tests with fullaot+llvm #15999

Closed
lewurm opened this issue Aug 2, 2019 · 2 comments · Fixed by #16536

Comments

@lewurm
Copy link
Member

@lewurm lewurm commented Aug 2, 2019

We should run our mini regression tests with LLVM. Currently we "only" run the regression tests with FullAOT (that is, with Mini AOT):

${TESTCMD} --label=mini --timeout=25m make -j ${CI_CPU_COUNT} -w -C mono/mini -k fullaotcheck

The target would be make -C mono/mini llvmfullaotcheck. I would just add it, but there is at least one failure on arm32/linux 😬, so I've to look at it first.

We should do that at least on arm32/linux and arm64/linux because that closely resembles what we have on iOS.

@lewurm lewurm self-assigned this Aug 2, 2019
lewurm added a commit to lewurm/mono that referenced this issue Aug 2, 2019
In order to trigger the problem, we must call into gsharedvt code ("in" transition) and then escape the gsharedvt world ("out" transition). The bug happens in the latter. Also some other stars need to align (I haven't fully understood it), thus the repro is quite long.

The provided repro only triggers with LLVM, which we don't have enabled on CI yet: mono#15999

Fixes mono#15261
Fixes mono#15262
Fixes mono#15263
Fixes mono#15307
@jaykrell

This comment has been minimized.

Copy link
Collaborator

@jaykrell jaykrell commented Aug 2, 2019

Please no more arm32 PR coverage?
Daily or steady loop however long or short suffices?

monojenkins added a commit to monojenkins/mono that referenced this issue Aug 4, 2019
In order to trigger the problem, we must call into gsharedvt code ("in" transition) and then escape the gsharedvt world ("out" transition). The bug happens in the latter. Also some other stars need to align (I haven't fully understood it), thus the repro is quite long.

The provided repro only triggers with LLVM, which we don't have enabled on CI yet: mono#15999

Fixes mono#15261
Fixes mono#15262
Fixes mono#15263
Fixes mono#15307
monojenkins added a commit that referenced this issue Aug 6, 2019
[arm] respect I1 and I2 on gsharedvt out transition

In order to trigger the problem, we must call into gsharedvt code ("in" transition) and then escape the gsharedvt world ("out" transition). The bug happens in the latter. Also some other stars need to align (I haven't fully understood it), thus the repro is quite long.

The provided repro only triggers with LLVM, which we don't have enabled on CI yet: #15999

Fixes #15261
Fixes #15262
Fixes #15263
Fixes #15307
monojenkins added a commit to monojenkins/mono that referenced this issue Aug 7, 2019
In order to trigger the problem, we must call into gsharedvt code ("in" transition) and then escape the gsharedvt world ("out" transition). The bug happens in the latter. Also some other stars need to align (I haven't fully understood it), thus the repro is quite long.

The provided repro only triggers with LLVM, which we don't have enabled on CI yet: mono#15999

Fixes mono#15261
Fixes mono#15262
Fixes mono#15263
Fixes mono#15307
akoeplinger added a commit that referenced this issue Aug 7, 2019
* [arm] respect I1 and I2 on gsharedvt out transition

In order to trigger the problem, we must call into gsharedvt code ("in" transition) and then escape the gsharedvt world ("out" transition). The bug happens in the latter. Also some other stars need to align (I haven't fully understood it), thus the repro is quite long.

The provided repro only triggers with LLVM, which we don't have enabled on CI yet: #15999

Fixes #15261
Fixes #15262
Fixes #15263
Fixes #15307

* fix it on amd64 too

* more amd64
akoeplinger added a commit that referenced this issue Aug 7, 2019
* [arm] respect I1 and I2 on gsharedvt out transition

In order to trigger the problem, we must call into gsharedvt code ("in" transition) and then escape the gsharedvt world ("out" transition). The bug happens in the latter. Also some other stars need to align (I haven't fully understood it), thus the repro is quite long.

The provided repro only triggers with LLVM, which we don't have enabled on CI yet: #15999

Fixes #15261
Fixes #15262
Fixes #15263
Fixes #15307


Backport of #16000.
@lewurm

This comment has been minimized.

Copy link
Member Author

@lewurm lewurm commented Aug 27, 2019

#16510 fixes the failure on arm/linux. However, as it is right now, it takes a really long time to build because the llvmfullaotcheck AOT compiles the whole BCL (without IL linker, so they are huge).

Since they run with a FullAOT profile already we should use just that profile. That takes some tweaking in the Makefile.

lewurm added a commit to lewurm/mono that referenced this issue Aug 28, 2019
And enable `llvmfullaotcheck` target on CI.

Fixes mono#15999
lewurm added a commit to lewurm/mono that referenced this issue Aug 28, 2019
And enable `llvmfullaotcheck` target on CI.

Fixes mono#15999
lewurm added a commit to lewurm/mono that referenced this issue Aug 28, 2019
And enable `llvmfullaotcheck` target on CI.

Fixes mono#15999
monojenkins added a commit that referenced this issue Aug 28, 2019
[mini] do not re-AOT whole BCL for fullaotcheck targets

And enable `llvmfullaotcheck` target on CI.

Fixes #15999

On my armv7/linux machine with a `--with-runtime-preset=fullaot_llvm` configured build, before this PR:
```console
$ time make -C mono/mini llvmfullaotcheck -j4
[...]
real    9m42.362s
user    23m2.000s
sys     0m18.480s
```
After:
```console
$ time make -C mono/mini llvmfullaotcheck -j4
[...]
real    3m1.984s
user    4m51.648s
sys     0m8.248s
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants
You can’t perform that action at this time.