Skip to content

FA4 NVVM ICE on Thor (SM110): CUTE_DSL_ARCH set after cutlass-dsl import + hd256 2CTA dispatch #178

Description

@DXICM

Summary

FA4 on Jetson AGX Thor (SM110) hits an NVVM ICE during kernel compilation. Root cause is an env-var ordering bug in fa4_backend.py, amplified by the hd256 2CTA dispatch extension from #164 (7fd75d20). This affects every model that uses FA4 on Thor, not just GR00T.

Root Cause

fa4_backend.py imports cutlass-dsl before setting CUTE_DSL_ARCH=sm_101a. cutlass-dsl caches the device architecture at import time (sm_110a on Thor), so the later env-var assignment has no effect — kernels are then compiled for the wrong arch.

Combined with #164 (7fd75d20), which extended the hd256 2CTA dispatch path to SM110 without validation, this triggers an NVVM ICE at compile time on Thor.

Repro Conditions

  • Jetson AGX Thor, SM110 (sm_110a)
  • Any FA4-backed attention path with hd256 dispatch
  • No external CUTE_DSL_ARCH override set before process start

Fix (in fix(fa4) commit 817cbf7, included in #177)

  1. Set CUTE_DSL_ARCH before any cutlass-dsl import.
  2. Restrict the hd256 2CTA dispatch to SM100 only.
  3. Restore the _fa4_trimmed lazy loader.

Requires nvidia-cutlass-dsl >= 4.5.

Verification

After the fix, FA4 compiles and runs on Thor without the NVVM ICE and without needing an externally-set CUTE_DSL_ARCH (verified end-to-end with GR00T N1.6 on Thor, see #177).

Suggestion for upstream

Independently of #177, two small upstream changes would prevent this for everyone:

Activity

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

Metadata

Metadata

Assignees

No one assigned

    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