code: def _dropout(
      x_ptr,  # pointer to the input
      x_keep_ptr,  # pointer to a mask of 0s and 1s
      output_ptr,  # pointer to the output
      n_elements,  # number of elements in the `x` tensor
      p,  # probability that an element of `x` is changed to zero
      BLOCK_SIZE: tl.constexpr,
  ):
      pid = tl.program_id(axis=0)
      block_start = pid * BLOCK_SIZE
      offsets = block_start + tl.arange(0, BLOCK_SIZE)
      mask = offsets < n_elements
      # Load data
      x = tl.load(x_ptr + offsets, mask=mask)
      x_keep = tl.load(x_keep_ptr + offsets, mask=mask)
      # The line below is the crucial part, described in the paragraph above!
      output = tl.where(x_keep, x / (1 - p), 0.0)
      # Write-back output
      tl.store(output_ptr + offsets, output, mask=mask)
  
imports: import tabulate
  import torch
  import triton
  import triton.language
label_desc: Use image node_id 1 for calling a global function with example usage: _dropout(x_ptr, x_keep_ptr, output_ptr, n_elements, p, BLOCK_SIZE) without return types