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

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

-----------------------
1d_1index
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      361.52           54.98           0.57       True
            custom int64:  1199      338.94           51.80           0.58       True
         gather_1d int32:  1599      548.63           71.16           0.76       True
         gather_1d int64:  1599      498.91           73.41           0.74       True
            pad_1d int32:   999      328.79           40.41           0.39       True
            pad_1d int64:   999      382.79           40.26           0.40       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      384.05          184.59           4.07       True
            custom int64:  1199      349.39           58.98           1.97       True
         gather_1d int32:  1599      550.53           94.58           5.16       True
         gather_1d int64:  1599      500.32           77.96           3.15       True
            pad_1d int32:   999      325.33           43.57           1.30       True
            pad_1d int64:   999      328.02           44.43           1.32       True

-----------------------
1d_passthrough_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      390.56           54.25           1.67       True
            custom int64:  1199      333.88           54.00           1.67       True
         gather_1d int32:  1599      496.95           70.84           0.77       True
         gather_1d int64:  1599      545.58           72.41           0.77       True
              noop int32:   599      175.78           21.08           0.24       True
              noop int64:   599      177.79           21.19           0.24       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      388.99           74.38           3.79       True
            custom int64:  1199      333.98           56.09           1.94       True
         gather_1d int32:  1599      499.77           95.48           5.16       True
         gather_1d int64:  1599      565.36           78.72           3.14       True
              noop int32:   599      178.05           23.57           0.39       True
              noop int64:   599      236.94           23.71           0.37       True

-----------------------
1d_reverse_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      334.18           52.67           1.65       True
            custom int64:  1199      335.83           52.58           1.66       True
         gather_1d int32:  1599      545.31           72.15           0.77       True
         gather_1d int64:  1599      494.61           71.75           0.77       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      401.59           71.50           3.76       True
            custom int64:  1199      343.99           58.07           1.95       True
         gather_1d int32:  1599      553.01           93.43           5.09       True
         gather_1d int64:  1599      510.41           81.08           3.11       True

-----------------------
1d_random_50indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      394.50           53.26           1.14       True
            custom int64:  1199      336.81           54.76           1.14       True
         gather_1d int32:  1599      499.44           71.70           0.77       True
         gather_1d int64:  1599      559.01           72.74           0.78       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      386.90           73.22           3.80       True
            custom int64:  1199      346.36           58.21           2.02       True
         gather_1d int32:  1599      540.38           98.08           5.01       True
         gather_1d int64:  1599      501.42           78.59           3.14       True

-----------------------
2d_1index
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      341.47           52.54           1.41       True
            custom int64:  1199      411.86           53.02           1.43       True
custom_gather_cols int32:  3199     1235.85          175.01          14.96       True
custom_gather_cols int64:  3199     1192.19          171.55          14.84       True
         gather_nd int32:  6399     2306.58          337.56          15.60       True
         gather_nd int64:  6399     2355.83          339.84          15.42       True
            pad_2d int32:   999      328.75           44.05           4.44       True
            pad_2d int64:   999      340.55           47.02           4.52       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      336.35           71.25           3.81       True
            custom int64:  1199      387.25           57.49           1.95       True
custom_gather_cols int32:  3199     1197.13          186.45           6.56       True
custom_gather_cols int64:  3199     1184.67          170.77           4.45       True
         gather_nd int32:  6399     2419.79          372.72           9.87       True
         gather_nd int64:  6399     2353.19          351.38           7.90       True
            pad_2d int32:   999      401.72           46.58           1.31       True
            pad_2d int64:   999      330.32           44.93           1.31       True

-----------------------
2d_passthrough_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      397.12           61.16           7.78       True
            custom int64:  1199      335.35           60.88           9.40       True
custom_gather_cols int32:  3199     1256.97          163.71           3.67       True
custom_gather_cols int64:  3199     1198.16          161.34           3.65       True
         gather_nd int32:  6399     2287.63          345.80          26.75       True
         gather_nd int64:  6399     2413.67          352.02          26.76       True
              noop int32:   599      175.19           21.10           0.25       True
              noop int64:   599      174.88           21.05           0.26       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      381.70           72.33           3.88       True
            custom int64:  1199      335.18           56.44           2.01       True
custom_gather_cols int32:  3199     1202.01          192.62           6.51       True
custom_gather_cols int64:  3199     1192.58          172.36           4.50       True
         gather_nd int32:  6399     2385.36          385.61          10.07       True
         gather_nd int64:  6399     2419.38          349.09           7.74       True
              noop int32:   599      235.26           24.67           0.50       True
              noop int64:   599      174.62           23.40           0.53       True

-----------------------
2d_reverse_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      396.03           61.54           7.75       True
            custom int64:  1199      334.40           61.77           9.46       True
custom_gather_cols int32:  3199     1236.57          175.72          16.06       True
custom_gather_cols int64:  3199     1205.22          173.57          15.99       True
         gather_nd int32:  6399     2295.53          346.49          26.77       True
         gather_nd int64:  6399     2347.25          358.38          26.67       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      335.44           71.97           3.92       True
            custom int64:  1199      408.19           60.39           2.03       True
custom_gather_cols int32:  3199     1192.82          188.90           6.49       True
custom_gather_cols int64:  3199     1188.12          172.15           4.50       True
         gather_nd int32:  6399     2399.24          374.30           9.91       True
         gather_nd int64:  6399     2357.36          353.12           7.88       True

-----------------------
2d_random_50indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      400.40           61.27           8.53       True
            custom int64:  1199      336.27           62.79           9.87       True
custom_gather_cols int32:  3199     1239.38          177.90          15.91       True
custom_gather_cols int64:  3199     1193.99          173.70          15.88       True
         gather_nd int32:  6399     2283.28          340.61          23.21       True
         gather_nd int64:  6399     2374.79          345.03          23.12       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      334.65           71.56           3.94       True
            custom int64:  1199      401.62           58.26           2.01       True
custom_gather_cols int32:  3199     1197.17          187.59           6.50       True
custom_gather_cols int64:  3199     1213.67          179.52           4.46       True
         gather_nd int32:  6399     2394.00          374.12           9.84       True
         gather_nd int64:  6399     2358.49          357.84           7.82       True
