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      392.85           58.02           0.74       True
            custom int64:  1199      369.54           53.71           0.70       True
         gather_1d int32:  1599      534.05           72.05           0.94       True
         gather_1d int64:  1599      654.68           81.88           0.91       True
            pad_1d int32:   999      364.35           41.05           0.55       True
            pad_1d int64:   999      465.00           45.48           0.58       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      426.14          233.11           9.14       True
            custom int64:  1199      362.61           60.13           2.75       True
         gather_1d int32:  1599      533.82          106.45          10.91       True
         gather_1d int64:  1599      608.82           85.44           3.91       True
            pad_1d int32:   999      354.22           44.62           1.77       True
            pad_1d int64:   999      386.67           44.50           1.80       True

-----------------------
1d_passthrough_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      359.07           55.14           1.96       True
            custom int64:  1199      409.89           54.51           1.85       True
         gather_1d int32:  1599      537.50           72.63           0.96       True
         gather_1d int64:  1599      573.93           73.50           0.88       True
              noop int32:   599      186.45           19.78           0.29       True
              noop int64:   599      197.27           21.48           0.36       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      360.37           82.82           9.01       True
            custom int64:  1199      419.81           61.37           2.62       True
         gather_1d int32:  1599      565.01          113.38          10.52       True
         gather_1d int64:  1599      618.05           86.96           3.88       True
              noop int32:   599      196.69           23.10           0.73       True
              noop int64:   599      249.45           23.71           0.73       True

-----------------------
1d_reverse_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      357.25           52.91           1.77       True
            custom int64:  1199      422.14           54.30           1.84       True
         gather_1d int32:  1599      549.99           74.83           0.96       True
         gather_1d int64:  1599      601.24           74.67           0.89       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      380.76           86.48           9.06       True
            custom int64:  1199      412.01           62.41           2.65       True
         gather_1d int32:  1599      598.38          105.11          11.33       True
         gather_1d int64:  1599      543.88           83.96           3.86       True

-----------------------
1d_random_50indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      424.43           54.83           1.29       True
            custom int64:  1199      377.24           60.30           1.31       True
         gather_1d int32:  1599      583.66           74.41           0.94       True
         gather_1d int64:  1599      563.84           78.84           0.89       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      358.02          127.40           9.05       True
            custom int64:  1199      362.52           58.92           2.69       True
         gather_1d int32:  1599      615.38          105.11          10.54       True
         gather_1d int64:  1599      555.85           83.12           4.12       True

-----------------------
2d_1index
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      437.58           54.52           2.00       True
            custom int64:  1199      386.91           57.45           2.29       True
custom_gather_cols int32:  3199     1369.34          180.85          16.69       True
custom_gather_cols int64:  3199     1419.23          194.36          17.55       True
         gather_nd int32:  6399     2452.87          329.68          17.03       True
         gather_nd int64:  6399     2679.48          338.59          17.10       True
            pad_2d int32:   999      370.22           45.15           5.18       True
            pad_2d int64:   999      434.94           47.60           5.31       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      407.88           83.33           9.36       True
            custom int64:  1199      364.19           60.34           2.73       True
custom_gather_cols int32:  3199     1296.25          202.97          12.69       True
custom_gather_cols int64:  3199     1312.01          188.24           5.68       True
         gather_nd int32:  6399     2564.70          389.17          17.54       True
         gather_nd int64:  6399     2601.57          378.51           9.30       True
            pad_2d int32:   999      382.79           49.07           1.73       True
            pad_2d int64:   999      391.57           45.27           1.83       True

-----------------------
2d_passthrough_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      429.27           62.95           7.78       True
            custom int64:  1199      370.10           61.47           7.65       True
custom_gather_cols int32:  3199     1357.05          170.39           5.28       True
custom_gather_cols int64:  3199     1383.59          234.91           5.21       True
         gather_nd int32:  6399     2445.98          339.90          28.49       True
         gather_nd int64:  6399     2836.75          352.37          28.53       True
              noop int32:   599      192.86           19.99           0.34       True
              noop int64:   599      191.85           19.77           0.31       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      367.08           78.87           9.10       True
            custom int64:  1199      421.57           61.10           2.77       True
custom_gather_cols int32:  3199     1307.45          199.80          13.24       True
custom_gather_cols int64:  3199     1329.58          185.61           5.85       True
         gather_nd int32:  6399     2656.30          397.53          16.77       True
         gather_nd int64:  6399     2573.14          371.44           9.59       True
              noop int32:   599      205.29           26.78           0.76       True
              noop int64:   599      238.62           23.64           0.83       True

-----------------------
2d_reverse_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      428.20           62.88           7.83       True
            custom int64:  1199      367.49           60.30           7.80       True
custom_gather_cols int32:  3199     1358.01          182.56          17.71       True
custom_gather_cols int64:  3199     1382.87          192.26          19.46       True
         gather_nd int32:  6399     2519.70          342.91          28.97       True
         gather_nd int64:  6399     2651.90          347.82          28.88       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      392.02           87.65           9.58       True
            custom int64:  1199      426.82           60.26           2.79       True
custom_gather_cols int32:  3199     1305.86          208.48          12.72       True
custom_gather_cols int64:  3199     1317.82          179.16           5.82       True
         gather_nd int32:  6399     2647.34          438.65          18.39       True
         gather_nd int64:  6399     2566.70          372.08           9.39       True

-----------------------
2d_random_50indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      425.29           62.26           7.97       True
            custom int64:  1199      376.41           61.54           7.59       True
custom_gather_cols int32:  3199     1354.49          178.19          17.40       True
custom_gather_cols int64:  3199     1290.09          180.45          18.36       True
         gather_nd int32:  6399     2595.33          338.85          25.68       True
         gather_nd int64:  6399     2576.88          342.40          25.85       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      447.45           93.49           9.10       True
            custom int64:  1199      372.86           59.14           2.76       True
custom_gather_cols int32:  3199     1345.25          253.68          13.20       True
custom_gather_cols int64:  3199     1357.83          185.77           5.76       True
         gather_nd int32:  6399     2604.16          407.14          17.78       True
         gather_nd int64:  6399     2568.74          367.03           9.38       True
