onnxruntime/tools/ci_build/github/azure-pipelines
Changming Sun d13cabf7f9
Upgrade GCC and remove the dependency on GCC8's experimental std::filesystem implementation (#20893)
### Description
This PR upgrades CUDA 11 build pipelines' GCC version from 8 to 11. 

### Motivation and Context

GCC8 has an experimental std::filesystem implementation which is not ABI
compatible with the formal one in later GCC releases. It didn't cause
trouble for us, however, ONNX community has encountered this issue much.
For example, https://github.com/onnx/onnx/issues/6047 . So this PR
increases the minimum supported GCC version from 8 to 9, and removes the
references to GCC's "stdc++fs" library. Please note we compile our code
on RHEL8 and RHEL8's libstdc++ doesn't have the fs library, which means
the binaries in ONNX Runtime's official packages always static link to
the fs library. It is just a matter of which version of the library, an
experimental one or a more mature one. And it is an implementation
detail that is not visible from outside. Anyway, a newer GCC is better.
It will give us the chance to use many C++20 features.

#### Why we were using GCC 8?
It is because all our Linux packages were built on RHEL8 or its
equivalents. The default GCC version in RHEL8 is 8. RHEL also provides
additional GCC versions from RH devtoolset. UBI8 is the abbreviation of
Red Hat Universal Base Image 8, which is the containerized RHEL8. UBI8
is free, which means it doesn't require a subscription(while RHEL does).
The only devtoolset that UBI8 provides is GCC 12, which is too new for
being used with CUDA 11.8. And our CUDA 11.8's build env is a docker
image from Nvidia that is based on UBI8.
#### How the problem is solved
Almalinux is an alternative to RHEL. Almalinux 8 provides GCC 11. And
the CUDA 11.8 docker image from Nvidia is open source, which means we
can rebuild the image based on Almalinux 8 to get GCC 11. I've done
this, but I cannot republish the new image due to various complicated
license restrictions. Therefore I put them at an internal location in
onnxruntimebuildcache.azurecr.io.
2024-06-03 10:14:08 -07:00
..
nodejs/templates [Node.js binding] Allow installation to download CUDA binaries via script (#20364) 2024-04-18 13:44:42 -07:00
nuget/templates The time for nuget pkg should be consistent (#20522) 2024-05-09 11:35:45 -07:00
stages Upgrade GCC and remove the dependency on GCC8's experimental std::filesystem implementation (#20893) 2024-06-03 10:14:08 -07:00
templates Upgrade GCC and remove the dependency on GCC8's experimental std::filesystem implementation (#20893) 2024-06-03 10:14:08 -07:00
triggers
android-arm64-v8a-QNN-crosscompile-ci-pipeline.yml Remove manylinux build scripts from python packaging pipeline (#20786) 2024-05-24 08:18:22 -07:00
android-x86_64-crosscompile-ci-pipeline.yml Clarify when protobuf dependency builds protoc (#20542) 2024-05-08 08:30:11 +10:00
bigmodels-ci-pipeline.yml Upgrade GCC and remove the dependency on GCC8's experimental std::filesystem implementation (#20893) 2024-06-03 10:14:08 -07:00
binary-size-checks-pipeline.yml
build-perf-test-binaries-pipeline.yml
c-api-noopenmp-packaging-pipelines.yml Update training packaging pipeline's docker files (#20853) 2024-05-30 23:48:42 -07:00
clean-build-docker-image-cache-pipeline.yml
cuda-packaging-pipeline.yml Update training packaging pipeline's docker files (#20853) 2024-05-30 23:48:42 -07:00
linux-ci-pipeline.yml Update training packaging pipeline's docker files (#20853) 2024-05-30 23:48:42 -07:00
linux-cpu-aten-pipeline.yml Update Aten pipeline's docker file to use UBI8 (#20856) 2024-05-30 07:38:15 -07:00
linux-cpu-eager-pipeline.yml Update Aten pipeline's docker file to use UBI8 (#20856) 2024-05-30 07:38:15 -07:00
linux-cpu-minimal-build-ci-pipeline.yml Update training packaging pipeline's docker files (#20853) 2024-05-30 23:48:42 -07:00
linux-dnnl-ci-pipeline.yml Update training packaging pipeline's docker files (#20853) 2024-05-30 23:48:42 -07:00
linux-gpu-ci-pipeline.yml Upgrade GCC and remove the dependency on GCC8's experimental std::filesystem implementation (#20893) 2024-06-03 10:14:08 -07:00
linux-gpu-tensorrt-ci-pipeline.yml Upgrade GCC and remove the dependency on GCC8's experimental std::filesystem implementation (#20893) 2024-06-03 10:14:08 -07:00
linux-gpu-tensorrt-daily-perf-pipeline.yml [EP Perf] Fix on EP Perf (#20683) 2024-05-15 21:38:52 -07:00
linux-migraphx-ci-pipeline.yml
linux-openvino-ci-pipeline.yml OpenVINO EP Rel 1.18 Changes (#20337) 2024-04-19 00:31:38 -07:00
linux-qnn-ci-pipeline.yml [QNN EP] Update QNN SDK to 2.21 (#20534) 2024-05-01 20:17:35 -07:00
mac-ci-pipeline.yml
mac-coreml-ci-pipeline.yml
mac-ios-ci-pipeline.yml
mac-ios-packaging-pipeline.yml
mac-react-native-ci-pipeline.yml Address React Native pipeline component detection timeout (#20871) 2024-05-30 16:37:03 -07:00
npm-packaging-pipeline.yml Increase NPM ComponentDetection.Timeout: 1200 (#20681) 2024-05-15 13:41:59 -07:00
nuget-cuda-publishing-pipeline.yml adding publishing stage to publish java CUDA 12 pkg to ado (#20834) 2024-05-29 16:24:23 -07:00
orttraining-linux-ci-pipeline.yml Remove manylinux build scripts from python packaging pipeline (#20786) 2024-05-24 08:18:22 -07:00
orttraining-linux-gpu-ci-pipeline.yml
orttraining-linux-gpu-ortmodule-distributed-test-ci-pipeline.yml Migrate training storage from SAS to managed identity (#20618) 2024-05-09 15:44:29 -07:00
orttraining-linux-nightly-ortmodule-test-pipeline.yml
orttraining-mac-ci-pipeline.yml
orttraining-pai-ci-pipeline.yml Update training packaging pipeline's docker files (#20853) 2024-05-30 23:48:42 -07:00
orttraining-py-packaging-pipeline-cpu.yml Update training packaging pipeline's docker files (#20853) 2024-05-30 23:48:42 -07:00
orttraining-py-packaging-pipeline-cuda.yml Update training packaging pipeline's docker files (#20853) 2024-05-30 23:48:42 -07:00
orttraining-py-packaging-pipeline-cuda12.yml Update training packaging pipeline's docker files (#20853) 2024-05-30 23:48:42 -07:00
orttraining-py-packaging-pipeline-rocm.yml
post-merge-jobs.yml MatMulNBits + Add fusion (#20587) 2024-05-16 11:00:59 -07:00
publish-nuget.yml Enable Qnn nuget nightly (#20662) 2024-05-13 21:28:43 -07:00
py-cuda-package-test-pipeline.yml
py-cuda-packaging-pipeline.yml Remove manylinux build scripts from python packaging pipeline (#20786) 2024-05-24 08:18:22 -07:00
py-cuda-publishing-pipeline.yml Update py-publishing pipeline to use the resoure from packaging pipeline (#20888) 2024-06-01 16:10:02 -07:00
py-package-build-pipeline.yml OpenVINO EP Rel 1.18 Changes (#20337) 2024-04-19 00:31:38 -07:00
py-package-test-pipeline.yml Upgrade GCC and remove the dependency on GCC8's experimental std::filesystem implementation (#20893) 2024-06-03 10:14:08 -07:00
py-packaging-pipeline.yml Remove manylinux build scripts from python packaging pipeline (#20786) 2024-05-24 08:18:22 -07:00
qnn-ep-nuget-packaging-pipeline.yml Enable Qnn nuget nightly (#20662) 2024-05-13 21:28:43 -07:00
web-ci-pipeline.yml
win-ci-fuzz-testing.yml Run fuzz testing before the CG task cleans up the build directory (#20500) 2024-04-29 16:02:53 +10:00
win-ci-pipeline.yml Install ONNX by buildling source code in Windows DML stage (#20079) 2024-03-27 12:29:34 -07:00
win-gpu-ci-pipeline.yml Enable CUDA EP unit testing on Windows (#20039) 2024-03-27 13:32:36 -07:00
win-gpu-reduce-op-ci-pipeline.yml
win-gpu-tensorrt-ci-pipeline.yml [TensorRT EP] support TensorRT 10-GA (#20506) 2024-05-01 11:10:53 -07:00
win-qnn-arm64-ci-pipeline.yml [QNN EP] Update QNN SDK to 2.21 (#20534) 2024-05-01 20:17:35 -07:00
win-qnn-ci-pipeline.yml [QNN EP] Update QNN SDK to 2.21 (#20534) 2024-05-01 20:17:35 -07:00