code: def test_take_put(ctx_factory):
      context = ctx_factory()
      queue = cl.CommandQueue(context)
  
      for n in [5, 17, 333]:
          one_field_size = 8
          buf_gpu = cl.array.zeros(
              queue, n * one_field_size, dtype=np.float32
          )
          dest_indices = cl.array.to_device(
              queue,
              np.array([0, 1, 2, 3, 32, 33, 34, 35], dtype=np.uint32),
          )
          read_map = cl.array.to_device(
              queue, np.array([7, 6, 5, 4, 3, 2, 1, 0], dtype=np.uint32)
          )
  
          cl.array.multi_take_put(
              arrays=[buf_gpu for i in range(n)],
              dest_indices=dest_indices,
              src_indices=read_map,
              src_offsets=[i * one_field_size for i in range(n)],
              dest_shape=(96,),
          )
  
imports: import numpy
  import numpy.linalg
  import sys
  from pytools import memoize
  from test_array import general_clrand
  import pytest
  import pyopencl
  import pyopencl.array
  from pyopencl.tools import pytest_generate_tests_for_pyopencl
  from pyopencl.characterize import has_double_support, has_struct_arg_count_bug
  from pyopencl.scan import InclusiveScanKernel, ExclusiveScanKernel, GenericScanKernel, GenericDebugScanKernel
  from pyopencl.characterize import get_pocl_version
label_desc: Use image node_id 8 for calling a global function with example usage: test_take_put(ctx_factory) without return types