{
  "id": "fn-gpu-scale",
  "dataComponent": "gpu",
  "heading": {
    "title": "scale",
    "badges": ["GPU", "PARTIAL"]
  },
  "synopsis": "Multiplies every element of a 2D tensor by a scalar (int/float) on the GPU, returning a new tensor of the same shape. Partial usage is allowed.",
  "codeBlocks": [
    "extend(\"gpu\")\\n\\n# 1) Basic usage => scalar * matrix\\nMat = gpu:to_tensor([[1,2,3,4],[5,6,7,8]])\\nScaled = gpu:scale(10, Mat)\\nslog(gpu:to_array(Scaled))\\n# => [[10.0,20.0,30.0,40.0],[50.0,60.0,70.0,80.0]]\\n\\n# 2) Partial usage => known scalar, missing matrix\\nscaleBy0_5 = gpu:scale(0.5)\\nres = scaleBy0_5(Mat)\\nslog(gpu:to_array(res))\\n# => [[0.5,1.0,1.5,2.0],[2.5,3.0,3.5,4.0]]\\n\\n# 3) If bridging lacks real GPU logic => logs fallback CPU, but result is the same.\\n"
  ],
  "notes": [
    "Takes exactly 2 arguments => (scalar, tensor). The scalar can be int or float. The second must be a 2D float32 tensor.",
    "gpu:scale => elementwise multiplication by the scalar. Returns a new tensor with identical shape.",
    "If GPU is missing or not implemented for scale, logs fallback CPU. Partial usage => e.g. scale(10) => a function expecting the matrix next."
  ]
}
