Params:
- num_param_rows=200
- num_param_cols=100
- num_indices=50
- num_ops=200
- num_runs=10
- dtype=<dtype: 'float32'>

Running tests:
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(1,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(1,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(1,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(1,)
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(1,)
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(1,)
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(1,)
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(1,)
--> slice_1d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(1,)
--> slice_1d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(1,)
--> slice_1d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(1,)
--> slice_1d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(1,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> noop: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> noop: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> noop: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> noop: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,)
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(50,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(50,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(50,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(50,)
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(50,)
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(50,)
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(50,)
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(50,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(1,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(1,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(1,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(1,)
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(1,)
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(1,)
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(1,)
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(1,)
--> slice_2d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(1,)
--> slice_2d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(1,)
--> slice_2d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(1,)
--> slice_2d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(1,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> noop: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> noop: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> noop: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> noop: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,)
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(50,)
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(50,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(50,)
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(50,)
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(50,)
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(50,)
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(50,)
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(50,)

-----------------------
1d_1index
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      320.62           45.87           0.40       True
         custom int64:   999      294.00           44.27           0.42       True
      gather_1d int32:   999      292.83           43.47           0.34       True
      gather_1d int64:   999      296.61           44.69           0.34       True
       slice_1d int32:  1199      426.15           51.99           0.44       True
       slice_1d int64:  1199      486.18           52.36           0.41       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      292.70          181.38           5.35       True
         custom int64:   999      342.69           49.92           3.25       True
      gather_1d int32:   999      349.96           66.54           3.28       True
      gather_1d int64:   999      293.79           47.10           1.39       True
       slice_1d int32:  1199      422.82           55.81           1.41       True
       slice_1d int64:  1199      432.01           57.01           1.42       True

-----------------------
1d_passthrough_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      348.01           44.54           0.48       True
         custom int64:   999      286.55           43.63           0.49       True
      gather_1d int32:   999      289.25           43.99           0.52       True
      gather_1d int64:   999      290.45           44.49           0.53       True
           noop int32:   599      181.17           22.18           0.24       True
           noop int64:   599      180.92           22.68           0.22       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      288.46           65.92           5.27       True
         custom int64:   999      339.19           49.69           3.45       True
      gather_1d int32:   999      343.78           63.99           3.24       True
      gather_1d int64:   999      293.44           49.76           1.36       True
           noop int32:   599      182.49           25.09           0.36       True
           noop int64:   599      244.93           24.96           0.38       True

-----------------------
1d_opt_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      288.19           43.61           0.52       True
         custom int64:   999      288.96           45.16           0.53       True
      gather_1d int32:   999      289.72           44.36           0.55       True
      gather_1d int64:   999      291.22           45.50           0.51       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      288.87           66.50           5.23       True
         custom int64:   999      351.78           50.24           3.43       True
      gather_1d int32:   999      346.34           64.48           3.30       True
      gather_1d int64:   999      296.36           49.17           1.33       True

-----------------------
1d_worst_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      287.25           43.46           0.54       True
         custom int64:   999      342.59           44.46           0.57       True
      gather_1d int32:   999      295.54           43.40           0.52       True
      gather_1d int64:   999      354.43           44.56           0.52       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      286.09           65.36           5.42       True
         custom int64:   999      287.33           49.31           3.53       True
      gather_1d int32:   999      295.35           63.97           3.32       True
      gather_1d int64:   999      290.55           49.61           1.32       True

-----------------------
1d_random_50indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      339.29           43.97           0.48       True
         custom int64:   999      288.12           44.03           0.51       True
      gather_1d int32:   999      292.12           44.09           0.45       True
      gather_1d int64:   999      293.89           44.81           0.44       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      289.94           66.06           5.32       True
         custom int64:   999      341.90           49.89           3.37       True
      gather_1d int32:   999      294.05           63.34           3.21       True
      gather_1d int64:   999      356.12           48.55           1.35       True

-----------------------
2d_1index
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      292.36           45.02           0.60       True
         custom int64:   999      291.33           43.48           0.60       True
      gather_nd int32:  4199     1418.92          210.36          11.53       True
      gather_nd int64:  4199     1477.55          211.94          11.62       True
       slice_2d int32:  1199      492.37           54.57           0.63       True
       slice_2d int64:  1199      422.44           54.04           0.63       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      348.58           65.86           5.21       True
         custom int64:   999      290.64           49.39           3.35       True
      gather_nd int32:  4199     1462.08          237.37           5.85       True
      gather_nd int64:  4199     1441.96          219.79           3.96       True
       slice_2d int32:  1199      471.10           58.90           1.59       True
       slice_2d int64:  1199      421.38           57.95           1.47       True

-----------------------
2d_passthrough_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      288.76           45.92           1.27       True
         custom int64:   999      350.65           45.25           1.28       True
      gather_nd int32:  4199     1456.55          220.10          22.62       True
      gather_nd int64:  4199     1454.45          220.19          22.74       True
           noop int32:   599      182.86           23.07           0.27       True
           noop int64:   599      187.01           22.76           0.27       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      287.09           65.18           5.50       True
         custom int64:   999      287.37           49.79           3.64       True
      gather_nd int32:  4199     1453.07          239.22           6.83       True
      gather_nd int64:  4199     1480.31          220.88           4.89       True
           noop int32:   599      181.80           24.66           0.51       True
           noop int64:   599      181.88           24.52           0.49       True

-----------------------
2d_opt_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      377.78           57.88           9.01       True
         custom int64:   999      288.55           51.18           8.30       True
      gather_nd int32:  4199     1403.74          221.49          22.09       True
      gather_nd int64:  4199     1451.45          221.56          22.09       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      287.14           64.05           5.55       True
         custom int64:   999      338.42           49.90           3.65       True
      gather_nd int32:  4199     1473.11          241.33           6.81       True
      gather_nd int64:  4199     1458.57          221.59           4.97       True

-----------------------
2d_worst_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      287.82           57.83          14.41       True
         custom int64:   999      376.03           57.27          13.21       True
      gather_nd int32:  4199     1457.95          221.86          22.70       True
      gather_nd int64:  4199     1461.43          227.80          22.63       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      289.18           66.32           5.51       True
         custom int64:   999      287.86           49.54           3.60       True
      gather_nd int32:  4199     1444.38          236.91           6.93       True
      gather_nd int64:  4199     1471.97          224.15           5.01       True

-----------------------
2d_random_50indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      292.42           52.34           7.56       True
         custom int64:   999      291.35           50.47           7.09       True
      gather_nd int32:  4199     1418.97          216.70          18.92       True
      gather_nd int64:  4199     1478.04          223.41          18.93       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      382.46           65.98           5.42       True
         custom int64:   999      289.84           49.83           3.56       True
      gather_nd int32:  4199     1462.95          236.77           6.99       True
      gather_nd int64:  4199     1435.42          220.31           4.90       True
