-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
[mono][infra] Enable runtime tests in fullAOT LLVM mode on linux-x64 #92057
[mono][infra] Enable runtime tests in fullAOT LLVM mode on linux-x64 #92057
Conversation
Tagging subscribers to this area: @directhex Issue DetailsWork in progress. This PR tests the linux-x64 fullAOT CI job.
|
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
/azp run runtime-extra-platforms |
/azp run runtime-extra-platforms |
/azp run runtime-extra-platforms |
/azp run runtime-extra-platforms |
/azp run runtime-extra-platforms |
This PR is ready for review. Failures shouldn't be related. Runtime tests: https://dev.azure.com/dnceng-public/public/_build/results?buildId=629337&view=logs&jobId=d29f5ac9-2776-59d5-99ad-be6d4bcd416c&j=d29f5ac9-2776-59d5-99ad-be6d4bcd416c |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! good job
testGroup: innerloop | ||
nameSuffix: AllSubsets_Mono_LLVMFullAot_RuntimeTests_Tests | ||
runtimeVariant: llvmfullaot | ||
buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if it is needed in this PR but we should consolidate which flags are used for fullAOT/AOT jobs across our builds. For example, for perf jobs we use /p:MonoAOTEnableLLVM=true /p:MonoEnableLLVM=true /p:BuildMonoAOTCrossCompiler=true
https://github.com/matouskozak/runtime/blob/12f546416d4aeb23b980a92e407fbf693823236d/eng/pipelines/coreclr/perf-non-wasm-jobs.yml#L39
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point. This command only builds the runtime.
The AOT compiler is built in an optional step which contains required parameters:
runtime/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml
Lines 42 to 63 in e610649
- ${{ if and(eq(parameters.runtimeFlavor, 'mono'), in(parameters.runtimeVariant, 'llvmaot', 'llvmfullaot', 'minifullaot')) }}: | |
- ${{ if eq(parameters.archType, 'arm64') }}: | |
- ${{ if eq(parameters.runtimeVariant, 'minifullaot') }}: | |
- script: ./build.sh | |
-subset mono | |
-c ${{ parameters.buildConfig }} | |
-arch ${{ parameters.archType }} | |
/p:BuildMonoAotCrossCompiler=true | |
/p:BuildMonoAotCrossCompilerOnly=true | |
/p:CrossBuild=true | |
displayName: "Build Mono Mini AOT cross compiler" | |
- ${{ else }}: | |
- script: ./build.sh | |
-subset mono | |
-c ${{ parameters.buildConfig }} | |
-arch ${{ parameters.archType }} | |
/p:BuildMonoAotCrossCompiler=true | |
/p:BuildMonoAotCrossCompilerOnly=true | |
/p:MonoLibClang="/usr/local/lib/libclang.so.16" | |
/p:MonoAOTEnableLLVM=true | |
/p:CrossBuild=true | |
displayName: "Build Mono LLVM AOT cross compiler" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we align on the use of Is the MonoBundleLLVMOptimizer
vs MonoAOTEnableLLVM
then?MonoBundleLLVMOptimizer=true
necessary then? Looks like MonoEnableLLVM=true
should be enough
Line 46 in c7ada75
<MonoBundleLLVMOptimizer Condition="'$(MonoEnableLLVM)' == 'true'">true</MonoBundleLLVMOptimizer> |
testGroup: innerloop | ||
nameSuffix: AllSubsets_Mono_LLVMFullAot_RuntimeIntrinsicsTests | ||
runtimeVariant: llvmfullaot | ||
buildArgs: -s mono+libs+clr.hosts+clr.iltools -c Release /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if it is possible with Helix, but could we re-use the build from AllSubsets_Mono_LLVMFullAot_RuntimeTests_Tests
job? The runtime build should be the same, the difference is only which tests get build...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct, perhaps we can create a template. @fanyang-mono Should this be moved to runtime-llvm.yml
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moved to the runtime-llvm.yml
and fixed llvmaot
job.
These jobs have been moved to |
The failures shouldn't be related. |
Description
This PR enables jobs to run runtime tests in fullAOT LLVM mode on linux-x64. The jobs utilize the CBL-Mariner docker image, which contains the clang toolchain instead of binutils. Due to OOM and timeout issues, the tests are split into two jobs: intrinsics and other runtime tests.
Failing tests have been disabled and will be triaged in subsequent PRs. The arm64 support will be introduced in subsequent PRs. A list of disabled tests is included in #90427.