Skip to content

Extract the shared CUDA base packages into a new autoware_cuda repository #7340

Open
0 of 1 issue completed

Description

@xmfcx

Checklist

  • I've read the contribution guidelines.
  • I've searched other issues and no duplicate issues were found.
  • I've agreed with the maintainers that I can plan this task.

Description

This issue tracks the move of the shared CUDA and TensorRT base packages from autoware_universe into a new autoware_cuda repository. The plan and the feedback are in the discussion below.

The repository name is autoware_cuda. Earlier drafts used autoware_core_cuda and autoware_core_ai. The repository holds only packages that need CUDA to build, and the core CUDA images (core-devel-cuda and core-cuda) hold it. Packages for ONNX Runtime do not go here. The name does not include "core", because the core/cuda/ path in autoware.repos already shows the layer.

At the stakeholder sync on 2026-06-25, TIER IV and AWF deferred this migration to the end of September 2026. The work started again in October 2026.

Status

The cutover is done. The three packages moved, and both CI and autoware.repos workspaces use the new repository. The core CUDA images and the docs are done too. One item is still open:

  • The final update of discussion 7156.

A workspace that was built before the cutover needs two manual steps after vcs import:

rm -rf src/universe/external/cuda_blackboard
rm -rf {build,install}/{autoware_cuda_dependency_meta,autoware_cuda_utils,autoware_tensorrt_common,cuda_blackboard}

The first command removes the old copy of cuda_blackboard, because vcs import does not delete it. The second command removes the CMake caches that point to the old source paths.

These packages move:

Package Old directory under src/ New directory under src/
autoware_cuda_dependency_meta universe/autoware_universe/common/ core/cuda/autoware_cuda/
autoware_cuda_utils universe/autoware_universe/sensing/ core/cuda/autoware_cuda/
autoware_tensorrt_common universe/autoware_universe/perception/ core/cuda/autoware_cuda/

These items are not part of this task:

cuda_blackboard stays a standalone repository. Only its path in autoware.repos changes, from universe/external/cuda_blackboard to core/cuda/cuda_blackboard.

Purpose

  • Let projects use the CUDA base at the core layer without the full autoware_universe repository.
  • Keep the heavy GPU build and CI setup out of the packages that do not need it.
  • Release the CUDA base on its own version line, apart from unrelated universe code.
  • Prepare later steps that make autoware_universe smaller. We will discuss those steps separately.

Possible approaches

The package names do not change. Colcon finds packages by name, so the downstream package.xml and CMakeLists.txt files need no edits.

  1. Create autowarefoundation/autoware_cuda with the standard AWF repository files and CI for Humble and Jazzy. The code owners are the current maintainers of the three packages and the AWF maintainers.
  2. Copy the three packages into the new repository. The new repository starts without the old Git history. That history stays in autoware_universe.
  3. Release autoware_cuda 1.0.0. The repository starts its own version line, apart from the universe line (0.53.0 today).
  4. Announce a short freeze for PRs that change the three packages.
  5. Merge one PR in autoware_universe, then release autoware_universe. The PR does these things:
    • Remove the three packages and their CODEOWNERS entries.
    • Add core/cuda/autoware_cuda to build_depends_stable.repos. This entry is permanent, because the CPU-only CI images do not contain src/core/cuda.
    • Move cuda_blackboard to core/cuda/cuda_blackboard in build_depends_stable.repos.
  6. Merge one PR in autoware. The PR does these things:
    • Bump autoware_universe in autoware.repos to the release from step 5.
    • Add core/cuda/autoware_cuda to autoware.repos.
    • Move cuda_blackboard to core/cuda/cuda_blackboard in autoware.repos.
    • Change docker/. The CPU-only core images do not build src/core/cuda. The universe stages (CPU and CUDA) build it from source. New autoware-core-*-cuda images are a separate task.
  7. Close the open PRs on the three packages in autoware_universe, with a note to the authors to open them again in autoware_cuda.

The cutover needs two merges, because of these facts:

  • autoware.repos pins autoware_universe to a release tag. If autoware.repos adds autoware_cuda before it points to a universe release without the three packages, a workspace holds two copies of them.
  • The universe CI takes core packages prebuilt from the universe-dependencies* images. These images do not contain autoware_cuda, so the universe CI builds it from build_depends_stable.repos.
  • docker/core.Dockerfile builds every package under src/core without CUDA. cuda_blackboard depends on negotiated, which has no rosdep rule and lives in universe/external. As a result, the docker/ change must be in the same PR as the autoware.repos change.

Progress:

Step Result Date
1 - 3 autoware_cuda 1.0.0 Oct 30
5 universe PR 13564 merged, autoware_universe 0.53.2 Oct 31
6 autoware PR 7379 merged Oct 31
7 universe PRs 13446 and 12240 closed Oct 30
Core CUDA images autoware PRs 7383 and 7386 merged, tracked in issue 7381 Nov 2
Docs autoware-documentation PR 870 merged Nov 4

Definition of done

  • autowarefoundation/autoware_cuda exists, has CI for Humble and Jazzy, has a CODEOWNERS file, and has the 1.0.0 release that holds the three packages.
  • autoware_universe no longer holds autoware_cuda_dependency_meta, autoware_cuda_utils, or autoware_tensorrt_common, or their CODEOWNERS entries.
  • autoware.repos lists core/cuda/autoware_cuda and core/cuda/cuda_blackboard, and no longer lists universe/external/cuda_blackboard.
  • The CPU-only core images do not build src/core/cuda.
  • docker/ builds the autoware-core-*-cuda images. This is a separate task now. The images are named core-dependencies-cuda, core-devel-cuda and core-cuda: Build the CUDA layer of Core into its own Docker images #7381
  • The universe packages that use the CUDA base build in CI against the new repository.
  • build_depends_stable.repos in autoware_universe lists core/cuda/autoware_cuda and core/cuda/cuda_blackboard.
  • The open PRs on the three packages are closed in autoware_universe, with a pointer to autoware_cuda.
  • The "CUDA layer" section of docs/design/autoware-concepts/core-package-inclusion-criteria.md in autoware-documentation names autoware_cuda, not autoware_core_cuda, and no longer lists autoware_tensorrt_plugins. The section still names autoware_tensorrt_plugins, but only to say that it stays in Universe: docs(design): describe the autoware_cuda repository in the CUDA layer autoware-documentation#870
  • The diagram in docs/design/repository-structure.md in autoware-documentation shows autoware_cuda and cuda_blackboard under Core, and no longer shows trt_batched_nms: docs(design): describe the autoware_cuda repository in the CUDA layer autoware-documentation#870
  • Discussion 7156 links to this issue and shows the final state.

Activity

  1. self-assigned this
    on Oct 5, 2026
  2. changed the title [-]Extract the shared CUDA base packages into a new autoware_core_cuda repository[/-] [+]Extract the shared CUDA base packages into a new autoware_core_ai repository[/+] on Oct 5, 2026
  3. changed the title [-]Extract the shared CUDA base packages into a new autoware_core_ai repository[/-] [+]Extract the shared CUDA base packages into a new autoware_cuda repository[/+] on Oct 6, 2026
  4. xmfcx commented on Oct 30, 2026

    @xmfcx
    ContributorAuthor

    Update (2026-10-30): autoware_cuda 1.0.0 is out. It holds autoware_cuda_dependency_meta, autoware_cuda_utils, and autoware_tensorrt_common, with the same code as autoware_universe 0.53.0.

    The CI of autoware_cuda builds and tests these packages on Humble and Jazzy. It also builds and tests the universe packages that depend on them.

    The freeze starts now. Please do not merge PRs in autoware_universe that change the three packages. Open new PRs for them in autoware_cuda.

    These open universe PRs change the packages. I will ask their authors to move them to autoware_cuda.

    Next steps:

    1. One PR in autoware_universe removes the three packages, then a universe release.
    2. One PR in autoware updates autoware.repos
    3. Then we add the autoware-core-*-cuda images.

    The freeze ends when the universe PR merges.

    cc. @mojomex @technolojin @mitsudome-r @YoshiRi

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions