diff options
author | Michele Di Giorgio <michele.digiorgio@arm.com> | 2018-03-01 16:56:48 +0000 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:49:54 +0000 |
commit | 0cbb927ac309e332ac6e6f1ab9170f041f0138ab (patch) | |
tree | 102d50dec9f741f04b1126ae03e6e491dda2d3ba /tests/benchmark | |
parent | 82b51482479951cf133c223eb81aae291cb4d590 (diff) | |
download | ComputeLibrary-0cbb927ac309e332ac6e6f1ab9170f041f0138ab.tar.gz |
COMPMID-804: Add NHWC data format support for NEON batch normalisation
Change-Id: I04892e7be3f5aa58cd95917a4f90a6b4ffcf6efc
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/122897
Reviewed-by: Giorgio Arena <giorgio.arena@arm.com>
Tested-by: Jenkins <bsgcomp@arm.com>
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Diffstat (limited to 'tests/benchmark')
4 files changed, 133 insertions, 111 deletions
diff --git a/tests/benchmark/CL/BatchNormalizationLayer.cpp b/tests/benchmark/CL/BatchNormalizationLayer.cpp index 3312319aac..3d11aea1e7 100644 --- a/tests/benchmark/CL/BatchNormalizationLayer.cpp +++ b/tests/benchmark/CL/BatchNormalizationLayer.cpp @@ -51,54 +51,60 @@ using CLBatchNormalizationLayerFixture = BatchNormalizationLayerFixture<CLTensor TEST_SUITE(CL) REGISTER_FIXTURE_DATA_TEST_CASE(MobileNetBatchNormalizationLayer, CLBatchNormalizationLayerFixture, framework::DatasetMode::ALL, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::MobileNetBatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.f))), - data_types), - framework::dataset::make("Batches", 1))); + combine(combine(combine(combine(combine(datasets::MobileNetBatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.f))), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", 1))); REGISTER_FIXTURE_DATA_TEST_CASE(YOLOV2BatchNormalizationLayer, CLBatchNormalizationLayerFixture, framework::DatasetMode::ALL, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::YOLOV2BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", 1))); + combine(combine(combine(combine(combine(datasets::YOLOV2BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", 1))); REGISTER_FIXTURE_DATA_TEST_CASE(GoogLeNetInceptionV4BatchNormalizationLayer, CLBatchNormalizationLayerFixture, framework::DatasetMode::ALL, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", 1))); + combine(combine(combine(combine(combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", 1))); TEST_SUITE(NIGHTLY) REGISTER_FIXTURE_DATA_TEST_CASE(MobileNetBatchNormalizationLayer, CLBatchNormalizationLayerFixture, framework::DatasetMode::NIGHTLY, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::MobileNetBatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.f))), - data_types), - framework::dataset::make("Batches", { 4, 8 }))); + combine(combine(combine(combine(combine(datasets::MobileNetBatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.f))), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", { 4, 8 }))); REGISTER_FIXTURE_DATA_TEST_CASE(YOLOV2BatchNormalizationLayer, CLBatchNormalizationLayerFixture, framework::DatasetMode::NIGHTLY, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::YOLOV2BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", { 4, 8 }))); + combine(combine(combine(combine(combine(datasets::YOLOV2BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", { 4, 8 }))); REGISTER_FIXTURE_DATA_TEST_CASE(GoogLeNetInceptionV4BatchNormalizationLayer, CLBatchNormalizationLayerFixture, framework::DatasetMode::NIGHTLY, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", { 4, 8 }))); + combine(combine(combine(combine(combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", { 4, 8 }))); TEST_SUITE_END() TEST_SUITE_END() } // namespace benchmark diff --git a/tests/benchmark/GLES_COMPUTE/BatchNormalizationLayer.cpp b/tests/benchmark/GLES_COMPUTE/BatchNormalizationLayer.cpp index 9a2950b88d..881a6ab4dc 100644 --- a/tests/benchmark/GLES_COMPUTE/BatchNormalizationLayer.cpp +++ b/tests/benchmark/GLES_COMPUTE/BatchNormalizationLayer.cpp @@ -51,54 +51,60 @@ using GCBatchNormalizationLayerFixture = BatchNormalizationLayerFixture<GCTensor TEST_SUITE(GC) REGISTER_FIXTURE_DATA_TEST_CASE(MobileNetBatchNormalizationLayer, GCBatchNormalizationLayerFixture, framework::DatasetMode::ALL, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::MobileNetBatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.f))), - data_types), - framework::dataset::make("Batches", 1))); + combine(combine(combine(combine(combine(datasets::MobileNetBatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.f))), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", 1))); REGISTER_FIXTURE_DATA_TEST_CASE(YOLOV2BatchNormalizationLayer, GCBatchNormalizationLayerFixture, framework::DatasetMode::ALL, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::YOLOV2BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", 1))); + combine(combine(combine(combine(combine(datasets::YOLOV2BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", 1))); REGISTER_FIXTURE_DATA_TEST_CASE(GoogLeNetInceptionV4BatchNormalizationLayer, GCBatchNormalizationLayerFixture, framework::DatasetMode::ALL, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", 1))); + combine(combine(combine(combine(combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", 1))); TEST_SUITE(NIGHTLY) REGISTER_FIXTURE_DATA_TEST_CASE(MobileNetBatchNormalizationLayer, GCBatchNormalizationLayerFixture, framework::DatasetMode::NIGHTLY, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::MobileNetBatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.f))), - data_types), - framework::dataset::make("Batches", { 4, 8 }))); + combine(combine(combine(combine(combine(datasets::MobileNetBatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.f))), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", { 4, 8 }))); REGISTER_FIXTURE_DATA_TEST_CASE(YOLOV2BatchNormalizationLayer, GCBatchNormalizationLayerFixture, framework::DatasetMode::NIGHTLY, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::YOLOV2BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", { 4, 8 }))); + combine(combine(combine(combine(combine(datasets::YOLOV2BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", { 4, 8 }))); REGISTER_FIXTURE_DATA_TEST_CASE(GoogLeNetInceptionV4BatchNormalizationLayer, GCBatchNormalizationLayerFixture, framework::DatasetMode::NIGHTLY, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", { 4, 8 }))); + combine(combine(combine(combine(combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", { 4, 8 }))); TEST_SUITE_END() TEST_SUITE_END() } // namespace benchmark diff --git a/tests/benchmark/NEON/BatchNormalizationLayer.cpp b/tests/benchmark/NEON/BatchNormalizationLayer.cpp index 786a5b1701..35187ff66a 100644 --- a/tests/benchmark/NEON/BatchNormalizationLayer.cpp +++ b/tests/benchmark/NEON/BatchNormalizationLayer.cpp @@ -56,51 +56,57 @@ using NEBatchNormalizationLayerFixture = BatchNormalizationLayerFixture<Tensor, TEST_SUITE(NEON) REGISTER_FIXTURE_DATA_TEST_CASE(MobileNetBatchNormalizationLayer, NEBatchNormalizationLayerFixture, framework::DatasetMode::ALL, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::MobileNetBatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", 1))); + combine(combine(combine(combine(combine(datasets::MobileNetBatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", 1))); REGISTER_FIXTURE_DATA_TEST_CASE(YOLOV2BatchNormalizationLayer, NEBatchNormalizationLayerFixture, framework::DatasetMode::ALL, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::YOLOV2BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", 1))); + combine(combine(combine(combine(combine(datasets::YOLOV2BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", 1))); REGISTER_FIXTURE_DATA_TEST_CASE(GoogLeNetInceptionV4BatchNormalizationLayer, NEBatchNormalizationLayerFixture, framework::DatasetMode::ALL, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", 1))); + combine(combine(combine(combine(combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", 1))); TEST_SUITE(NIGHTLY) REGISTER_FIXTURE_DATA_TEST_CASE(MobileNetBatchNormalizationLayer, NEBatchNormalizationLayerFixture, framework::DatasetMode::NIGHTLY, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::MobileNetBatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", { 4, 8 }))); + combine(combine(combine(combine(combine(datasets::MobileNetBatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", { 4, 8 }))); REGISTER_FIXTURE_DATA_TEST_CASE(YOLOV2BatchNormalizationLayer, NEBatchNormalizationLayerFixture, framework::DatasetMode::NIGHTLY, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::YOLOV2BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", { 4, 8 }))); + combine(combine(combine(combine(combine(datasets::YOLOV2BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", { 4, 8 }))); REGISTER_FIXTURE_DATA_TEST_CASE(GoogLeNetInceptionV4BatchNormalizationLayer, NEBatchNormalizationLayerFixture, framework::DatasetMode::NIGHTLY, - framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(framework::dataset::combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), - framework::dataset::combine(framework::dataset::make("UseGamma", { false, true }), - framework::dataset::make("UseBeta", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - data_types), - framework::dataset::make("Batches", { 4, 8 }))); + combine(combine(combine(combine(combine(datasets::GoogLeNetInceptionV4BatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + data_types), + framework::dataset::make("DataLayout", { DataLayout::NCHW })), + framework::dataset::make("Batches", { 4, 8 }))); TEST_SUITE_END() TEST_SUITE_END() } // namespace benchmark diff --git a/tests/benchmark/fixtures/BatchNormalizationLayerFixture.h b/tests/benchmark/fixtures/BatchNormalizationLayerFixture.h index c55bb2acc9..ae8f8a7af1 100644 --- a/tests/benchmark/fixtures/BatchNormalizationLayerFixture.h +++ b/tests/benchmark/fixtures/BatchNormalizationLayerFixture.h @@ -42,15 +42,19 @@ class BatchNormalizationLayerFixture : public framework::Fixture { public: template <typename...> - void setup(TensorShape tensor_shape, TensorShape param_shape, float epsilon, bool use_gamma, bool use_beta, ActivationLayerInfo act_info, DataType data_type, int batches) + void setup(TensorShape tensor_shape, TensorShape param_shape, float epsilon, bool use_gamma, bool use_beta, ActivationLayerInfo act_info, DataType data_type, DataLayout data_layout, int batches) { // Set batched in source and destination shapes const unsigned int fixed_point_position = 4; tensor_shape.set(tensor_shape.num_dimensions(), batches); + if(data_layout == DataLayout::NHWC) + { + permute(tensor_shape, PermutationVector(2U, 0U, 1U)); + } // Create tensors - src = create_tensor<TensorType>(tensor_shape, data_type, 1, fixed_point_position); - dst = create_tensor<TensorType>(tensor_shape, data_type, 1, fixed_point_position); + src = create_tensor<TensorType>(tensor_shape, data_type, 1, fixed_point_position, QuantizationInfo(), data_layout); + dst = create_tensor<TensorType>(tensor_shape, data_type, 1, fixed_point_position, QuantizationInfo(), data_layout); mean = create_tensor<TensorType>(param_shape, data_type, 1, fixed_point_position); variance = create_tensor<TensorType>(param_shape, data_type, 1, fixed_point_position); beta = create_tensor<TensorType>(param_shape, data_type, 1, fixed_point_position); |