{"record":{"id":"366016e2d9e39b30","repo":"jax-ml/jax","slug":"collective-axes-is-not-supported-in-pallas-call-u","errorCode":null,"errorMessage":"collective_axes is not supported in pallas_call. Use plgpu.kernel with plgpu.emit_pipeline_warp_specialized instead.","messagePattern":"collective_axes is not supported in pallas_call\\. Use plgpu\\.kernel with plgpu\\.emit_pipeline_warp_specialized instead\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"jax/_src/pallas/mosaic_gpu/core.py","lineNumber":1423,"sourceCode":"  transforms: Sequence[state_types.Transform] = ()\n  delay_release: int = 0\n  collective_axes: tuple[Hashable, ...] | None = None\n  oob_fill_mode: OOBFillMode = OOBFillMode.ZEROS\n\n  def to_block_mapping(\n      self,\n      origin: pallas_core.OriginStr,\n      array_aval: jax_core.ShapedArray,\n      *,\n      index_map_avals: Sequence[jax_core.AbstractValue],\n      index_map_tree: tree_util.PyTreeDef,\n      grid: pallas_core.GridMappingGrid,\n      vmapped_dims: tuple[int, ...],\n      allow_captured_consts: bool = False,\n      debug: bool = False,\n  ) -> pallas_core.BlockMapping:\n    if self.collective_axes:\n      raise ValueError(\n          \"collective_axes is not supported in pallas_call. Use plgpu.kernel\"\n          \" with plgpu.emit_pipeline_warp_specialized instead.\"\n      )\n    bm = super().to_block_mapping(\n        origin,\n        array_aval,\n        index_map_avals=index_map_avals,\n        index_map_tree=index_map_tree,\n        grid=grid,\n        vmapped_dims=vmapped_dims,\n        allow_captured_consts=allow_captured_consts,\n        debug=debug,\n    )\n    block_inner_aval = bm.block_aval.inner_aval\n    for t in self.transforms:\n      block_inner_aval = t.transform_type(block_inner_aval)\n    return bm.replace(\n        transformed_block_aval=bm.block_aval.update(","sourceCodeStart":1405,"sourceCodeEnd":1441,"githubUrl":"https://github.com/jax-ml/jax/blob/1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb/jax/_src/pallas/mosaic_gpu/core.py#L1405-L1441","documentation":"Raised by the pallas_call-interpreting interpreter's to_block_mapping: the collective_axes option (used by warp-specialized collective pipelines) is not implemented for pallas_call. The message points users to plgpu.kernel with plgpu.emit_pipeline_warp_specialized instead.","triggerScenarios":"Passing an interpreter/config with collective_axes set (non-empty) to the Mosaic pallas_call path — e.g. a ClusterBarrierType or kernel spec with collective_axes used from pallas_call.","commonSituations":"Porting plgpu.kernel pipeline code to pallas_call; setting collective_axes (for cluster collectives like collective matmuls) in a kernel invoked through pallas_call.","solutions":["Switch the kernel to plgpu.kernel with plgpu.emit_pipeline_warp_specialized, which supports collective_axes","Remove/clear collective_axes if you don't need cluster collectives in pallas_call","Restructure the collective as an explicit distributed matmul pattern supported by pallas_call"],"exampleFix":"// before\npl.pallas_call(kernel, out_shape, collective_axes=(0,))(...)  # ValueError\n// after\nplgpu.kernel(kernel, out_shape, interpreter=plgpu.emit_pipeline_warp_specialized)(...)","handlingStrategy":"validation","validationCode":"if getattr(config, 'collective_axes', None):\n    raise SystemExit('collective_axes requires plgpu.kernel + emit_pipeline_warp_specialized')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Don't set collective_axes with pallas_call","Use plgpu.kernel with plgpu.emit_pipeline_warp_specialized for cluster collectives"],"tags":["jax","pallas","mosaic-gpu","collective-axes","unsupported-feature"],"backgroundTag":"unsupported-option-for-api","analyzedSha":"1e1c6a8fc06dfcd1247076ec5cae4640cea5d7bb","analyzedAt":"2026-08-27T09:53:25.647Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}