NVIDIA / NVIDIA/cutlass

[BUG] CuTe DSL 4.7.1 TVM-FFI AOT objects reference symbols missing from `libcuda_dialect_runtime_static.a`

Open
#3,635 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

? - Needs Triage bug CuTe DSL
Dominant language
C++
Stars
10.5k
Forks
2.1k
Avg merge
3d 11h
Merged PRs (30d)
7

Description

Which component has the problem?

CuTe DSL

Bug Report

Describe the bug

CuTe DSL 4.7.1 generates TVM-FFI-enabled AOT object files that reference the following runtime symbols:

CuteDSLRT_TVMFFISetRaisedCudaError
CuteDSLRT_TVMFFISetRaisedCudaLaunchError

However, these symbols are not provided by the packaged libcuda_dialect_runtime_static.a.

They are only exported by libcute_dsl_runtime.so.
As a result, an AOT object generated with TVM-FFI enabled can no longer be linked using the static CUDA dialect runtime that worked for previous CuTe DSL versions.

This appears to be either:

  1. a missing-object packaging issue in libcuda_dialect_runtime_static.a, or
  2. an undocumented breaking change requiring TVM-FFI C++ AOT users to switch from
    libcuda_dialect_runtime_static.a to the shared
    libcute_dsl_runtime.so.

Steps/Code to reproduce bug

Install CuTe DSL 4.7.1 with CUDA 13 support:

$ pip3 install "nvidia-cutlass-dsl[cu13]==4.7.1"
LIBDIR="$(python -m cutlass.cute.export.aot_config --libdir)"

The required symbol is absent from the static CUDA dialect runtime:

$  nm -g --defined-only "${LIBDIR}/libcuda_dialect_runtime_static.a" | grep CuteDSLRT_TVMFFISetRaisedCuda

=> no output

The symbol is present in the shared CuTe DSL runtime:

nm -D --defined-only "${LIBDIR}/libcute_dsl_runtime.so" | grep CuteDSLRT_TVMFFISetRaisedCuda

=>

00000000001aec00 T CuteDSLRT_TVMFFISetRaisedCudaError
00000000001aec70 T CuteDSLRT_TVMFFISetRaisedCudaLaunchError

Linking the generated object with only libcuda_dialect_runtime_static.a therefore fails:

undefined reference to `CuteDSLRT_TVMFFISetRaisedCudaError'

Expected behavior

Should be able to compile with static library link? Or is it an intended breaking change?

Environment details (please complete the following information):

nvidia-cutlass-dsl: 4.7.1
nvidia-cutlass-dsl-libs-cu13: 4.7.1
apache-tvm-ffi: 0.1.13.post3

Additional context
Add any other context about the problem here.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by installing nvidia-cutlass-dsl 4.7.1 and locating the packaged libraries with cutlass.cute.export.aot_config --libdir. Compare the symbols in libcuda_dialect_runtime_static.a and libcute_dsl_runtime.so, then trace how TVM-FFI AOT objects select the runtime. Done means static linking resolves both symbols, or the shared-library requirement is clearly documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
backend, build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.