code: def test_non_dnnl_fcomputeex():
      # test special case where DNNL formatted NDArray feeds into non-dnnl fcomputeex operator
      # conv is example where DNNL NDArray is created from regular NDArrays
      # CustomOps is example of non-dnnl fcomputeex operator
  
      @mx.operator.register("custom")
      class CustomProp(mx.operator.CustomOpProp):
          def __int__(self):
              super(CustomProp, self).__init__(need_top_grad=False)
  
          def list_arguments(self):
              return ["data"]
  
          def list_outputs(self):
              return ["output"]
  
          def infer_shape(self, in_shape):
              data_shape = in_shape[0]
              output_shape = in_shape[0]
              return [data_shape], [output_shape], []
  
          def infer_type(self, in_type):
              dtype = in_type[0]
              return [dtype], [dtype], []
  
          def create_operator(self, ctx, shapes, dtypes):
              return Custom()
  
      class Custom(mx.operator.CustomOp):
          def forward(self, is_train, req, in_data, out_data, aux):
              print(in_data[0])
              self.assign(out_data[0], req[0], in_data[0])
  
          def backward(
              self, req, out_grad, in_data, out_data, in_grad, aux
          ):
              self.assign(in_grad[0], req[0], out_grad)
  
      data = mx.symbol.Variable("data")
      conv = mx.sym.Convolution(
          data=data,
          kernel=(5, 5),
          pad=(1, 1),
          stride=(1, 1),
          num_filter=8,
          name="conv",
          no_bias=True,
      )
      custom = mx.symbol.Custom(
          name="custom", data=conv, op_type="custom"
      )
      exec1 = custom._bind(
          mx.cpu(),
          args={
              "data": mx.nd.ones([10, 3, 96, 96]),
              "conv_weight": mx.nd.ones([8, 3, 5, 5]),
          },
      )
      exec1.forward()[0].wait_to_read()
  
imports: import sys
  import os
  import numpy
  import mxnet
  import pytest
  from mxnet.test_utils import rand_ndarray, assert_almost_equal
  from mxnet import gluon, context, use_np
  from mxnet.gluon import nn
  from mxnet.test_utils import *
  import itertools
label_desc: Use image node_id 20 for calling a global function with example usage: test_non_dnnl_fcomputeex() and returns: list, list, list,  list,  list, list,  list,  list, Custom