pytorch - 💡(How to fix) Fix torch.compile raises RuntimeError on MKLDNN tensor to_dense followed by arithmetic

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

import torch import torch.nn as nn

class M(nn.Module): def forward(self, x): return x.to_dense() * 2 - 1

if not torch.backends.mkldnn.is_available(): raise SystemExit(2)

model = M().eval() x = (torch.arange(9, dtype=torch.float32).reshape(3, 3) / 3).to_mkldnn()

try: eager_out = model(x) eager = f"OK {eager_out.layout} {eager_out}" except Exception as exc: eager = f"{type(exc).name} {str(exc).splitlines()[0]}"

try: compiled_out = torch.compile( model, backend="inductor", fullgraph=True, dynamic=True, )(x) compiled = f"OK {compiled_out.layout} {compiled_out}" except Exception as exc: compiled = f"{type(exc).name} {str(exc).splitlines()[0]}"

print("input_layout:", x.layout) print("eager:", eager) print("compiled:", compiled)

if eager.startswith("OK") and not compiled.startswith("OK"): raise SystemExit(0)

raise SystemExit(1)

Code Example

import torch
import torch.nn as nn

class M(nn.Module):
    def forward(self, x):
        return x.to_dense() * 2 - 1

if not torch.backends.mkldnn.is_available():
    raise SystemExit(2)

model = M().eval()
x = (torch.arange(9, dtype=torch.float32).reshape(3, 3) / 3).to_mkldnn()

try:
    eager_out = model(x)
    eager = f"OK {eager_out.layout} {eager_out}"
except Exception as exc:
    eager = f"{type(exc).__name__} {str(exc).splitlines()[0]}"

try:
    compiled_out = torch.compile(
        model,
        backend="inductor",
        fullgraph=True,
        dynamic=True,
    )(x)
    compiled = f"OK {compiled_out.layout} {compiled_out}"
except Exception as exc:
    compiled = f"{type(exc).__name__} {str(exc).splitlines()[0]}"

print("input_layout:", x.layout)
print("eager:", eager)
print("compiled:", compiled)

if eager.startswith("OK") and not compiled.startswith("OK"):
    raise SystemExit(0)

raise SystemExit(1)

---

input_layout: torch._mkldnn
eager: OK torch.strided tensor([[-1.0000, -0.3333,  0.3333],
        [ 1.0000,  1.6667,  2.3333],
        [ 3.0000,  3.6667,  4.3333]])
compiled: RuntimeError Cannot access data pointer of Tensor that doesn't have storage
RAW_BUFFERClick to expand / collapse

🐛 Describe the bug

torch.compile with the Inductor backend crashes on a model that converts an MKLDNN tensor to dense and then applies simple arithmetic.

Eager execution succeeds and returns a strided tensor. The compiled version fails with: RuntimeError: Cannot access data pointer of Tensor that doesn't have storage

import torch
import torch.nn as nn

class M(nn.Module):
    def forward(self, x):
        return x.to_dense() * 2 - 1

if not torch.backends.mkldnn.is_available():
    raise SystemExit(2)

model = M().eval()
x = (torch.arange(9, dtype=torch.float32).reshape(3, 3) / 3).to_mkldnn()

try:
    eager_out = model(x)
    eager = f"OK {eager_out.layout} {eager_out}"
except Exception as exc:
    eager = f"{type(exc).__name__} {str(exc).splitlines()[0]}"

try:
    compiled_out = torch.compile(
        model,
        backend="inductor",
        fullgraph=True,
        dynamic=True,
    )(x)
    compiled = f"OK {compiled_out.layout} {compiled_out}"
except Exception as exc:
    compiled = f"{type(exc).__name__} {str(exc).splitlines()[0]}"

print("input_layout:", x.layout)
print("eager:", eager)
print("compiled:", compiled)

if eager.startswith("OK") and not compiled.startswith("OK"):
    raise SystemExit(0)

raise SystemExit(1)

Error logs

input_layout: torch._mkldnn
eager: OK torch.strided tensor([[-1.0000, -0.3333,  0.3333],
        [ 1.0000,  1.6667,  2.3333],
        [ 3.0000,  3.6667,  4.3333]])
compiled: RuntimeError Cannot access data pointer of Tensor that doesn't have storage

Versions

PyTorch version: 2.13.0.dev20260513+cpu Is debug build: False CUDA used to build PyTorch: Could not collect ROCM used to build PyTorch: N/A

OS: Ubuntu 24.04.3 LTS (x86_64) GCC version: (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 Clang version: 18.1.3 (1ubuntu1) CMake version: Could not collect Libc version: glibc-2.39

Python version: 3.11.15 (main, Mar 11 2026, 17:20:07) [GCC 14.3.0] (64-bit runtime) Python platform: Linux-6.17.0-20-generic-x86_64-with-glibc2.39 Is CUDA available: False CUDA runtime version: Could not collect CUDA_MODULE_LOADING set to: N/A GPU models and configuration: GPU 0: NVIDIA RTX 6000 Ada Generation GPU 1: NVIDIA RTX 6000 Ada Generation

Nvidia driver version: 570.211.01 cuDNN version: Could not collect Is XPU available: False HIP runtime version: N/A MIOpen runtime version: N/A Is XNNPACK available: True Caching allocator config: N/A

Versions of relevant libraries: [pip3] numpy==2.4.4 [pip3] torch==2.13.0.dev20260513+cpu [conda] numpy 2.4.4 pypi_0 pypi [conda] torch 2.13.0.dev20260513+cpu pypi_0 pypi

cc @gujinghui @PenghuiCheng @XiaobingSuper @jianyuh @jgong5 @mingfeima @sanchitintel @ashokei @jingxu10 @min-jean-cho @yanbing-j @Guobing-Chen @Xia-Weiwen @snadampal @chauhang @penguinwu @voznesenskym @EikanWang @zhuhaozhe @blzheng @wenzhe-nrv @jiayisunx @ipiszy @kadeng @muchulee8 @amjames @aakhundov @coconutruben @jataylo

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

pytorch - 💡(How to fix) Fix torch.compile raises RuntimeError on MKLDNN tensor to_dense followed by arithmetic