Skip to content

[Bug] CUDA Check failed: scope != "global" when using argmin #20060

Closed

Description

@XYZboom

Expected behavior

relax.build(mod, target="cuda") should compile successfully for any valid Relax IR module, including relax.op.argmin with any valid input shape. The compiled module should execute and produce correct argmin results.

Actual behavior

relax.build crashes with an InternalError during CUDA codegen:

tvm.error.InternalError: Check failed: scope != "global" (global vs. global) : Cannot allocate global memory when targeting CUDA. You must pass all global arrays as input instead

Environment

  • OS: Linux (x86_64, conda environment)
  • GPU: NVIDIA GeForce RTX 3080 Ti (12GB VRAM, CUDA 580.76.05)
  • TVM version: 0.25.0.post1
  • Target: cuda (GPU compilation)
  • Python: 3.12

Steps to reproduce

import tvm
from tvm import relax

bb = relax.BlockBuilder()
v = relax.Var("x", relax.TensorStructInfo(shape=[1], dtype="float32"))
with bb.function("f", [v]):
    out = bb.emit(relax.op.astype(relax.op.argmin(v, axis=-1), dtype="float32"))
    bb.emit_func_output(out)
mod = bb.get()

# Crashes here during CUDA codegen
ex = relax.build(mod, target="cuda")

Triage

  • bug
  • cuda
  • needs-triage

Activity

  1. added
    needs-triagePRs or issues that need to be investigated by maintainers to find the right assignees to address it
    on Jul 28, 2026
  2. XYZboom commented on Jul 28, 2026

    @XYZboom
    Author

    error log:

    Traceback (most recent call last):
      File "/root/Code/python/tmp/main.py", line 12, in <module>
        ex = relax.build(mod, target="cuda")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/root/miniconda3/lib/python3.12/site-packages/tvm/relax/vm_build.py", line 276, in build
        return _vmlink(
               ^^^^^^^^
      File "/root/miniconda3/lib/python3.12/site-packages/tvm/relax/vm_build.py", line 157, in _vmlink
        lib = tvm.tirx.build(tir_mod, target=target, pipeline=tir_pipeline)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/root/miniconda3/lib/python3.12/site-packages/tvm/tirx/build.py", line 240, in build
        return tir_to_runtime(host_mod, device_mod_dict, target_host)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/root/miniconda3/lib/python3.12/site-packages/tvm/tirx/build.py", line 146, in tir_to_runtime
        device_modules.append(codegen_build(device_mod, target))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/root/miniconda3/lib/python3.12/site-packages/tvm/tirx/build.py", line 130, in codegen_build
        return bf(mod, target)
               ^^^^^^^^^^^^^^^
      File "python/tvm_ffi/cython/function.pxi", line 968, in tvm_ffi.core.Function.__call__
      File "/project/src/backend/cuda/codegen/codegen_cuda.cc", line 759, in virtual void tvm::codegen::CodeGenCUDA::PrintStorageScope(const std::string&, std::ostream&)
    tvm.error.InternalError: Check failed: scope != "global" (global vs. global) : Cannot allocate global memory when targeting CUDA. You must pass all global arrays as input instead
  3. added a commit that references this issue on Aug 28, 2026
    4f849cf
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

    needs-triagePRs or issues that need to be investigated by maintainers to find the right assignees to address ittype: bug

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions