{"record":{"id":"90f8dde21141941e","repo":"jax-ml/jax","slug":"invalid-memory-space-memory-space-r","errorCode":null,"errorMessage":"Invalid memory space: {memory_space!r}","messagePattern":"Invalid memory space: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"jax/_src/pallas/mosaic/core.py","lineNumber":519,"sourceCode":"      return memory_space\n    case (\n        pallas_core.MemorySpace.ERROR\n        | pallas_core.MemorySpace.INDEX\n        | pallas_core.MemorySpace.KEY\n    ):\n      return MemorySpace.SMEM\n    case pallas_core.CoreMemorySpace():\n      return (\n          memory_space.memory_space\n          if memory_space.mesh.core_type is core_type\n          else memory_space\n      )\n    case acc if isinstance(acc, AccMemorySpace):\n      return acc\n    case MemorySpace():\n      return memory_space\n    case _:\n      raise ValueError(f\"Invalid memory space: {memory_space!r}\")\n","sourceCodeStart":501,"sourceCodeEnd":520,"githubUrl":"https://github.com/jax-ml/jax/blob/1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb/jax/_src/pallas/mosaic/core.py#L501-L520","documentation":"The same mapping function validates that the memory space is one of the recognized types: an AccMemorySpace, a TPU MemorySpace, or pass-through ANY/Host spaces. Anything else (unknown enum, string, None) raises ValueError with the repr of the offending value.","triggerScenarios":"Passing a raw string like 'vmem', a pallas_core memory-space constant not known to the TPU backend, or None as memory_space during kernel lowering or ref attribute construction.","commonSituations":"Using pl.gpu_memory_space constants in a TPU kernel; passing memory_space names as strings from config; API changes renaming enum members between versions.","solutions":["Use TPU memory space objects (e.g., pltpu.VMEM / MemorySpace enum members or AccMemorySpace), never strings","Check imports: GPU-specific spaces (GMEM, SMEM from pl.gpu) are invalid on TPU","Align JAX/Mosaic versions so enum members match the mapping function"],"exampleFix":"// before\nref = pltpu.make_block_ref(..., memory_space='vmem')\n// after\nfrom jax.experimental.pallas import tpu as pltpu\nref = pltpu.make_block_ref(..., memory_space=pltpu.VMEM)","handlingStrategy":"type-guard","validationCode":"from jax._src.pallas import pallas_core\nfrom jax._src import core as jax_core\ndef is_valid_space(ms):\n    return isinstance(ms, (pallas_core.MemorySpace, jax_core.MemorySpace)) or hasattr(ms, 'tpu_memory_space')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pass memory-space enum objects, never strings","Keep GPU and TPU space imports strictly separated per backend"],"tags":["jax","pallas","tpu","memory-space","validation"],"backgroundTag":"invalid-enum-value","analyzedSha":"1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb","analyzedAt":"2026-08-27T09:53:25.647Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}