aboutsummaryrefslogtreecommitdiff
path: root/src/core/GLES_COMPUTE/kernels
diff options
context:
space:
mode:
authorJoel Liang <joel.liang@arm.com>2017-11-10 09:59:19 +0800
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:35:24 +0000
commitf1f3ebd517089e934cf3f06e64d90619a395ad87 (patch)
tree8dac05909b5f522a1c78e0ac4423cb6f65254391 /src/core/GLES_COMPUTE/kernels
parent283c1790da45ab562ecfb2aa7741297191886d85 (diff)
downloadComputeLibrary-f1f3ebd517089e934cf3f06e64d90619a395ad87.tar.gz
APPBROWSER-298, APPBROWSER-306: Reimplement the common code of compute shader
The new common code of compute shader is in file helpers_cs.h Rewrite the direct_convolution1x1.cs and softmax_layer.cs to use the new common code. It will also remove the dependence of the token pasting operator (##). We'll remove the "##" support after we rewrite all of the compute shader code. Change-Id: Icd8553ef6b61ad484a8507590ac8ed499bd47061 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/95455 Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com> Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Reviewed-by: Frank Lei <frank.lei@arm.com> (cherry picked from commit 0a4f83570d261f839d9866b68979efe8d7a95883) Reviewed-on: http://mpd-gerrit.cambridge.arm.com/95601 Reviewed-by: Jim He <jim.he@arm.com>
Diffstat (limited to 'src/core/GLES_COMPUTE/kernels')
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCAbsoluteDifferenceKernel.cpp5
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCActivationLayerKernel.cpp4
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCBatchNormalizationLayerKernel.cpp4
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCCol2ImKernel.cpp7
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCDepthConcatenateKernel.cpp2
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCDirectConvolutionLayerKernel.cpp9
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCDropoutKernel.cpp3
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCFillBorderKernel.cpp14
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCGEMMInterleave4x4Kernel.cpp5
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCGEMMMatrixAccumulateBiasesKernel.cpp4
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCGEMMMatrixAdditionKernel.cpp4
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCGEMMMatrixMultiplyKernel.cpp2
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCGEMMTranspose1xWKernel.cpp4
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCIm2ColKernel.cpp13
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCNormalizationLayerKernel.cpp4
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCPixelWiseMultiplicationKernel.cpp5
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCPoolingLayerKernel.cpp3
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCSoftmaxLayerKernel.cpp107
-rw-r--r--src/core/GLES_COMPUTE/kernels/GCTransposeKernel.cpp5
19 files changed, 28 insertions, 176 deletions
diff --git a/src/core/GLES_COMPUTE/kernels/GCAbsoluteDifferenceKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCAbsoluteDifferenceKernel.cpp
index d76ae8ff1c..c0f454d563 100644
--- a/src/core/GLES_COMPUTE/kernels/GCAbsoluteDifferenceKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCAbsoluteDifferenceKernel.cpp
@@ -80,11 +80,6 @@ void GCAbsoluteDifferenceKernel::configure(const IGCTensor *input1, const IGCTen
output_access.set_valid_region(win, valid_region);
- _kernel.clear_params();
-
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCActivationLayerKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCActivationLayerKernel.cpp
index 42433cf076..b8672c662d 100644
--- a/src/core/GLES_COMPUTE/kernels/GCActivationLayerKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCActivationLayerKernel.cpp
@@ -99,10 +99,6 @@ void GCActivationLayerKernel::configure(IGCTensor *input, IGCTensor *output, Act
AccessWindowHorizontal(input->info(), 0, num_elems_processed_per_iteration));
}
- _kernel.clear_params();
-
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCBatchNormalizationLayerKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCBatchNormalizationLayerKernel.cpp
index 9c24d2ef42..982143f0b2 100644
--- a/src/core/GLES_COMPUTE/kernels/GCBatchNormalizationLayerKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCBatchNormalizationLayerKernel.cpp
@@ -91,10 +91,6 @@ void GCBatchNormalizationLayerKernel::configure(const IGCTensor *input, IGCTenso
update_window_and_padding(win, input_access, output_access, mean_access, var_access, beta_access, gamma_access);
output_access.set_valid_region(win, input->info()->valid_region());
- _kernel.clear_params();
-
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCCol2ImKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCCol2ImKernel.cpp
index 10716232c9..492f708a98 100644
--- a/src/core/GLES_COMPUTE/kernels/GCCol2ImKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCCol2ImKernel.cpp
@@ -46,8 +46,6 @@ void GCCol2ImKernel::configure(const IGCTensor *input, IGCTensor *output,
ARM_COMPUTE_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(input, 1, DataType::F32);
ARM_COMPUTE_ERROR_ON_MISMATCHING_DATA_TYPES(input, output);
- _kernel.clear_params();
-
_input = input;
_output = output;
_convolved_dims = convolved_dims;
@@ -63,7 +61,7 @@ void GCCol2ImKernel::configure(const IGCTensor *input, IGCTensor *output,
// Set static kernel arguments
unsigned int idx = num_arguments_per_2D_tensor() + num_arguments_per_3D_tensor();
- _kernel.set_params(idx++, _convolved_dims.first);
+ _kernel.set_argument(idx++, _convolved_dims.first);
// Configure window
Window win = calculate_max_window(*input->info(), Steps());
@@ -71,9 +69,6 @@ void GCCol2ImKernel::configure(const IGCTensor *input, IGCTensor *output,
// The GCCol2ImKernel doesn't need padding so update_window_and_padding() can be skipped
output->info()->set_valid_region(ValidRegion(Coordinates(), output->info()->tensor_shape()));
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCDepthConcatenateKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCDepthConcatenateKernel.cpp
index 7f9f438a46..b90a8e7b89 100644
--- a/src/core/GLES_COMPUTE/kernels/GCDepthConcatenateKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCDepthConcatenateKernel.cpp
@@ -108,8 +108,6 @@ void GCDepthConcatenateKernel::configure(const IGCTensor *input, unsigned int de
update_window_and_padding(win, input_access, output_access);
output_access.set_valid_region(win, ValidRegion(Coordinates(0, 0), output->info()->tensor_shape()));
- _kernel.clear_params();
- _kernel.set_shader_params_binding_point(0);
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCDirectConvolutionLayerKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCDirectConvolutionLayerKernel.cpp
index 1fa2a71fff..5c7320aa8d 100644
--- a/src/core/GLES_COMPUTE/kernels/GCDirectConvolutionLayerKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCDirectConvolutionLayerKernel.cpp
@@ -228,8 +228,6 @@ void GCDirectConvolutionLayerKernel<kernel_size>::configure(const IGCTensor *inp
_kernel = static_cast<GCKernel>(GCKernelLibrary::get().create_kernel(kernel_name.str(), options));
- _kernel.clear_params();
-
unsigned int idx = (_bias == nullptr) ? 3 * num_arguments_per_3D_tensor() : (num_arguments_per_1D_tensor() + 3 * num_arguments_per_3D_tensor());
// Calculate output right and bottom border
@@ -290,11 +288,8 @@ void GCDirectConvolutionLayerKernel<kernel_size>::configure(const IGCTensor *inp
output_access.set_valid_region(win, ValidRegion(Coordinates(), output->info()->tensor_shape()));
- _kernel.set_params(idx++, _weights->info()->strides_in_bytes()[3]); // weights_stride_w
- _kernel.set_params(idx++, _weights->info()->dimension(2)); // weights_depth
-
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
+ _kernel.set_argument(idx++, _weights->info()->strides_in_bytes()[3]); // weights_stride_w
+ _kernel.set_argument(idx++, _weights->info()->dimension(2)); // weights_depth
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCDropoutKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCDropoutKernel.cpp
index 6244fbef80..cdd6a9d989 100644
--- a/src/core/GLES_COMPUTE/kernels/GCDropoutKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCDropoutKernel.cpp
@@ -53,7 +53,6 @@ void GCDropoutKernel::configure(const IGCTensor *input, IGCTensor *mask, IGCTens
_input = input;
_mask = mask;
_output = output;
- _kernel.clear_params();
std::set<std::string> build_opts;
std::string dt_name = (input->info()->data_type() == DataType::F32) ? "DATA_TYPE_FP32" : "DATA_TYPE_FP16";
@@ -81,8 +80,6 @@ void GCDropoutKernel::configure(const IGCTensor *input, IGCTensor *mask, IGCTens
output->info()->set_valid_region(ValidRegion(Coordinates(), output->info()->tensor_shape()));
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCFillBorderKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCFillBorderKernel.cpp
index 36742ef81e..b4efc0b9a0 100644
--- a/src/core/GLES_COMPUTE/kernels/GCFillBorderKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCFillBorderKernel.cpp
@@ -54,7 +54,7 @@ void GCFillBorderKernel::set_constant_border(unsigned int idx, const PixelValue
{
T value;
constant_border_value.get(value);
- _kernel.set_params(idx, static_cast<T>(value));
+ _kernel.set_argument(idx, static_cast<T>(value));
}
void GCFillBorderKernel::configure(const IGCTensor *tensor, BorderSize border_size, BorderMode border_mode, const PixelValue &constant_border_value)
@@ -112,8 +112,6 @@ void GCFillBorderKernel::configure(const IGCTensor *tensor, BorderSize border_si
_kernel = static_cast<GCKernel>(GCKernelLibrary::get().create_kernel(kernel_name, build_opts));
_tensor = tensor;
- _kernel.clear_params();
-
// Create static kernel arguments
const unsigned int valid_width = tensor->info()->valid_region().shape[0];
const unsigned int valid_height = tensor->info()->valid_region().shape[1];
@@ -121,10 +119,10 @@ void GCFillBorderKernel::configure(const IGCTensor *tensor, BorderSize border_si
// Set static kernel arguments
unsigned int idx = num_arguments_per_3D_tensor(); //Skip the tensor parameters
- _kernel.set_params(idx++, valid_width);
- _kernel.set_params(idx++, valid_height);
- _kernel.set_params(idx++, tensor->info()->valid_region().anchor[0]);
- _kernel.set_params(idx++, tensor->info()->valid_region().anchor[1]);
+ _kernel.set_argument(idx++, valid_width);
+ _kernel.set_argument(idx++, valid_height);
+ _kernel.set_argument(idx++, tensor->info()->valid_region().anchor[0]);
+ _kernel.set_argument(idx++, tensor->info()->valid_region().anchor[1]);
if(BorderMode::CONSTANT == border_mode)
{
@@ -137,8 +135,6 @@ void GCFillBorderKernel::configure(const IGCTensor *tensor, BorderSize border_si
win.set(Window::DimY, Window::Dimension(0, 1, 1));
win.use_tensor_dimensions(tensor->info()->tensor_shape(), Window::DimZ);
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCGEMMInterleave4x4Kernel.cpp b/src/core/GLES_COMPUTE/kernels/GCGEMMInterleave4x4Kernel.cpp
index 5e3788af99..4bc6731064 100644
--- a/src/core/GLES_COMPUTE/kernels/GCGEMMInterleave4x4Kernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCGEMMInterleave4x4Kernel.cpp
@@ -84,11 +84,6 @@ void GCGEMMInterleave4x4Kernel::configure(const IGCTensor *input, IGCTensor *out
output_access.set_valid_region(win, input->info()->valid_region());
- _kernel.clear_params();
-
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixAccumulateBiasesKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixAccumulateBiasesKernel.cpp
index 434070a46c..8625d371e5 100644
--- a/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixAccumulateBiasesKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixAccumulateBiasesKernel.cpp
@@ -80,10 +80,6 @@ void GCGEMMMatrixAccumulateBiasesKernel::configure(IGCTensor *accum, const IGCTe
update_window_and_padding(win, biases_access, accum_access);
- _kernel.clear_params();
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixAdditionKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixAdditionKernel.cpp
index fa0415249a..cf5d37811f 100644
--- a/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixAdditionKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixAdditionKernel.cpp
@@ -74,10 +74,6 @@ void GCGEMMMatrixAdditionKernel::configure(const IGCTensor *input, IGCTensor *ou
output_access.set_valid_region(win, input->info()->valid_region());
- _kernel.clear_params();
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixMultiplyKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixMultiplyKernel.cpp
index ea9b3874b2..a75ab6b609 100644
--- a/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixMultiplyKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCGEMMMatrixMultiplyKernel.cpp
@@ -155,8 +155,6 @@ void GCGEMMMatrixMultiplyKernel::configure(const IGCTensor *input0, const IGCTen
output_access.set_valid_region(win, ValidRegion(coord, output->info()->tensor_shape()));
}
- _kernel.clear_params();
- _kernel.set_shader_params_binding_point(0);
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCGEMMTranspose1xWKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCGEMMTranspose1xWKernel.cpp
index a1270b4c3d..c361b60f84 100644
--- a/src/core/GLES_COMPUTE/kernels/GCGEMMTranspose1xWKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCGEMMTranspose1xWKernel.cpp
@@ -92,10 +92,6 @@ void GCGEMMTranspose1xWKernel::configure(const IGCTensor *input, IGCTensor *outp
output_access.set_valid_region(win, ValidRegion(Coordinates(0, 0), input->info()->tensor_shape()));
- _kernel.clear_params();
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCIm2ColKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCIm2ColKernel.cpp
index 935d8420ff..97c4dc48a1 100644
--- a/src/core/GLES_COMPUTE/kernels/GCIm2ColKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCIm2ColKernel.cpp
@@ -52,7 +52,6 @@ void GCIm2ColKernel::configure(const IGCTensor *input, IGCTensor *output, std::p
_input = input;
_output = output;
- _kernel.clear_params();
std::set<std::string> build_opts;
std::string dt_name = (input->info()->data_type() == DataType::F32) ? "DATA_TYPE_FP32" : "DATA_TYPE_FP16";
@@ -141,8 +140,6 @@ void GCIm2ColKernel::configure(const IGCTensor *input, IGCTensor *output, std::p
win.set_dimension_step(Window::DimZ, win[Window::DimZ].end() - win[Window::DimZ].start());
}
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
IGCKernel::configure(win);
}
@@ -189,9 +186,9 @@ void GCIm2ColKernel::run_generic(const Window &window)
add_3D_tensor_argument(idx, _input, 1, slice_in);
add_2D_tensor_argument(idx, _output, 2, slice_out);
- _kernel.set_params(idx++, static_cast<unsigned int>(_input->info()->dimension(2)));
- _kernel.set_params(idx++, static_cast<unsigned int>(_input->info()->strides_in_bytes()[3]));
- _kernel.set_params(idx++, static_cast<unsigned int>(_output->info()->strides_in_bytes()[3]));
+ _kernel.set_argument(idx++, static_cast<unsigned int>(_input->info()->dimension(2)));
+ _kernel.set_argument(idx++, static_cast<unsigned int>(_input->info()->strides_in_bytes()[3]));
+ _kernel.set_argument(idx++, static_cast<unsigned int>(_output->info()->strides_in_bytes()[3]));
_kernel.update_shader_params();
enqueue(*this, slice);
@@ -220,8 +217,8 @@ void GCIm2ColKernel::run_reduced(const Window &window)
add_3D_tensor_argument(idx, _input, 1, in_slice);
add_1D_tensor_argument(idx, _output, 2, out_slice);
- _kernel.set_params(idx++, _input->info()->dimension(0));
- _kernel.set_params(idx++, _input->info()->dimension(1));
+ _kernel.set_argument(idx++, _input->info()->dimension(0));
+ _kernel.set_argument(idx++, _input->info()->dimension(1));
_kernel.update_shader_params();
enqueue(*this, in_slice);
diff --git a/src/core/GLES_COMPUTE/kernels/GCNormalizationLayerKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCNormalizationLayerKernel.cpp
index 65e54f538c..c0c2445c6f 100644
--- a/src/core/GLES_COMPUTE/kernels/GCNormalizationLayerKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCNormalizationLayerKernel.cpp
@@ -92,10 +92,6 @@ void GCNormalizationLayerKernel::configure(const IGCTensor *input, const IGCTens
output_access.set_valid_region(win, input->info()->valid_region());
- _kernel.clear_params();
-
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCPixelWiseMultiplicationKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCPixelWiseMultiplicationKernel.cpp
index 2b5cee455c..21e967a67a 100644
--- a/src/core/GLES_COMPUTE/kernels/GCPixelWiseMultiplicationKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCPixelWiseMultiplicationKernel.cpp
@@ -80,8 +80,6 @@ void GCPixelWiseMultiplicationKernel::configure(const IGCTensor *input1, const I
// Create kernel
_kernel = static_cast<GCKernel>(GCKernelLibrary::get().create_kernel("pixelwise_mul_float", build_opts));
- _kernel.clear_params();
-
// Configure kernel window
constexpr unsigned int num_elems_processed_per_iteration = 1;
@@ -97,9 +95,6 @@ void GCPixelWiseMultiplicationKernel::configure(const IGCTensor *input1, const I
input2->info()->valid_region());
output_access.set_valid_region(win, valid_region);
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCPoolingLayerKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCPoolingLayerKernel.cpp
index 073c3961f2..0b6ba583a3 100644
--- a/src/core/GLES_COMPUTE/kernels/GCPoolingLayerKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCPoolingLayerKernel.cpp
@@ -219,9 +219,6 @@ void GCPoolingLayerKernel::configure(const IGCTensor *input, IGCTensor *output,
output_access.set_valid_region(win, ValidRegion(Coordinates(), output->info()->tensor_shape()));
}
- _kernel.clear_params();
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
diff --git a/src/core/GLES_COMPUTE/kernels/GCSoftmaxLayerKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCSoftmaxLayerKernel.cpp
index 09a0f79ab2..29a1385f87 100644
--- a/src/core/GLES_COMPUTE/kernels/GCSoftmaxLayerKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCSoftmaxLayerKernel.cpp
@@ -75,11 +75,9 @@ void GCLogits1DMaxKernel::configure(const IGCTensor *input, IGCTensor *output)
// Create kernel
_kernel = static_cast<GCKernel>(GCKernelLibrary::get().create_kernel("softmax_layer_max", build_opts));
- _kernel.clear_params();
-
// Set fixed arguments
unsigned int idx = 2 * num_arguments_per_3D_tensor(); //Skip the input and output parameters
- _kernel.set_params(idx++, input->info()->dimension(0));
+ _kernel.set_argument(idx++, input->info()->dimension(0));
// Configure kernel window
// The kernel loops over all elements in steps of 4
@@ -98,46 +96,9 @@ void GCLogits1DMaxKernel::configure(const IGCTensor *input, IGCTensor *output)
output_access.set_valid_region(win, ValidRegion(Coordinates(), output->info()->tensor_shape()));
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
-void GCLogits1DMaxKernel::run(const Window &window)
-{
- ARM_COMPUTE_ERROR_ON_INVALID_SUBWINDOW(IKernel::window(), window);
-
- Window slice = window.first_slice_window_3D();
-
- _kernel.use();
-
- do
- {
- unsigned int idx1 = 0;
- switch(_input->info()->data_type())
- {
- case DataType::F16:
- add_3D_tensor_argument(idx1, _input, BufferParam(1, 2), slice);
- add_3D_tensor_argument(idx1, _output, BufferParam(2, 2), slice);
- break;
-
- case DataType::F32:
- add_3D_tensor_argument(idx1, _input, BufferParam(1, 2), slice);
- add_3D_tensor_argument(idx1, _output, BufferParam(2, 2), slice);
- break;
-
- default:
- ARM_COMPUTE_ERROR("Current data type is mot supported");
- break;
- }
-
- _kernel.update_shader_params();
- enqueue(*this, slice);
- }
- while(window.slide_window_slice_3D(slice));
-}
-
GCLogits1DShiftExpSumKernel::GCLogits1DShiftExpSumKernel()
: _input(nullptr), _max(nullptr), _output(nullptr), _sum(nullptr)
{
@@ -179,11 +140,9 @@ void GCLogits1DShiftExpSumKernel::configure(const IGCTensor *input, const IGCTen
// Create kernel
_kernel = static_cast<GCKernel>(GCKernelLibrary::get().create_kernel("softmax_layer_shift_exp_sum", build_opts));
- _kernel.clear_params();
-
// Set fixed arguments
unsigned int idx = 4 * num_arguments_per_3D_tensor(); //Skip the input and output parameters
- _kernel.set_params(idx++, input->info()->dimension(0));
+ _kernel.set_argument(idx++, input->info()->dimension(0));
// Configure window
// The kernel loops over all elements in steps of 4
@@ -206,9 +165,6 @@ void GCLogits1DShiftExpSumKernel::configure(const IGCTensor *input, const IGCTen
output_access.set_valid_region(win, input->info()->valid_region());
sum_access.set_valid_region(win, ValidRegion(Coordinates(), sum->info()->tensor_shape()));
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
@@ -224,28 +180,13 @@ void GCLogits1DShiftExpSumKernel::run(const Window &window)
do
{
- unsigned int idx = 0;
- switch(_input->info()->data_type())
- {
- case DataType::F16:
- add_3D_tensor_argument(idx, _input, BufferParam(1, 2), slice);
- add_3D_tensor_argument(idx, _max, BufferParam(2, 2), slice);
- add_3D_tensor_argument(idx, _output, BufferParam(3, 2), slice);
- add_3D_tensor_argument(idx, _sum, BufferParam(4, 2), slice);
- break;
-
- case DataType::F32:
- add_3D_tensor_argument(idx, _input, BufferParam(1, 2), slice);
- add_3D_tensor_argument(idx, _max, BufferParam(2, 2), slice);
- add_3D_tensor_argument(idx, _output, BufferParam(3, 2), slice);
- add_3D_tensor_argument(idx, _sum, BufferParam(4, 2), slice);
- break;
-
- default:
- ARM_COMPUTE_ERROR("Current data type is mot supported");
- break;
- }
-
+ unsigned int idx = 0;
+ unsigned int binding = 1; // SSBO binding starts from 1.
+ // Set inputs
+ add_3D_tensor_argument(idx, _input, binding++, slice);
+ add_3D_tensor_argument(idx, _max, binding++, slice);
+ add_3D_tensor_argument(idx, _output, binding++, slice);
+ add_3D_tensor_argument(idx, _sum, binding++, slice);
_kernel.update_shader_params();
enqueue(*this, slice);
}
@@ -303,11 +244,6 @@ void GCLogits1DNormKernel::configure(const IGCTensor *input, const IGCTensor *su
output_access.set_valid_region(win, input->info()->valid_region());
- _kernel.clear_params();
-
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}
@@ -326,25 +262,12 @@ void GCLogits1DNormKernel::run(const Window &window)
Window sum_slice = slice;
sum_slice.set(Window::DimX, Window::Dimension(0, 1, 1));
- unsigned int idx1 = 0;
- switch(_input->info()->data_type())
- {
- case DataType::F16:
- add_3D_tensor_argument(idx1, _input, BufferParam(1, 2), slice);
- add_3D_tensor_argument(idx1, _sum, BufferParam(2, 2), slice);
- add_3D_tensor_argument(idx1, _output, BufferParam(3, 2), slice);
- break;
-
- case DataType::F32:
- add_3D_tensor_argument(idx1, _input, BufferParam(1, 2), slice);
- add_3D_tensor_argument(idx1, _sum, BufferParam(2, 2), slice);
- add_3D_tensor_argument(idx1, _output, BufferParam(3, 2), slice);
- break;
-
- default:
- ARM_COMPUTE_ERROR("Current data type is mot supported");
- break;
- }
+ unsigned int idx = 0;
+ unsigned int binding = 1; // SSBO binding starts from 1.
+ // Set inputs
+ add_3D_tensor_argument(idx, _input, binding++, slice);
+ add_3D_tensor_argument(idx, _sum, binding++, slice);
+ add_3D_tensor_argument(idx, _output, binding++, slice);
_kernel.update_shader_params();
enqueue(*this, slice);
diff --git a/src/core/GLES_COMPUTE/kernels/GCTransposeKernel.cpp b/src/core/GLES_COMPUTE/kernels/GCTransposeKernel.cpp
index b891b42ef8..5bd34c2c85 100644
--- a/src/core/GLES_COMPUTE/kernels/GCTransposeKernel.cpp
+++ b/src/core/GLES_COMPUTE/kernels/GCTransposeKernel.cpp
@@ -67,8 +67,6 @@ void GCTransposeKernel::configure(const IGCTensor *input, IGCTensor *output)
// Create kernel
_kernel = static_cast<GCKernel>(GCKernelLibrary::get().create_kernel("transpose", build_opts));
- _kernel.clear_params();
-
// Configure kernel window
const unsigned int num_elems_processed_per_iteration = 4;
@@ -80,9 +78,6 @@ void GCTransposeKernel::configure(const IGCTensor *input, IGCTensor *output)
output_access.set_valid_region(win, input->info()->valid_region());
- // set shader params binding point
- _kernel.set_shader_params_binding_point(0);
-
IGCKernel::configure(win);
}