code: def empty_shared_mem(name, is_create, shape, dtype="float32"):
      """Create an empty array with shared memory given shape and dtype
  
      Parameters
      ----------
      name : string
          The name of the shared memory. It's a file name in Unix.
  
      is_create : bool
          Whether to create the shared memory or use the one created by somewhere else.
  
      shape : tuple of int
          The shape of the array
  
      dtype : type or str
          The data type of the array.
  
      Returns
      -------
      arr : dgl.nd.NDArray
          The array dgl supported.
      """
      name = ctypes.c_char_p(name.encode("utf-8"))
      shape = c_array(dgl_shape_index_t, shape)
      ndim = ctypes.c_int(len(shape))
      handle = DGLArrayHandle()
      dtype = DGLDataType(dtype)
      check_call(
          _LIB.DGLArrayAllocSharedMem(
              name,
              shape,
              ndim,
              ctypes.c_int(dtype.type_code),
              ctypes.c_int(dtype.bits),
              ctypes.c_int(dtype.lanes),
              is_create,
              ctypes.byref(handle),
          )
      )
      return _make_array(handle, False)
  
imports: from __future__ import absolute_import
  import ctypes
  import sys
  import numpy
  from .base import _FFI_MODE, _LIB, c_array, c_str, check_call, string_types
  from .runtime_ctypes import dgl_shape_index_t, DGLArray, DGLArrayHandle, DGLContext, DGLDataType, TypeCode
label_desc: Use image node_id 4 for calling a global function with example usage: empty_shared_mem(name, is_create, shape, dtype) and returns: _make_array