Upgrade from Ubuntu 20.04 to 24.04 (#19463)

diff --git a/.github/workflows/build_package.yml b/.github/workflows/build_package.yml
index 8f40765..1ea0264 100644
--- a/.github/workflows/build_package.yml
+++ b/.github/workflows/build_package.yml
@@ -118,7 +118,7 @@
       matrix:
         include:
           # Ubuntu packages.
-          - runs-on: ubuntu-20.04
+          - runs-on: ubuntu-24.04
             build-family: linux-x86_64
             build-package: main-dist-linux
             experimental: false
@@ -126,7 +126,7 @@
             build-family: linux-aarch64
             build-package: main-dist-linux
             experimental: true
-          - runs-on: ubuntu-20.04
+          - runs-on: ubuntu-24.04
             build-family: linux-x86_64
             build-package: py-compiler-pkg
             experimental: false
@@ -134,7 +134,7 @@
             build-family: linux-aarch64
             build-package: py-compiler-pkg
             experimental: true
-          - runs-on: ubuntu-20.04
+          - runs-on: ubuntu-24.04
             build-family: linux-x86_64
             build-package: py-runtime-pkg
             experimental: false
@@ -142,7 +142,7 @@
             build-family: linux-aarch64
             build-package: py-runtime-pkg
             experimental: true
-          - runs-on: ubuntu-20.04
+          - runs-on: ubuntu-24.04
             build-family: linux-x86_64
             build-package: py-tf-compiler-tools-pkg
             experimental: false
@@ -368,7 +368,7 @@
     name: "Trigger validate and publish release"
     needs: build_packages
     if: github.event.inputs.release_id != ''
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     steps:
       - name: "Invoke workflow :: Validate and Publish Release"
         uses: benc-uk/workflow-dispatch@e2e5e9a103e331dad343f381a29e654aea3cf8fc # v1.2.4
diff --git a/.github/workflows/bump_torch_mlir.yml b/.github/workflows/bump_torch_mlir.yml
index 3a7d043..3a7f65b 100644
--- a/.github/workflows/bump_torch_mlir.yml
+++ b/.github/workflows/bump_torch_mlir.yml
@@ -28,7 +28,7 @@
 
 jobs:
   bump_submodule:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     steps:
       - name: Checkout repository
         uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 30a1738..3246beb 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -58,8 +58,8 @@
       fail-fast: false
       matrix:
         include:
-          - name: ubuntu-20.04
-            runs-on: ubuntu-20.04
+          - name: ubuntu-24.04
+            runs-on: ubuntu-24.04
             driver-options: -DIREE_HAL_DRIVER_CUDA=ON -DIREE_HAL_DRIVER_HIP=ON -DIREE_HAL_DRIVER_VULKAN=ON
           - name: windows-2022
             runs-on: windows-2022
@@ -120,7 +120,7 @@
   runtime_small:
     needs: setup
     if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'runtime_small')
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     env:
       BUILD_DIR: build-runtime
       CC: clang
@@ -156,7 +156,7 @@
     needs: setup
     name: "runtime_tracing :: ${{ matrix.provider }} provider"
     if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'runtime_tracing')
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     strategy:
       fail-fast: false
       matrix:
diff --git a/.github/workflows/ci_linux_x64_clang_byollvm.yml b/.github/workflows/ci_linux_x64_clang_byollvm.yml
index 4e8a0f2..e5fd4c9 100644
--- a/.github/workflows/ci_linux_x64_clang_byollvm.yml
+++ b/.github/workflows/ci_linux_x64_clang_byollvm.yml
@@ -25,7 +25,7 @@
 
 jobs:
   linux_x64_clang_byollvm:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     container: ghcr.io/iree-org/cpubuilder_ubuntu_jammy@sha256:78a558b999b230f7e1da376639e14b44f095f30f1777d6a272ba48c0bbdd4ccb
     defaults:
       run:
diff --git a/.github/workflows/ci_linux_x64_gcc.yml b/.github/workflows/ci_linux_x64_gcc.yml
index 1f8b6b2..b07f6bc 100644
--- a/.github/workflows/ci_linux_x64_gcc.yml
+++ b/.github/workflows/ci_linux_x64_gcc.yml
@@ -25,7 +25,7 @@
 
 jobs:
   linux_x64_gcc:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     container: ghcr.io/iree-org/cpubuilder_ubuntu_jammy@sha256:78a558b999b230f7e1da376639e14b44f095f30f1777d6a272ba48c0bbdd4ccb
     defaults:
       run:
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 2799d15..1e4884f 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -13,7 +13,7 @@
 
 jobs:
   pre-commit:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     steps:
       - name: Checking out repository
         uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
diff --git a/.github/workflows/oneshot_candidate_release.yml b/.github/workflows/oneshot_candidate_release.yml
index ee0f305..fd3812a 100644
--- a/.github/workflows/oneshot_candidate_release.yml
+++ b/.github/workflows/oneshot_candidate_release.yml
@@ -11,7 +11,7 @@
 jobs:
   tag_release:
     name: "Tag candidate release"
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     steps:
       - name: Checking out repository
         uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
diff --git a/.github/workflows/pkgci_test_android.yml b/.github/workflows/pkgci_test_android.yml
index 348d831..53230c8 100644
--- a/.github/workflows/pkgci_test_android.yml
+++ b/.github/workflows/pkgci_test_android.yml
@@ -32,7 +32,7 @@
 
 jobs:
   android_arm64:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     env:
       PACKAGE_DOWNLOAD_DIR: ${{ github.workspace }}/.packages
       VENV_DIR: ${{ github.workspace }}/.venv
diff --git a/.github/workflows/pkgci_test_onnx.yml b/.github/workflows/pkgci_test_onnx.yml
index 13a6f34..ac550b6 100644
--- a/.github/workflows/pkgci_test_onnx.yml
+++ b/.github/workflows/pkgci_test_onnx.yml
@@ -29,7 +29,7 @@
           - name: cpu_llvm_sync
             config-file: onnx_ops_cpu_llvm_sync.json
             numprocesses: auto
-            runs-on: ubuntu-20.04
+            runs-on: ubuntu-24.04
 
           # AMD GPU
           - name: amdgpu_rocm_rdna3
@@ -130,7 +130,7 @@
         include:
           # CPU
           - name: cpu_llvm_task
-            runs-on: ubuntu-20.04
+            runs-on: ubuntu-24.04
 
           # TODO(scotttodd): test other backends (parameterize the test suite)
     env:
diff --git a/.github/workflows/pkgci_test_pjrt.yml b/.github/workflows/pkgci_test_pjrt.yml
index a32b1c4..c9f4b78 100644
--- a/.github/workflows/pkgci_test_pjrt.yml
+++ b/.github/workflows/pkgci_test_pjrt.yml
@@ -22,7 +22,7 @@
     strategy:
       matrix:
         include:
-          - runner: ubuntu-20.04
+          - runner: ubuntu-24.04
             pjrt_platform: cpu
         # TODO: cuda runner is not available yet, refer to #18814
         #   - runner: some-cuda-available-runner
diff --git a/.github/workflows/pkgci_test_riscv64.yml b/.github/workflows/pkgci_test_riscv64.yml
index c51dd70..9e534ed 100644
--- a/.github/workflows/pkgci_test_riscv64.yml
+++ b/.github/workflows/pkgci_test_riscv64.yml
@@ -32,7 +32,7 @@
 
 jobs:
   riscv64:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     env:
       PACKAGE_DOWNLOAD_DIR: ${{ github.workspace }}/.packages
       VENV_DIR: ${{ github.workspace }}/.venv
diff --git a/.github/workflows/pkgci_test_sharktank.yml b/.github/workflows/pkgci_test_sharktank.yml
index 509b59e..a784549 100644
--- a/.github/workflows/pkgci_test_sharktank.yml
+++ b/.github/workflows/pkgci_test_sharktank.yml
@@ -28,7 +28,7 @@
           - name: cpu_task
             target: target_cpu
             gpu: none
-            runs-on: ubuntu-20.04
+            runs-on: ubuntu-24.04
 
           - name: hip_task
             target: target_hip
diff --git a/.github/workflows/pkgci_test_tensorflow.yml b/.github/workflows/pkgci_test_tensorflow.yml
index faec47c..1361bce 100644
--- a/.github/workflows/pkgci_test_tensorflow.yml
+++ b/.github/workflows/pkgci_test_tensorflow.yml
@@ -20,7 +20,7 @@
 jobs:
   linux_x86_64:
     name: Linux (x86_64)
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     env:
       PACKAGE_DOWNLOAD_DIR: ${{ github.workspace }}/.packages
       VENV_DIR: ${{ github.workspace }}/.venv
diff --git a/.github/workflows/pkgci_unit_test.yml b/.github/workflows/pkgci_unit_test.yml
index ebb8bb5..41490a3 100644
--- a/.github/workflows/pkgci_unit_test.yml
+++ b/.github/workflows/pkgci_unit_test.yml
@@ -20,7 +20,7 @@
 jobs:
   linux_x86_64:
     name: Linux (x86_64)
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     env:
       PACKAGE_DOWNLOAD_DIR: ${{ github.workspace }}/.packages
       VENV_DIR: ${{ github.workspace }}/.venv
diff --git a/.github/workflows/publish_website.yml b/.github/workflows/publish_website.yml
index 1f63d49..676d97b 100644
--- a/.github/workflows/publish_website.yml
+++ b/.github/workflows/publish_website.yml
@@ -39,7 +39,7 @@
     if: ${{ github.repository_owner == 'iree-org' || github.event_name == 'workflow_dispatch' }}
 
     # Note: a clean build of `iree-tblgen` takes ~5 minutes on standard runners.
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     env:
       CC: clang
       CXX: clang++
diff --git a/.github/workflows/samples.yml b/.github/workflows/samples.yml
index e78506c..576ebe6 100644
--- a/.github/workflows/samples.yml
+++ b/.github/workflows/samples.yml
@@ -28,7 +28,7 @@
 
 jobs:
   colab:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     steps:
       - name: "Checking out repository"
         uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -40,7 +40,7 @@
         run: ./samples/colab/test_notebooks.py
 
   samples:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     env:
       CC: clang
       CXX: clang++
@@ -59,7 +59,7 @@
         run: ./build_tools/testing/test_samples.sh
 
   web:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     env:
       VENV_DIR: ${{ github.workspace }}/.venv
       CC: clang
diff --git a/.github/workflows/schedule_candidate_release.yml b/.github/workflows/schedule_candidate_release.yml
index 882ab39..fb2b5fa 100644
--- a/.github/workflows/schedule_candidate_release.yml
+++ b/.github/workflows/schedule_candidate_release.yml
@@ -15,7 +15,7 @@
 jobs:
   tag_release:
     name: "Tag candidate release"
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     steps:
       - name: Checking out repository
         uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml
index cca292e..840f6f6 100644
--- a/.github/workflows/setup.yml
+++ b/.github/workflows/setup.yml
@@ -39,7 +39,7 @@
 
 jobs:
   setup:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     env:
       # The commit being checked out is the merge commit for the PR. Its first
       # parent will be the tip of main.
diff --git a/.github/workflows/validate_and_publish_release.yml b/.github/workflows/validate_and_publish_release.yml
index 15e4aff..b215302 100644
--- a/.github/workflows/validate_and_publish_release.yml
+++ b/.github/workflows/validate_and_publish_release.yml
@@ -19,7 +19,7 @@
   validate_packages:
     name: "Validate packages"
     # TODO(jennik): Look into testing windows and macos builds.
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     steps:
       - name: Download packages
         id: download_packages
@@ -111,7 +111,7 @@
   publish_release:
     name: "Publish release"
     needs: validate_packages
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     steps:
       - name: Publish Release
         id: publish_release
diff --git a/.github/workflows/workflow_summary.yml b/.github/workflows/workflow_summary.yml
index 0d950a6..c2ae68b 100644
--- a/.github/workflows/workflow_summary.yml
+++ b/.github/workflows/workflow_summary.yml
@@ -39,7 +39,7 @@
 
 jobs:
   summary:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-24.04
     steps:
       - name: Getting failed jobs
         id: failed_jobs