From 5ba3dd5b9c0dcb3d57293bdf59fc1181791ec048 Mon Sep 17 00:00:00 2001 From: yejianwu Date: Mon, 19 Mar 2018 19:24:20 +0800 Subject: [PATCH] refactor mace/ops code style --- mace/ops/activation_benchmark.cc | 12 +-- mace/ops/activation_test.cc | 30 ++++---- mace/ops/addn_benchmark.cc | 2 +- mace/ops/addn_test.cc | 4 +- mace/ops/batch_norm_benchmark.cc | 10 +-- mace/ops/batch_norm_test.cc | 60 +++++++-------- mace/ops/batch_to_space_benchmark.cc | 2 +- mace/ops/bias_add_benchmark.cc | 4 +- mace/ops/bias_add_test.cc | 18 ++--- mace/ops/channel_shuffle_benchmark.cc | 2 +- mace/ops/channel_shuffle_test.cc | 6 +- mace/ops/concat_benchmark.cc | 4 +- mace/ops/concat_test.cc | 18 ++--- mace/ops/conv_2d_benchmark.cc | 6 +- mace/ops/conv_2d_test.cc | 76 +++++++++--------- mace/ops/depthwise_conv2d_benchmark.cc | 6 +- mace/ops/depthwise_conv2d_test.cc | 24 +++--- mace/ops/eltwise_benchmark.cc | 4 +- mace/ops/eltwise_test.cc | 12 +-- mace/ops/folded_batch_norm_test.cc | 40 +++++----- mace/ops/fully_connected.h | 2 + mace/ops/fully_connected_benchmark.cc | 7 +- mace/ops/fully_connected_test.cc | 26 +++---- mace/ops/fused_conv_2d.h | 1 + mace/ops/fused_conv_2d_test.cc | 98 ++++++++++++------------ mace/ops/global_avg_pooling.h | 2 + mace/ops/global_avg_pooling_benchmark.cc | 7 +- mace/ops/global_avg_pooling_test.cc | 4 +- mace/ops/matmul_benchmark.cc | 5 +- mace/ops/matmul_test.cc | 14 ++-- mace/ops/ops_test_util.h | 49 +++++++----- mace/ops/pooling.h | 4 +- mace/ops/pooling_benchmark.cc | 33 ++++---- mace/ops/pooling_test.cc | 20 ++--- mace/ops/reshape.h | 2 + mace/ops/reshape_test.cc | 4 +- mace/ops/resize_bilinear.h | 6 +- mace/ops/resize_bilinear_benchmark.cc | 28 +++---- mace/ops/resize_bilinear_test.cc | 28 ++++--- mace/ops/slice.h | 8 +- mace/ops/slice_benchmark.cc | 26 ++++--- mace/ops/slice_test.cc | 40 ++++++---- mace/ops/softmax.h | 6 +- mace/ops/softmax_benchmark.cc | 2 +- mace/ops/softmax_test.cc | 8 +- mace/ops/space_to_batch.h | 1 + mace/ops/space_to_batch_benchmark.cc | 2 +- mace/ops/space_to_batch_test.cc | 12 +-- mace/ops/winograd_convolution_test.cc | 41 +++++----- mace/ops/winograd_inverse_transform.h | 1 + mace/ops/winograd_transform_benchmark.cc | 4 +- 51 files changed, 451 insertions(+), 380 deletions(-) diff --git a/mace/ops/activation_benchmark.cc b/mace/ops/activation_benchmark.cc index 4e904fce..5674f630 100644 --- a/mace/ops/activation_benchmark.cc +++ b/mace/ops/activation_benchmark.cc @@ -19,7 +19,7 @@ static void ReluBenchmark( net.AddRandomInput("Input", {batch, height, width, channels}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Activation", "ReluBM") @@ -79,7 +79,7 @@ static void ReluxBenchmark( net.AddRandomInput("Input", {batch, height, width, channels}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Activation", "ReluxBM") @@ -142,9 +142,9 @@ static void PreluBenchmark( net.AddRandomInput("Alpha", {channels}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Alpha", "AlphaImage", + BufferToImage(&net, "Alpha", "AlphaImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Activation", "PreluBM") @@ -206,7 +206,7 @@ static void TanhBenchmark( net.AddRandomInput("Input", {batch, height, width, channels}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Activation", "TanhBM") @@ -266,7 +266,7 @@ static void SigmoidBenchmark( net.AddRandomInput("Input", {batch, height, width, channels}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Activation", "SigmoidBM") diff --git a/mace/ops/activation_test.cc b/mace/ops/activation_test.cc index 77f8e745..63b30910 100644 --- a/mace/ops/activation_test.cc +++ b/mace/ops/activation_test.cc @@ -19,7 +19,7 @@ void TestSimpleRelu() { {-7, 7, -6, 6, -5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Activation", "ReluTest") @@ -32,7 +32,7 @@ void TestSimpleRelu() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Activation", "ReluTest") @@ -65,7 +65,7 @@ void TestUnalignedSimpleRelu() { net.AddInputFromArray("Input", {1, 3, 2, 1}, {-7, 7, -6, 6, -5, 5}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Activation", "ReluTest") @@ -78,7 +78,7 @@ void TestUnalignedSimpleRelu() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Activation", "ReluTest") @@ -114,7 +114,7 @@ void TestSimpleRelux() { {-7, 7, -6, 6, -5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Activation", "ReluxTest") @@ -128,7 +128,7 @@ void TestSimpleRelux() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Activation", "ReluxTest") @@ -164,7 +164,7 @@ void TestSimpleReluRelux() { {-7, 7, -6, 6, -5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Activation", "ReluxTest") @@ -178,7 +178,7 @@ void TestSimpleReluRelux() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Activation", "ReluxTest") @@ -217,9 +217,9 @@ void TestSimplePrelu() { net.AddInputFromArray("Alpha", {2}, {2.0, 3.0}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Alpha", "AlphaImage", + BufferToImage(&net, "Alpha", "AlphaImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Activation", "PreluTest") @@ -233,7 +233,7 @@ void TestSimplePrelu() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Activation", "PreluTest") @@ -270,7 +270,7 @@ void TestSimpleTanh() { {-7, 7, -6, 6, -5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Activation", "TanhTest") @@ -283,7 +283,7 @@ void TestSimpleTanh() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Activation", "TanhTest") @@ -321,7 +321,7 @@ void TestSimpleSigmoid() { {-7, 7, -6, 6, -5, 5, -4, 4, -3, 3, -2, 2, -1, 1, 0, 0}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Activation", "SigmoidTest") @@ -334,7 +334,7 @@ void TestSimpleSigmoid() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Activation", "SigmoidTest") diff --git a/mace/ops/addn_benchmark.cc b/mace/ops/addn_benchmark.cc index 85c7853d..b0ceec8e 100644 --- a/mace/ops/addn_benchmark.cc +++ b/mace/ops/addn_benchmark.cc @@ -20,7 +20,7 @@ static void AddNBenchmark(int iters, int inputs, int n, int h, int w, int c) { if (D == DeviceType::OPENCL) { for (int i = 0; i < inputs; ++i) { - BufferToImage(net, MakeString("Input", i).c_str(), + BufferToImage(&net, MakeString("Input", i).c_str(), MakeString("InputImage", i).c_str(), kernels::BufferType::IN_OUT_CHANNEL); } diff --git a/mace/ops/addn_test.cc b/mace/ops/addn_test.cc index c061e40c..bc248044 100644 --- a/mace/ops/addn_test.cc +++ b/mace/ops/addn_test.cc @@ -92,7 +92,7 @@ void RandomTest() { // run on gpu for (int i = 0; i < input_num; ++i) { - BufferToImage(net, MakeString("Input", i), + BufferToImage(&net, MakeString("Input", i), MakeString("InputImage", i), kernels::BufferType::IN_OUT_CHANNEL); } @@ -108,7 +108,7 @@ void RandomTest() { // Run on device net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.1); diff --git a/mace/ops/batch_norm_benchmark.cc b/mace/ops/batch_norm_benchmark.cc index 5091e26e..76d8c01a 100644 --- a/mace/ops/batch_norm_benchmark.cc +++ b/mace/ops/batch_norm_benchmark.cc @@ -23,15 +23,15 @@ static void BatchNorm( net.AddRandomInput("Var", {channels}, true); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Scale", "ScaleImage", + BufferToImage(&net, "Scale", "ScaleImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Offset", "OffsetImage", + BufferToImage(&net, "Offset", "OffsetImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Mean", "MeanImage", + BufferToImage(&net, "Mean", "MeanImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Var", "VarImage", + BufferToImage(&net, "Var", "VarImage", kernels::BufferType::ARGUMENT); OpDefBuilder("BatchNorm", "BatchNormBM") .Input("InputImage") diff --git a/mace/ops/batch_norm_test.cc b/mace/ops/batch_norm_test.cc index 5c2f7038..323b39e3 100644 --- a/mace/ops/batch_norm_test.cc +++ b/mace/ops/batch_norm_test.cc @@ -22,15 +22,15 @@ void Simple() { net.AddInputFromArray("Var", {1}, {11.67f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Scale", "ScaleImage", + BufferToImage(&net, "Scale", "ScaleImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Offset", "OffsetImage", + BufferToImage(&net, "Offset", "OffsetImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Mean", "MeanImage", + BufferToImage(&net, "Mean", "MeanImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Var", "VarImage", + BufferToImage(&net, "Var", "VarImage", kernels::BufferType::ARGUMENT); OpDefBuilder("BatchNorm", "BatchNormTest") @@ -46,7 +46,7 @@ void Simple() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("BatchNorm", "BatchNormTest") @@ -111,15 +111,15 @@ TEST_F(BatchNormOpTest, SimpleRandomOPENCL) { expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Scale", "ScaleImage", + BufferToImage(&net, "Scale", "ScaleImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Offset", "OffsetImage", + BufferToImage(&net, "Offset", "OffsetImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Mean", "MeanImage", + BufferToImage(&net, "Mean", "MeanImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Var", "VarImage", + BufferToImage(&net, "Var", "VarImage", kernels::BufferType::ARGUMENT); OpDefBuilder("BatchNorm", "BatchNormTest") @@ -141,7 +141,7 @@ TEST_F(BatchNormOpTest, SimpleRandomOPENCL) { net.RunOp(DeviceType::OPENCL); net.Sync(); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 1e-2); } @@ -183,15 +183,15 @@ TEST_F(BatchNormOpTest, SimpleRandomHalfOPENCL) { expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Scale", "ScaleImage", + BufferToImage(&net, "Scale", "ScaleImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Offset", "OffsetImage", + BufferToImage(&net, "Offset", "OffsetImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Mean", "MeanImage", + BufferToImage(&net, "Mean", "MeanImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Var", "VarImage", + BufferToImage(&net, "Var", "VarImage", kernels::BufferType::ARGUMENT); OpDefBuilder("BatchNorm", "BatchNormTest") @@ -214,7 +214,7 @@ TEST_F(BatchNormOpTest, SimpleRandomHalfOPENCL) { net.RunOp(DeviceType::OPENCL); net.Sync(); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.5); } @@ -256,15 +256,15 @@ TEST_F(BatchNormOpTest, ComplexRandomOPENCL) { expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Scale", "ScaleImage", + BufferToImage(&net, "Scale", "ScaleImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Offset", "OffsetImage", + BufferToImage(&net, "Offset", "OffsetImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Mean", "MeanImage", + BufferToImage(&net, "Mean", "MeanImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Var", "VarImage", + BufferToImage(&net, "Var", "VarImage", kernels::BufferType::ARGUMENT); OpDefBuilder("BatchNorm", "BatchNormTest") @@ -286,7 +286,7 @@ TEST_F(BatchNormOpTest, ComplexRandomOPENCL) { net.RunOp(DeviceType::OPENCL); net.Sync(); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 1e-2); } @@ -328,15 +328,15 @@ TEST_F(BatchNormOpTest, ComplexRandomHalfOPENCL) { expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Scale", "ScaleImage", + BufferToImage(&net, "Scale", "ScaleImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Offset", "OffsetImage", + BufferToImage(&net, "Offset", "OffsetImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Mean", "MeanImage", + BufferToImage(&net, "Mean", "MeanImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Var", "VarImage", + BufferToImage(&net, "Var", "VarImage", kernels::BufferType::ARGUMENT); OpDefBuilder("BatchNorm", "BatchNormTest") @@ -359,7 +359,7 @@ TEST_F(BatchNormOpTest, ComplexRandomHalfOPENCL) { net.RunOp(DeviceType::OPENCL); net.Sync(); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.5); } diff --git a/mace/ops/batch_to_space_benchmark.cc b/mace/ops/batch_to_space_benchmark.cc index aa68adc4..cbd34cf4 100644 --- a/mace/ops/batch_to_space_benchmark.cc +++ b/mace/ops/batch_to_space_benchmark.cc @@ -14,7 +14,7 @@ static void BMBatchToSpace( OpsTestNet net; net.AddRandomInput("Input", {batch, height, width, channels}); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("BatchToSpaceND", "BatchToSpaceNDTest") .Input("InputImage") diff --git a/mace/ops/bias_add_benchmark.cc b/mace/ops/bias_add_benchmark.cc index 8af9405b..1d90da0b 100644 --- a/mace/ops/bias_add_benchmark.cc +++ b/mace/ops/bias_add_benchmark.cc @@ -19,9 +19,9 @@ static void BiasAdd(int iters, int batch, int channels, int height, int width) { net.AddRandomInput("Bias", {channels}, true); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("BiasAdd", "BiasAddBM") .Input("InputImage") diff --git a/mace/ops/bias_add_test.cc b/mace/ops/bias_add_test.cc index 91bc96e4..688afa83 100644 --- a/mace/ops/bias_add_test.cc +++ b/mace/ops/bias_add_test.cc @@ -19,9 +19,9 @@ void BiasAddSimple() { net.AddInputFromArray("Bias", {1}, {0.5f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("BiasAdd", "BiasAddTest") @@ -33,7 +33,7 @@ void BiasAddSimple() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("BiasAdd", "BiasAddTest") @@ -89,9 +89,9 @@ TEST_F(BiasAddOpTest, SimpleRandomOPENCL) { expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("BiasAdd", "BiasAddTest") @@ -104,7 +104,7 @@ TEST_F(BiasAddOpTest, SimpleRandomOPENCL) { net.RunOp(DeviceType::OPENCL); net.Sync(); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 1e-2); } @@ -139,9 +139,9 @@ TEST_F(BiasAddOpTest, ComplexRandomOPENCL) { expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("BiasAdd", "BiasAddTest") @@ -154,7 +154,7 @@ TEST_F(BiasAddOpTest, ComplexRandomOPENCL) { net.RunOp(DeviceType::OPENCL); net.Sync(); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 1e-2); } diff --git a/mace/ops/channel_shuffle_benchmark.cc b/mace/ops/channel_shuffle_benchmark.cc index 7f403b56..22b5b1aa 100644 --- a/mace/ops/channel_shuffle_benchmark.cc +++ b/mace/ops/channel_shuffle_benchmark.cc @@ -19,7 +19,7 @@ static void ChannelShuffle( net.AddRandomInput("Input", {batch, height, width, channels}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("ChannelShuffle", "ChannelShuffleTest") diff --git a/mace/ops/channel_shuffle_test.cc b/mace/ops/channel_shuffle_test.cc index 879e563e..817a68c2 100644 --- a/mace/ops/channel_shuffle_test.cc +++ b/mace/ops/channel_shuffle_test.cc @@ -41,7 +41,7 @@ TEST_F(ChannelShuffleOpTest, C16G4_OPENCL) { "Input", {1, 1, 2, 16}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); @@ -55,7 +55,7 @@ TEST_F(ChannelShuffleOpTest, C16G4_OPENCL) { net.RunOp(DeviceType::OPENCL); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); // Check @@ -64,4 +64,4 @@ TEST_F(ChannelShuffleOpTest, C16G4_OPENCL) { 16, 20, 24, 28, 17, 21, 25, 29, 18, 22, 26, 30, 19, 23, 27, 31}); ExpectTensorNear(*expected, *net.GetOutput("Output"), 0.001); -} \ No newline at end of file +} diff --git a/mace/ops/concat_benchmark.cc b/mace/ops/concat_benchmark.cc index bbbbc126..8beea839 100644 --- a/mace/ops/concat_benchmark.cc +++ b/mace/ops/concat_benchmark.cc @@ -61,9 +61,9 @@ static void OpenclConcatHelper(int iters, net.AddRandomInput("Input0", shape0); net.AddRandomInput("Input1", shape1); - BufferToImage(net, "Input0", "InputImage0", + BufferToImage(&net, "Input0", "InputImage0", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Input1", "InputImage1", + BufferToImage(&net, "Input1", "InputImage1", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Concat", "ConcatBM") .Input("InputImage0") diff --git a/mace/ops/concat_test.cc b/mace/ops/concat_test.cc index 2e061ad4..48727597 100644 --- a/mace/ops/concat_test.cc +++ b/mace/ops/concat_test.cc @@ -22,9 +22,9 @@ TEST_F(ConcatOpTest, CPUSimpleHorizon) { std::vector input_shape = {4, 4}; std::vector input0; - GenerateRandomRealTypeData(input_shape, input0); + GenerateRandomRealTypeData(input_shape, &input0); std::vector input1; - GenerateRandomRealTypeData(input_shape, input1); + GenerateRandomRealTypeData(input_shape, &input1); // Add inputs net.AddInputFromArray("Input0", input_shape, input0); net.AddInputFromArray("Input1", input_shape, input1); @@ -59,9 +59,9 @@ TEST_F(ConcatOpTest, CPUSimpleVertical) { std::vector input_shape = {4, 4}; std::vector input0; - GenerateRandomRealTypeData(input_shape, input0); + GenerateRandomRealTypeData(input_shape, &input0); std::vector input1; - GenerateRandomRealTypeData(input_shape, input1); + GenerateRandomRealTypeData(input_shape, &input1); // Add inputs net.AddInputFromArray("Input0", input_shape, input0); net.AddInputFromArray("Input1", input_shape, input1); @@ -102,7 +102,7 @@ TEST_F(ConcatOpTest, CPURandom) { .Finalize(net.NewOperatorDef()); std::vector shape_data; - GenerateRandomIntTypeData({dim}, shape_data, 1, dim); + GenerateRandomIntTypeData({dim}, &shape_data, 1, dim); std::vector> input_shapes(num_inputs, shape_data); std::vector> inputs(num_inputs, std::vector()); std::vector input_ptrs(num_inputs, nullptr); @@ -110,7 +110,7 @@ TEST_F(ConcatOpTest, CPURandom) { for (int i = 0; i < num_inputs; ++i) { input_shapes[i][axis] = 1 + rand() % dim; concat_axis_size += input_shapes[i][axis]; - GenerateRandomRealTypeData(input_shapes[i], inputs[i]); + GenerateRandomRealTypeData(input_shapes[i], &inputs[i]); input_ptrs[i] = inputs[i].data(); net.AddInputFromArray(MakeString("Input", i), input_shapes[i], inputs[i]); @@ -152,7 +152,7 @@ void OpenclRandomTest(const std::vector> &shapes, const std::string image_name = MakeString("InputImage", i); concat_axis_size += shapes[i][axis]; net.AddRandomInput(input_name, shapes[i]); - BufferToImage(net, input_name, image_name, + BufferToImage(&net, input_name, image_name, kernels::BufferType::IN_OUT_CHANNEL); } @@ -169,7 +169,7 @@ void OpenclRandomTest(const std::vector> &shapes, // Run net.RunOp(DeviceType::OPENCL); - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); // Check @@ -216,4 +216,4 @@ TEST_F(ConcatOpTest, OPENCLUnAligned) { TEST_F(ConcatOpTest, OPENCLAlignedMultiInput) { OpenclRandomTest( {{3, 32, 32, 32}, {3, 32, 32, 32}, {3, 32, 32, 32}, {3, 32, 32, 32}}, 3); -} \ No newline at end of file +} diff --git a/mace/ops/conv_2d_benchmark.cc b/mace/ops/conv_2d_benchmark.cc index 05af6a09..4abd31e4 100644 --- a/mace/ops/conv_2d_benchmark.cc +++ b/mace/ops/conv_2d_benchmark.cc @@ -34,11 +34,11 @@ static void Conv2d(int iters, net.AddRandomInput("Bias", {output_channels}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Conv2D", "Conv2dTest") .Input("InputImage") diff --git a/mace/ops/conv_2d_test.cc b/mace/ops/conv_2d_test.cc index 086f7328..c88a460c 100644 --- a/mace/ops/conv_2d_test.cc +++ b/mace/ops/conv_2d_test.cc @@ -24,11 +24,11 @@ void TestNHWCSimple3x3VALID() { net.AddInputFromArray("Bias", {1}, {0.1f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Conv2D", "Conv2dTest") .Input("InputImage") @@ -44,7 +44,7 @@ void TestNHWCSimple3x3VALID() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { @@ -81,11 +81,11 @@ void TestNHWCSimple3x3SAME() { net.AddInputFromArray("Bias", {1}, {0.1f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Conv2D", "Conv2dTest") .Input("InputImage") @@ -101,7 +101,7 @@ void TestNHWCSimple3x3SAME() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { @@ -150,9 +150,9 @@ void TestNHWCSimple3x3WithoutBias() { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); OpDefBuilder("Conv2D", "Conv2dTest") @@ -167,7 +167,7 @@ void TestNHWCSimple3x3WithoutBias() { // Run net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Conv2D", "Conv2dTest") @@ -216,11 +216,11 @@ static void TestNHWCCombined3x3() { net.AddInputFromArray("Bias", {2}, {0.1f, 0.2f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Conv2D", "Conv2DTest") @@ -236,7 +236,7 @@ static void TestNHWCCombined3x3() { // Run net.RunOp(D); - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Conv2D", "Conv2DTest") @@ -289,11 +289,11 @@ void TestConv1x1() { net.AddInputFromArray("Bias", {2}, {0.1f, 0.2f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Conv2D", "Conv2DTest") @@ -308,7 +308,7 @@ void TestConv1x1() { // Run net.RunOp(D); - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Conv2D", "Conv2DTest") @@ -381,11 +381,11 @@ static void TestComplexConvNxNS12(const std::vector &shape, expected.Copy(*net.GetOutput("Output")); // run on gpu - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Conv2D", "Conv2dTest") @@ -401,7 +401,7 @@ static void TestComplexConvNxNS12(const std::vector &shape, // Run on device net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.001); }; @@ -457,13 +457,13 @@ static void TestHalfComplexConvNxNS12(const std::vector &input_shape, std::vector float_input_data; GenerateRandomRealTypeData({batch, height, width, input_channels}, - float_input_data); + &float_input_data); std::vector float_filter_data; GenerateRandomRealTypeData( {kernel_h, kernel_w, output_channels, input_channels}, - float_filter_data); + &float_filter_data); std::vector float_bias_data; - GenerateRandomRealTypeData({output_channels}, float_bias_data); + GenerateRandomRealTypeData({output_channels}, &float_bias_data); // Add input data net.AddInputFromArray( "Input", {batch, height, width, input_channels}, float_input_data); @@ -479,11 +479,11 @@ static void TestHalfComplexConvNxNS12(const std::vector &input_shape, expected.Copy(*net.GetOutput("Output")); // run on gpu - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Conv2D", "Conv2dTest") @@ -499,7 +499,7 @@ static void TestHalfComplexConvNxNS12(const std::vector &input_shape, // Run on device net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.5); @@ -603,11 +603,11 @@ static void TestDilationConvNxN(const std::vector &shape, expected.Copy(*net.GetOutput("Output")); // run on gpu - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Conv2D", "Conv2dTest") @@ -623,7 +623,7 @@ static void TestDilationConvNxN(const std::vector &shape, // Run on device net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.001); }; @@ -686,11 +686,11 @@ static void TestArbitraryPadConvNxN(const std::vector &shape, expected.Copy(*net.GetOutput("Output")); // run on gpu - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Conv2D", "Conv2dTest") @@ -705,7 +705,7 @@ static void TestArbitraryPadConvNxN(const std::vector &shape, // Run on device net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.001); }; diff --git a/mace/ops/depthwise_conv2d_benchmark.cc b/mace/ops/depthwise_conv2d_benchmark.cc index 6ba3b000..b0a1fba6 100644 --- a/mace/ops/depthwise_conv2d_benchmark.cc +++ b/mace/ops/depthwise_conv2d_benchmark.cc @@ -33,11 +33,11 @@ static void DepthwiseConv2d(int iters, net.AddRandomInput("Bias", {input_channels * multiplier}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::DW_CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("DepthwiseConv2d", "DepthwiseConv2dTest") .Input("InputImage") diff --git a/mace/ops/depthwise_conv2d_test.cc b/mace/ops/depthwise_conv2d_test.cc index 840d13aa..0f4bf81c 100644 --- a/mace/ops/depthwise_conv2d_test.cc +++ b/mace/ops/depthwise_conv2d_test.cc @@ -25,11 +25,11 @@ void SimpleValidTest() { "Filter", {2, 2, 2, 1}, {1.0f, 2.0f, 2.0f, 4.0f, 3.0f, 6.0f, 4.0f, 8.0f}); net.AddInputFromArray("Bias", {2}, {.1f, .2f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::DW_CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("DepthwiseConv2d", "DepthwiseConv2DTest") .Input("InputImage") @@ -45,7 +45,7 @@ void SimpleValidTest() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { @@ -129,11 +129,11 @@ void ComplexValidTest() { net.AddInputFromArray("Bias", {6}, {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::DW_CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("DepthwiseConv2d", "DepthwiseConv2DTest") .Input("InputImage") @@ -149,7 +149,7 @@ void ComplexValidTest() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { @@ -240,11 +240,11 @@ void TestNxNS12(const index_t height, const index_t width) { expected.Copy(*net.GetOutput("Output")); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::DW_CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("DepthwiseConv2d", "DepthwiseConv2DTest") .Input("InputImage") @@ -260,7 +260,7 @@ void TestNxNS12(const index_t height, const index_t width) { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "DeviceOutput", + ImageToBuffer(&net, "OutputImage", "DeviceOutput", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("DepthwiseConv2d", "DepthwiseConv2DTest") diff --git a/mace/ops/eltwise_benchmark.cc b/mace/ops/eltwise_benchmark.cc index 8dcb243a..b92d612b 100644 --- a/mace/ops/eltwise_benchmark.cc +++ b/mace/ops/eltwise_benchmark.cc @@ -20,9 +20,9 @@ static void EltwiseBenchmark( net.AddRandomInput("Input1", {n, h, w, c}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input0", "InputImg0", + BufferToImage(&net, "Input0", "InputImg0", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Input1", "InputImg1", + BufferToImage(&net, "Input1", "InputImg1", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Eltwise", "EltwiseTest") .Input("InputImg0") diff --git a/mace/ops/eltwise_test.cc b/mace/ops/eltwise_test.cc index ae8cf5f0..39fde396 100644 --- a/mace/ops/eltwise_test.cc +++ b/mace/ops/eltwise_test.cc @@ -36,9 +36,9 @@ void Simple(const kernels::EltwiseType type, // Run net.RunOp(D); } else { - BufferToImage(net, "Input1", "InputImg1", + BufferToImage(&net, "Input1", "InputImg1", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Input2", "InputImg2", + BufferToImage(&net, "Input2", "InputImg2", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Eltwise", "EltwiseTest") .Input("InputImg1") @@ -51,7 +51,7 @@ void Simple(const kernels::EltwiseType type, // Run net.RunOp(D); - ImageToBuffer(net, "OutputImg", "Output", + ImageToBuffer(&net, "OutputImg", "Output", kernels::BufferType::IN_OUT_CHANNEL); } @@ -120,9 +120,9 @@ void RandomTest(const kernels::EltwiseType type, // Run net.RunOp(); - BufferToImage(net, "Input1", "InputImg1", + BufferToImage(&net, "Input1", "InputImg1", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Input2", "InputImg2", + BufferToImage(&net, "Input2", "InputImg2", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Eltwise", "EltwiseTest") .Input("InputImg1") @@ -136,7 +136,7 @@ void RandomTest(const kernels::EltwiseType type, // Run net.RunOp(D); - ImageToBuffer(net, "OutputImg", "OPENCLOutput", + ImageToBuffer(&net, "OutputImg", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); if (DataTypeToEnum::value == DT_FLOAT) { diff --git a/mace/ops/folded_batch_norm_test.cc b/mace/ops/folded_batch_norm_test.cc index 77bf351d..b72ce9b7 100644 --- a/mace/ops/folded_batch_norm_test.cc +++ b/mace/ops/folded_batch_norm_test.cc @@ -37,11 +37,11 @@ void Simple() { net.AddInputFromArray("Offset", {1}, offset); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Scale", "ScaleImage", + BufferToImage(&net, "Scale", "ScaleImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Offset", "OffsetImage", + BufferToImage(&net, "Offset", "OffsetImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FoldedBatchNorm", "FoldedBatchNormTest") @@ -54,7 +54,7 @@ void Simple() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("FoldedBatchNorm", "FoldedBatchNormTest") @@ -203,11 +203,11 @@ TEST_F(FoldedBatchNormOpTest, SimpleRandomOPENCL) { expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Scale", "ScaleImage", + BufferToImage(&net, "Scale", "ScaleImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Offset", "OffsetImage", + BufferToImage(&net, "Offset", "OffsetImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FoldedBatchNorm", "FoldedBatchNormTest") @@ -221,7 +221,7 @@ TEST_F(FoldedBatchNormOpTest, SimpleRandomOPENCL) { net.RunOp(DeviceType::OPENCL); net.Sync(); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 1e-2); } @@ -258,11 +258,11 @@ TEST_F(FoldedBatchNormOpTest, SimpleRandomHalfOPENCL) { expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Scale", "ScaleImage", + BufferToImage(&net, "Scale", "ScaleImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Offset", "OffsetImage", + BufferToImage(&net, "Offset", "OffsetImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FoldedBatchNorm", "FoldedBatchNormTest") @@ -277,7 +277,7 @@ TEST_F(FoldedBatchNormOpTest, SimpleRandomHalfOPENCL) { net.RunOp(DeviceType::OPENCL); net.Sync(); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.5); } @@ -314,11 +314,11 @@ TEST_F(FoldedBatchNormOpTest, ComplexRandomOPENCL) { expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Scale", "ScaleImage", + BufferToImage(&net, "Scale", "ScaleImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Offset", "OffsetImage", + BufferToImage(&net, "Offset", "OffsetImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FoldedBatchNorm", "FoldedBatchNormTest") @@ -331,7 +331,7 @@ TEST_F(FoldedBatchNormOpTest, ComplexRandomOPENCL) { // Run on opencl net.RunOp(DeviceType::OPENCL); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 1e-2); } @@ -368,11 +368,11 @@ TEST_F(FoldedBatchNormOpTest, ComplexRandomHalfOPENCL) { expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Scale", "ScaleImage", + BufferToImage(&net, "Scale", "ScaleImage", kernels::BufferType::ARGUMENT); - BufferToImage(net, "Offset", "OffsetImage", + BufferToImage(&net, "Offset", "OffsetImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FoldedBatchNorm", "FoldedBatchNormTest") @@ -386,7 +386,7 @@ TEST_F(FoldedBatchNormOpTest, ComplexRandomHalfOPENCL) { // Run on opencl net.RunOp(DeviceType::OPENCL); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.5); } diff --git a/mace/ops/fully_connected.h b/mace/ops/fully_connected.h index 282804a5..510f4773 100644 --- a/mace/ops/fully_connected.h +++ b/mace/ops/fully_connected.h @@ -5,6 +5,8 @@ #ifndef MACE_OPS_FULLY_CONNECTED_H_ #define MACE_OPS_FULLY_CONNECTED_H_ +#include + #include "mace/core/operator.h" #include "mace/kernels/fully_connected.h" diff --git a/mace/ops/fully_connected_benchmark.cc b/mace/ops/fully_connected_benchmark.cc index 5078b124..c136ce1b 100644 --- a/mace/ops/fully_connected_benchmark.cc +++ b/mace/ops/fully_connected_benchmark.cc @@ -8,6 +8,7 @@ #include "mace/ops/ops_test_util.h" namespace mace { + template static void FCBenchmark( int iters, int batch, int height, int width, int channel, int out_channel) { @@ -24,11 +25,11 @@ static void FCBenchmark( if (D == DeviceType::OPENCL) { const int width_size = height * width * channel; kernels::BufferType weight_type = kernels::BufferType::WEIGHT_WIDTH; - BufferToImage(net, "Weight", "WeightImage", + BufferToImage(&net, "Weight", "WeightImage", weight_type); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FC", "FullyConnectedTest") diff --git a/mace/ops/fully_connected_test.cc b/mace/ops/fully_connected_test.cc index c50e6952..be1dd1c1 100644 --- a/mace/ops/fully_connected_test.cc +++ b/mace/ops/fully_connected_test.cc @@ -27,11 +27,11 @@ void Simple(const std::vector &input_shape, net.AddInputFromArray("Bias", bias_shape, bias_value); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Weight", "WeightImage", + BufferToImage(&net, "Weight", "WeightImage", kernels::BufferType::WEIGHT_HEIGHT); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FC", "FullyConnectedTest") @@ -45,7 +45,7 @@ void Simple(const std::vector &input_shape, net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("FC", "FullyConnectedTest") @@ -136,11 +136,11 @@ void Complex(const index_t batch, expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Weight", "WeightImage", + BufferToImage(&net, "Weight", "WeightImage", kernels::BufferType::WEIGHT_HEIGHT); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FC", "FullyConnectedTest") @@ -155,7 +155,7 @@ void Complex(const index_t batch, // Run on opencl net.RunOp(DeviceType::OPENCL); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); if (DataTypeToEnum::value == DataType::DT_HALF) { ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 1); @@ -218,11 +218,11 @@ void TestWXFormat(const index_t batch, expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Weight", "WeightImage", + BufferToImage(&net, "Weight", "WeightImage", kernels::BufferType::WEIGHT_WIDTH); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FC", "FullyConnectedTest") @@ -236,7 +236,7 @@ void TestWXFormat(const index_t batch, // Run on opencl net.RunOp(DeviceType::OPENCL); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); if (DataTypeToEnum::value == DataType::DT_HALF) { ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 1); @@ -263,4 +263,4 @@ TEST_F(FullyConnectedOpTest, OPENCLHalfWidthFormatAligned) { TestWXFormat(1, 16, 32, 32, 32); } -} +} // namespace mace diff --git a/mace/ops/fused_conv_2d.h b/mace/ops/fused_conv_2d.h index 0184f92f..dd43ca9c 100644 --- a/mace/ops/fused_conv_2d.h +++ b/mace/ops/fused_conv_2d.h @@ -6,6 +6,7 @@ #define MACE_OPS_FUSED_CONV_2D_H_ #include +#include #include "mace/core/operator.h" #include "mace/kernels/conv_2d.h" diff --git a/mace/ops/fused_conv_2d_test.cc b/mace/ops/fused_conv_2d_test.cc index ad64be0d..34d2b55d 100644 --- a/mace/ops/fused_conv_2d_test.cc +++ b/mace/ops/fused_conv_2d_test.cc @@ -2,10 +2,12 @@ // Copyright (c) 2017 XiaoMi All rights reserved. // +#include + #include "mace/ops/fused_conv_2d.h" #include "mace/ops/ops_test_util.h" -using namespace mace; +namespace mace { class FusedConv2dOpTest : public OpsTestBase {}; @@ -23,11 +25,11 @@ void TestNHWCSimple3x3VALID() { net.AddInputFromArray("Bias", {1}, {-0.1f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FusedConv2D", "FusedConv2dTest") .Input("InputImage") @@ -43,7 +45,7 @@ void TestNHWCSimple3x3VALID() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { @@ -80,11 +82,11 @@ void TestNHWCSimple3x3SAME() { net.AddInputFromArray("Bias", {1}, {-0.1f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FusedConv2D", "FusedConv2dTest") .Input("InputImage") @@ -100,7 +102,7 @@ void TestNHWCSimple3x3SAME() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { @@ -148,9 +150,9 @@ void TestNHWCSimple3x3WithoutBias() { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -165,7 +167,7 @@ void TestNHWCSimple3x3WithoutBias() { // Run net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -217,11 +219,11 @@ void TestConv1x1() { net.AddInputFromArray("Bias", {2}, {0.1f, 0.2f}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -236,7 +238,7 @@ void TestConv1x1() { // Run net.RunOp(D); - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -274,14 +276,14 @@ static void TestComplexConvNxNS12(const std::vector &shape) { testing::internal::LogToStderr(); auto func = [&](int kernel_h, int kernel_w, int stride_h, int stride_w, Padding type) { - srand(time(NULL)); + unsigned int seed = time(NULL); // generate random input - index_t batch = 3 + (rand() % 10); + index_t batch = 3 + (rand_r(&seed) % 10); index_t height = shape[0]; index_t width = shape[1]; - index_t input_channels = shape[2] + (rand() % 10); - index_t output_channels = shape[3] + (rand() % 10); + index_t input_channels = shape[2] + (rand_r(&seed) % 10); + index_t output_channels = shape[3] + (rand_r(&seed) % 10); // Construct graph OpsTestNet net; OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -308,11 +310,11 @@ static void TestComplexConvNxNS12(const std::vector &shape) { expected.Copy(*net.GetOutput("Output")); // run on gpu - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -328,7 +330,7 @@ static void TestComplexConvNxNS12(const std::vector &shape) { // Run on device net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.001); }; @@ -350,14 +352,14 @@ static void TestHalfComplexConvNxNS12(const std::vector &shape) { testing::internal::LogToStderr(); auto func = [&](int kernel_h, int kernel_w, int stride_h, int stride_w, Padding type) { - srand(time(NULL)); + unsigned int seed = time(NULL); // generate random input - index_t batch = 3 + (rand() % 10); + index_t batch = 3 + (rand_r(&seed) % 10); index_t height = shape[0]; index_t width = shape[1]; - index_t input_channels = shape[2] + (rand() % 10); - index_t output_channels = shape[3] + (rand() % 10); + index_t input_channels = shape[2] + (rand_r(&seed) % 10); + index_t output_channels = shape[3] + (rand_r(&seed) % 10); // Construct graph OpsTestNet net; OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -372,13 +374,13 @@ static void TestHalfComplexConvNxNS12(const std::vector &shape) { std::vector float_input_data; GenerateRandomRealTypeData({batch, height, width, input_channels}, - float_input_data); + &float_input_data); std::vector float_filter_data; GenerateRandomRealTypeData( {kernel_h, kernel_w, output_channels, input_channels}, - float_filter_data); + &float_filter_data); std::vector float_bias_data; - GenerateRandomRealTypeData({output_channels}, float_bias_data); + GenerateRandomRealTypeData({output_channels}, &float_bias_data); // Add input data net.AddInputFromArray( "Input", {batch, height, width, input_channels}, float_input_data); @@ -394,11 +396,11 @@ static void TestHalfComplexConvNxNS12(const std::vector &shape) { expected.Copy(*net.GetOutput("Output")); // run on gpu - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -414,7 +416,7 @@ static void TestHalfComplexConvNxNS12(const std::vector &shape) { // Run on device net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.2); @@ -472,11 +474,11 @@ static void TestGeneralConvNxNS12(const std::vector &image_shape, expected.Copy(*net.GetOutput("Output")); // run on gpu - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -492,7 +494,7 @@ static void TestGeneralConvNxNS12(const std::vector &image_shape, // Run on device net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.001); }; @@ -551,11 +553,11 @@ static void TestAtrousConvNxN(const std::vector &shape, expected.Copy(*net.GetOutput("Output")); // run on gpu - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -571,7 +573,7 @@ static void TestAtrousConvNxN(const std::vector &shape, // Run on device net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.001); }; @@ -638,11 +640,11 @@ static void TestGeneralHalfAtrousConv(const std::vector &image_shape, expected.Copy(*net.GetOutput("Output")); // run on gpu - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -658,7 +660,7 @@ static void TestGeneralHalfAtrousConv(const std::vector &image_shape, // Run on device net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.7); }; @@ -676,3 +678,5 @@ TEST_F(FusedConv2dOpTest, OPENCL15X15AtrousConvD4) { TestGeneralHalfAtrousConv({63, 71}, {15, 15, 16, 16}, {2, 2}); } + +} // namespace mace diff --git a/mace/ops/global_avg_pooling.h b/mace/ops/global_avg_pooling.h index dc1cda9e..6a7f49fe 100644 --- a/mace/ops/global_avg_pooling.h +++ b/mace/ops/global_avg_pooling.h @@ -5,6 +5,8 @@ #ifndef MACE_OPS_GLOBAL_AVG_POOLING_H_ #define MACE_OPS_GLOBAL_AVG_POOLING_H_ +#include + #include "mace/core/operator.h" #include "mace/kernels/global_avg_pooling.h" diff --git a/mace/ops/global_avg_pooling_benchmark.cc b/mace/ops/global_avg_pooling_benchmark.cc index 1ea07c4b..70a88408 100644 --- a/mace/ops/global_avg_pooling_benchmark.cc +++ b/mace/ops/global_avg_pooling_benchmark.cc @@ -7,8 +7,8 @@ #include "mace/core/testing/test_benchmark.h" #include "mace/ops/ops_test_util.h" -using namespace mace; -using namespace mace::kernels; +namespace mace { +namespace kernels { template static void GlobalAvgPooling( @@ -53,3 +53,6 @@ static void GlobalAvgPooling( BM_GLOBAL_AVG_POOLING(1, 3, 7, 7); BM_GLOBAL_AVG_POOLING(1, 3, 64, 64); BM_GLOBAL_AVG_POOLING(1, 3, 256, 256); + +} // namespace kernels +} // namespace mace diff --git a/mace/ops/global_avg_pooling_test.cc b/mace/ops/global_avg_pooling_test.cc index a00ffc36..8c2fccd8 100644 --- a/mace/ops/global_avg_pooling_test.cc +++ b/mace/ops/global_avg_pooling_test.cc @@ -4,7 +4,7 @@ #include "mace/core/operator.h" #include "mace/ops/ops_test_util.h" -using namespace mace; +namespace mace { class GlobalAvgPoolingOpTest : public OpsTestBase {}; @@ -31,3 +31,5 @@ TEST_F(GlobalAvgPoolingOpTest, 3x7x7_CPU) { ExpectTensorNear(*expected, *net.GetOutput("Output"), 0.001); } + +} // namespace mace diff --git a/mace/ops/matmul_benchmark.cc b/mace/ops/matmul_benchmark.cc index c83b872a..6c167636 100644 --- a/mace/ops/matmul_benchmark.cc +++ b/mace/ops/matmul_benchmark.cc @@ -20,8 +20,9 @@ static void MatMulBenchmark( net.AddRandomInput("B", {batch, channels, out_width, 1}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "A", "AImage", kernels::BufferType::IN_OUT_WIDTH); - BufferToImage(net, "B", "BImage", kernels::BufferType::IN_OUT_HEIGHT); + BufferToImage(&net, "A", "AImage", kernels::BufferType::IN_OUT_WIDTH); + BufferToImage(&net, "B", "BImage", + kernels::BufferType::IN_OUT_HEIGHT); OpDefBuilder("MatMul", "MatMulBM") .Input("AImage") diff --git a/mace/ops/matmul_test.cc b/mace/ops/matmul_test.cc index d8b80ead..2c54bd0e 100644 --- a/mace/ops/matmul_test.cc +++ b/mace/ops/matmul_test.cc @@ -24,9 +24,9 @@ void Simple(const std::vector &A_shape, net.AddInputFromArray("B", B_shape, B_value); if (D == DeviceType::OPENCL) { - BufferToImage(net, "A", "AImage", + BufferToImage(&net, "A", "AImage", kernels::BufferType::IN_OUT_WIDTH); - BufferToImage(net, "B", "BImage", + BufferToImage(&net, "B", "BImage", kernels::BufferType::IN_OUT_HEIGHT); OpDefBuilder("MatMul", "MatMulTest") @@ -38,7 +38,7 @@ void Simple(const std::vector &A_shape, net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_HEIGHT); } else { OpDefBuilder("MatMul", "MatMulTest") @@ -124,9 +124,9 @@ void Complex(const index_t batch, expected.Copy(*net.GetOutput("Output")); // Run on opencl - BufferToImage(net, "A", "AImage", + BufferToImage(&net, "A", "AImage", kernels::BufferType::IN_OUT_WIDTH); - BufferToImage(net, "B", "BImage", + BufferToImage(&net, "B", "BImage", kernels::BufferType::IN_OUT_HEIGHT); OpDefBuilder("MatMul", "MatMulTest") @@ -139,7 +139,7 @@ void Complex(const index_t batch, // Run on opencl net.RunOp(DeviceType::OPENCL); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_HEIGHT); if (DataTypeToEnum::value == DataType::DT_HALF) { ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 1e-1); @@ -170,4 +170,4 @@ TEST_F(MatMulOpTest, OPENCLHalfUnAlignedWithBatch) { Complex(16, 32, 64, 64); Complex(31, 31, 61, 67); } -} +} // namespace mace diff --git a/mace/ops/ops_test_util.h b/mace/ops/ops_test_util.h index 3003fffe..5d83ce3c 100644 --- a/mace/ops/ops_test_util.h +++ b/mace/ops/ops_test_util.h @@ -2,10 +2,16 @@ // Copyright (c) 2017 XiaoMi All rights reserved. // -#ifndef MACE_OPS_TEST_UTIL_H_ -#define MACE_OPS_TEST_UTIL_H_ +#ifndef MACE_OPS_OPS_TEST_UTIL_H_ +#define MACE_OPS_OPS_TEST_UTIL_H_ +#include +#include +#include +#include #include +#include +#include #include "gtest/gtest.h" #include "mace/core/net.h" @@ -95,7 +101,7 @@ class OpDefBuilder { class OpsTestNet { public: - OpsTestNet() : op_registry_(new OperatorRegistry()){}; + OpsTestNet() : op_registry_(new OperatorRegistry()) {} template void AddInputFromArray(const std::string &name, @@ -204,37 +210,41 @@ class OpsTestBase : public ::testing::Test { template void GenerateRandomRealTypeData(const std::vector &shape, - std::vector &res) { + std::vector *res) { + MACE_CHECK_NOTNULL(res); + std::random_device rd; std::mt19937 gen(rd()); std::normal_distribution nd(0, 1); index_t size = std::accumulate(shape.begin(), shape.end(), 1, std::multiplies()); - res.resize(size); + res->resize(size); if (DataTypeToEnum::value == DT_HALF) { - std::generate(res.begin(), res.end(), + std::generate(res->begin(), res->end(), [&gen, &nd] { return half_float::half_cast(nd(gen)); }); } else { - std::generate(res.begin(), res.end(), [&gen, &nd] { return nd(gen); }); + std::generate(res->begin(), res->end(), [&gen, &nd] { return nd(gen); }); } } template void GenerateRandomIntTypeData(const std::vector &shape, - std::vector &res, + std::vector *res, const T a = 0, const T b = std::numeric_limits::max()) { + MACE_CHECK_NOTNULL(res); + std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> nd(a, b); index_t size = std::accumulate(shape.begin(), shape.end(), 1, std::multiplies()); - res.resize(size); + res->resize(size); - std::generate(res.begin(), res.end(), [&gen, &nd] { return nd(gen); }); + std::generate(res->begin(), res->end(), [&gen, &nd] { return nd(gen); }); } template @@ -377,25 +387,26 @@ void ExpectTensorNear(const Tensor &x, const Tensor &y, const double abs_err) { } template -void BufferToImage(OpsTestNet &net, +void BufferToImage(OpsTestNet *net, const std::string &input_name, const std::string &output_name, const kernels::BufferType type) { + MACE_CHECK_NOTNULL(net); OpDefBuilder("BufferToImage", "BufferToImageTest") .Input(input_name) .Output(output_name) .AddIntArg("buffer_type", type) .AddIntArg("T", static_cast(DataTypeToEnum::value)) - .Finalize(net.NewOperatorDef()); + .Finalize(net->NewOperatorDef()); // Run - net.RunOp(D); + net->RunOp(D); - net.Sync(); + net->Sync(); } template -void ImageToBuffer(OpsTestNet &net, +void ImageToBuffer(OpsTestNet *net, const std::string &input_name, const std::string &output_name, const kernels::BufferType type) { @@ -404,14 +415,14 @@ void ImageToBuffer(OpsTestNet &net, .Output(output_name) .AddIntArg("buffer_type", type) .AddIntArg("T", static_cast(DataTypeToEnum::value)) - .Finalize(net.NewOperatorDef()); + .Finalize(net->NewOperatorDef()); // Run - net.RunOp(D); + net->RunOp(D); - net.Sync(); + net->Sync(); } } // namespace mace -#endif // MACE_OPS_TEST_UTIL_H_ +#endif // MACE_OPS_OPS_TEST_UTIL_H_ diff --git a/mace/ops/pooling.h b/mace/ops/pooling.h index b88093ab..d31e9fc9 100644 --- a/mace/ops/pooling.h +++ b/mace/ops/pooling.h @@ -5,6 +5,8 @@ #ifndef MACE_OPS_POOLING_H_ #define MACE_OPS_POOLING_H_ +#include + #include "mace/core/operator.h" #include "mace/kernels/pooling.h" #include "mace/ops/conv_pool_2d_base.h" @@ -25,7 +27,7 @@ class PoolingOp : public ConvPool2dOpBase { this->strides_.data(), this->padding_type_, this->paddings_, - this->dilations_.data()){}; + this->dilations_.data()) {} bool Run(StatsFuture *future) override { const Tensor *input = this->Input(INPUT); diff --git a/mace/ops/pooling_benchmark.cc b/mace/ops/pooling_benchmark.cc index dae7e1af..f54f9b68 100644 --- a/mace/ops/pooling_benchmark.cc +++ b/mace/ops/pooling_benchmark.cc @@ -8,8 +8,8 @@ #include "mace/kernels/conv_pool_2d_util.h" #include "mace/ops/ops_test_util.h" -using namespace mace; -using namespace mace::kernels; +namespace mace { +namespace kernels { template static void Pooling(int iters, @@ -49,18 +49,20 @@ static void Pooling(int iters, } } -#define BM_POOLING_MACRO(N, C, H, W, KE, STRIDE, PA, PO, DEVICE) \ - static void \ - BM_POOLING_##N##_##C##_##H##_##W##_K##KE##S##STRIDE##_##PA##_##PO##_##DEVICE( \ - int iters) { \ - const int64_t tot = static_cast(iters) * N * C * H * W; \ - mace::testing::MaccProcessed(tot); \ - mace::testing::BytesProcessed(tot *(sizeof(float))); \ - Pooling(iters, N, C, H, W, KE, STRIDE, Padding::PA, \ - PoolingType::PO); \ - } \ - BENCHMARK( \ - BM_POOLING_##N##_##C##_##H##_##W##_K##KE##S##STRIDE##_##PA##_##PO##_##DEVICE) +#define BM_POOLING_MACRO(N, C, H, W, KE, STRIDE, PA, PO, DEVICE) \ + static void \ + BM_POOLING_##N##_##C##_##H##_##W##_K##KE##S##STRIDE##_##PA##_##PO##_\ + ##DEVICE( \ + int iters) { \ + const int64_t tot = static_cast(iters) * N * C * H * W; \ + mace::testing::MaccProcessed(tot); \ + mace::testing::BytesProcessed(tot *(sizeof(float))); \ + Pooling(iters, N, C, H, W, KE, STRIDE, Padding::PA, \ + PoolingType::PO); \ + } \ + BENCHMARK( \ + BM_POOLING_##N##_##C##_##H##_##W##_K##KE##S##STRIDE##_##PA##_##PO##_\ + ##DEVICE) #define BM_POOLING(N, C, H, W, K, S, PA, PO) \ BM_POOLING_MACRO(N, C, H, W, K, S, PA, PO, CPU); @@ -70,3 +72,6 @@ BM_POOLING(1, 3, 129, 129, 2, 2, SAME, MAX); BM_POOLING(1, 3, 257, 257, 2, 2, SAME, MAX); BM_POOLING(1, 3, 513, 513, 2, 2, SAME, MAX); BM_POOLING(1, 3, 1025, 1025, 2, 2, SAME, MAX); + +} // namespace kernels +} // namespace mace diff --git a/mace/ops/pooling_test.cc b/mace/ops/pooling_test.cc index 8bababc8..42973744 100644 --- a/mace/ops/pooling_test.cc +++ b/mace/ops/pooling_test.cc @@ -9,7 +9,7 @@ #include "mace/ops/conv_pool_2d_base.h" #include "mace/ops/ops_test_util.h" -using namespace mace; +namespace mace { class PoolingOpTest : public OpsTestBase {}; @@ -133,7 +133,7 @@ static void SimpleMaxPooling3S2() { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Pooling", "PoolingTest") .Input("InputImage") @@ -145,7 +145,7 @@ static void SimpleMaxPooling3S2() { .AddIntsArg("dilations", {1, 1}) .Finalize(net.NewOperatorDef()); net.RunOp(D); - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { // Run @@ -198,7 +198,7 @@ static void MaxPooling3S2(const std::vector &input_shape, Tensor expected; expected.Copy(*net.GetOutput("Output")); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Pooling", "PoolingTest") .Input("InputImage") @@ -211,7 +211,7 @@ static void MaxPooling3S2(const std::vector &input_shape, .AddIntArg("T", static_cast(DataTypeToEnum::value)) .Finalize(net.NewOperatorDef()); net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.001); @@ -283,7 +283,7 @@ static void SimpleAvgPoolingTest() { "Input", {1, 2, 8, 1}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Pooling", "PoolingTest") .Input("InputImage") @@ -296,7 +296,7 @@ static void SimpleAvgPoolingTest() { .Finalize(net.NewOperatorDef()); // Run net.RunOp(D); - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); // Check @@ -334,7 +334,7 @@ static void AvgPoolingTest(const std::vector &shape, Tensor expected; expected.Copy(*net.GetOutput("Output")); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Pooling", "PoolingTest") .Input("InputImage") @@ -347,7 +347,7 @@ static void AvgPoolingTest(const std::vector &shape, .AddIntArg("T", static_cast(DataTypeToEnum::value)) .Finalize(net.NewOperatorDef()); net.RunOp(D); - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 0.01); @@ -393,3 +393,5 @@ TEST_F(PoolingOpTest, OPENCLUnAlignedLargeKernelAvgPooling) { AvgPoolingTest({3, 31, 37, 128}, {8, 8}, {8, 8}, Padding::SAME); } + +} // namespace mace diff --git a/mace/ops/reshape.h b/mace/ops/reshape.h index a4aec715..02b4f575 100644 --- a/mace/ops/reshape.h +++ b/mace/ops/reshape.h @@ -5,6 +5,8 @@ #ifndef MACE_OPS_RESHAPE_H_ #define MACE_OPS_RESHAPE_H_ +#include + #include "mace/core/operator.h" #include "mace/kernels/reshape.h" diff --git a/mace/ops/reshape_test.cc b/mace/ops/reshape_test.cc index 851f33cc..0a879da7 100644 --- a/mace/ops/reshape_test.cc +++ b/mace/ops/reshape_test.cc @@ -6,7 +6,7 @@ #include "mace/core/operator.h" #include "mace/ops/ops_test_util.h" -using namespace mace; +namespace mace { class ReshapeTest : public OpsTestBase {}; @@ -53,3 +53,5 @@ TEST_F(ReshapeTest, Complex) { TestReshape({1, 2, 3, 4}, {-1, 1}, {24, 1}); TestReshape({1, 2, 3, 4}, {1, 3, 8}, {1, 3, 8}); } + +} // namespace mace diff --git a/mace/ops/resize_bilinear.h b/mace/ops/resize_bilinear.h index bea852b5..a3f9d075 100644 --- a/mace/ops/resize_bilinear.h +++ b/mace/ops/resize_bilinear.h @@ -2,8 +2,8 @@ // Copyright (c) 2017 XiaoMi All rights reserved. // -#ifndef MACE_RESIZE_BILINEAR_H -#define MACE_RESIZE_BILINEAR_H +#ifndef MACE_OPS_RESIZE_BILINEAR_H_ +#define MACE_OPS_RESIZE_BILINEAR_H_ #include "mace/core/operator.h" #include "mace/kernels/resize_bilinear.h" @@ -36,4 +36,4 @@ class ResizeBilinearOp : public Operator { } // namespace mace -#endif // MACE_RESIZE_BILINEAR_H +#endif // MACE_OPS_RESIZE_BILINEAR_H_ diff --git a/mace/ops/resize_bilinear_benchmark.cc b/mace/ops/resize_bilinear_benchmark.cc index 9daee298..f93530ec 100644 --- a/mace/ops/resize_bilinear_benchmark.cc +++ b/mace/ops/resize_bilinear_benchmark.cc @@ -26,7 +26,7 @@ static void ResizeBilinearBenchmark(int iters, net.AddInputFromArray("OutSize", {2}, {output_height, output_width}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("ResizeBilinear", "ResizeBilinearBenchmark") .Input("InputImage") @@ -57,18 +57,20 @@ static void ResizeBilinearBenchmark(int iters, net.Sync(); } -#define BM_RESIZE_BILINEAR_MACRO(N, C, H0, W0, H1, W1, TYPE, DEVICE) \ - static void \ - BM_RESIZE_BILINEAR_##N##_##C##_##H0##_##W0##_##H1##_##W1##_##TYPE##_##DEVICE( \ - int iters) { \ - const int64_t macc = static_cast(iters) * N * C * H1 * W1 * 3; \ - const int64_t tot = static_cast(iters) * N * C * H0 * W0; \ - mace::testing::MaccProcessed(macc); \ - mace::testing::BytesProcessed(tot *(sizeof(TYPE))); \ - ResizeBilinearBenchmark(iters, N, C, H0, W0, H1, W1); \ - } \ - BENCHMARK( \ - BM_RESIZE_BILINEAR_##N##_##C##_##H0##_##W0##_##H1##_##W1##_##TYPE##_##DEVICE) +#define BM_RESIZE_BILINEAR_MACRO(N, C, H0, W0, H1, W1, TYPE, DEVICE) \ + static void \ + BM_RESIZE_BILINEAR_##N##_##C##_##H0##_##W0##_##H1##_##W1##_##TYPE##_\ + ##DEVICE( \ + int iters) { \ + const int64_t macc = static_cast(iters) * N * C * H1 * W1 * 3; \ + const int64_t tot = static_cast(iters) * N * C * H0 * W0; \ + mace::testing::MaccProcessed(macc); \ + mace::testing::BytesProcessed(tot *(sizeof(TYPE))); \ + ResizeBilinearBenchmark(iters, N, C, H0, W0, H1, W1); \ + } \ + BENCHMARK( \ + BM_RESIZE_BILINEAR_##N##_##C##_##H0##_##W0##_##H1##_##W1##_##TYPE##_\ + ##DEVICE) #define BM_RESIZE_BILINEAR(N, C, H0, W0, H1, W1) \ BM_RESIZE_BILINEAR_MACRO(N, C, H0, W0, H1, W1, float, CPU); \ diff --git a/mace/ops/resize_bilinear_test.cc b/mace/ops/resize_bilinear_test.cc index 1b3bf618..f5f1a720 100644 --- a/mace/ops/resize_bilinear_test.cc +++ b/mace/ops/resize_bilinear_test.cc @@ -2,11 +2,13 @@ // Copyright (c) 2017 XiaoMi All rights reserved. // +#include + #include "mace/ops/resize_bilinear.h" #include "mace/core/operator.h" #include "mace/ops/ops_test_util.h" -using namespace mace; +namespace mace { class ResizeBilinearTest : public OpsTestBase {}; @@ -61,17 +63,17 @@ TEST_F(ResizeBilinearTest, ResizeBilinearWAlignCorners) { template void TestRandomResizeBilinear() { - srand(time(nullptr)); + unsigned int seed = time(nullptr); testing::internal::LogToStderr(); for (int round = 0; round < 10; ++round) { - int batch = 1 + rand() % 5; - int channels = 1 + rand() % 100; - int height = 1 + rand() % 100; - int width = 1 + rand() % 100; - int in_height = 1 + rand() % 100; - int in_width = 1 + rand() % 100; - int align_corners = rand() % 1; + int batch = 1 + rand_r(&seed) % 5; + int channels = 1 + rand_r(&seed) % 100; + int height = 1 + rand_r(&seed) % 100; + int width = 1 + rand_r(&seed) % 100; + int in_height = 1 + rand_r(&seed) % 100; + int in_width = 1 + rand_r(&seed) % 100; + int align_corners = rand_r(&seed) % 1; // Construct graph OpsTestNet net; @@ -91,7 +93,7 @@ void TestRandomResizeBilinear() { expected.Copy(*net.GetOutput("Output")); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("ResizeBilinear", "ResizeBilinearTest") @@ -103,10 +105,10 @@ void TestRandomResizeBilinear() { // Run net.RunOp(D); - ImageToBuffer(net, "OutputImage", "DeviceOutput", + ImageToBuffer(&net, "OutputImage", "DeviceOutput", kernels::BufferType::IN_OUT_CHANNEL); } else { - // TODO support NEON + // TODO(yejianwu) support NEON } // Check ExpectTensorNear(expected, *net.GetOutput("DeviceOutput"), 0.001); @@ -122,3 +124,5 @@ TEST_F(ResizeBilinearTest, NEONRandomResizeBilinear) { TEST_F(ResizeBilinearTest, OPENCLRandomResizeBilinear) { TestRandomResizeBilinear(); } + +} // namespace mace diff --git a/mace/ops/slice.h b/mace/ops/slice.h index 41106a63..2e1ba6de 100644 --- a/mace/ops/slice.h +++ b/mace/ops/slice.h @@ -5,6 +5,8 @@ #ifndef MACE_OPS_SLICE_H_ #define MACE_OPS_SLICE_H_ +#include + #include "mace/core/operator.h" #include "mace/kernels/slice.h" namespace mace { @@ -16,10 +18,12 @@ class SliceOp : public Operator { : Operator(op_def, ws) {} bool Run(StatsFuture *future) override { - MACE_CHECK(this->OutputSize() >= 2) << "There must be at least two outputs for slicing"; + MACE_CHECK(this->OutputSize() >= 2) + << "There must be at least two outputs for slicing"; const Tensor *input = this->Input(INPUT); const std::vector output_list = this->Outputs(); - MACE_CHECK((input->dim(3) % this->OutputSize()) == 0) << "Outputs do not split input equally."; + MACE_CHECK((input->dim(3) % this->OutputSize()) == 0) + << "Outputs do not split input equally."; functor_(input, output_list, future); return true; diff --git a/mace/ops/slice_benchmark.cc b/mace/ops/slice_benchmark.cc index 5273f592..8a3fa0c9 100644 --- a/mace/ops/slice_benchmark.cc +++ b/mace/ops/slice_benchmark.cc @@ -16,13 +16,16 @@ static void BMSliceHelper(int iters, // Construct graph OpsTestNet net; - const index_t input_size = std::accumulate(input_shape.begin(), input_shape.end(), 1, std::multiplies()); + const index_t input_size = std::accumulate(input_shape.begin(), + input_shape.end(), + 1, + std::multiplies()); std::vector input_data(input_size); - GenerateRandomRealTypeData(input_shape, input_data); + GenerateRandomRealTypeData(input_shape, &input_data); net.AddInputFromArray("Input", input_shape, input_data); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); auto builder = OpDefBuilder("Slice", "SliceTest"); @@ -55,14 +58,15 @@ static void BMSliceHelper(int iters, } } -#define BM_SLICE_MACRO(N, H, W, C, NO, TYPE, DEVICE) \ - static void BM_SLICE_##N##_##H##_##W##_##C##_##NO##_##TYPE##_##DEVICE(int iters) { \ - const int64_t tot = static_cast(iters) * N * H * W * C; \ - mace::testing::MaccProcessed(tot); \ - mace::testing::BytesProcessed(tot *(sizeof(TYPE))); \ - BMSliceHelper(iters, {N, H, W, C}, NO); \ - } \ - BENCHMARK(BM_SLICE_##N##_##H##_##W##_##C##_##NO##_##TYPE##_##DEVICE) +#define BM_SLICE_MACRO(N, H, W, C, NO, TYPE, DEVICE) \ + static void \ + BM_SLICE_##N##_##H##_##W##_##C##_##NO##_##TYPE##_##DEVICE(int iters) { \ + const int64_t tot = static_cast(iters) * N * H * W * C; \ + mace::testing::MaccProcessed(tot); \ + mace::testing::BytesProcessed(tot *(sizeof(TYPE))); \ + BMSliceHelper(iters, {N, H, W, C}, NO); \ + } \ + BENCHMARK(BM_SLICE_##N##_##H##_##W##_##C##_##NO##_##TYPE##_##DEVICE) #define BM_SLICE(N, H, W, C, NO) \ BM_SLICE_MACRO(N, H, W, C, NO, float, CPU); \ diff --git a/mace/ops/slice_test.cc b/mace/ops/slice_test.cc index ff65fffa..dc900d67 100644 --- a/mace/ops/slice_test.cc +++ b/mace/ops/slice_test.cc @@ -2,34 +2,40 @@ // Copyright (c) 2017 XiaoMi All rights reserved. // +#include +#include + #include "mace/ops/slice.h" #include "mace/ops/ops_test_util.h" #include "gmock/gmock.h" -using namespace mace; +namespace mace { class SliceOpTest : public OpsTestBase {}; template void RandomTest(const int num_outputs) { - srand(time(nullptr)); - const index_t output_channels = 4 * (1 + rand() % 10); + unsigned int seed = time(nullptr); + const index_t output_channels = 4 * (1 + rand_r(&seed) % 10); const index_t input_channels = num_outputs * output_channels; - const index_t batch = 3 + (rand() % 10); - const index_t height = 13 + (rand() % 10); - const index_t width = 17 + (rand() % 10); + const index_t batch = 3 + (rand_r(&seed) % 10); + const index_t height = 13 + (rand_r(&seed) % 10); + const index_t width = 17 + (rand_r(&seed) % 10); // Construct graph OpsTestNet net; std::vector input_shape({batch, height, width, input_channels}); - const index_t input_size = std::accumulate(input_shape.begin(), input_shape.end(), 1, std::multiplies()); + const index_t input_size = std::accumulate(input_shape.begin(), + input_shape.end(), + 1, + std::multiplies()); std::vector input_data(input_size); - GenerateRandomRealTypeData(input_shape, input_data); + GenerateRandomRealTypeData(input_shape, &input_data); net.AddInputFromArray("Input", input_shape, input_data); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); auto builder = OpDefBuilder("Slice", "SliceTest"); @@ -47,7 +53,6 @@ void RandomTest(const int num_outputs) { builder = builder.Output(MakeString("Output", i)); } builder.Finalize(net.NewOperatorDef()); - } // Run @@ -55,15 +60,19 @@ void RandomTest(const int num_outputs) { if (D == DeviceType::OPENCL) { for (int i = 0; i < num_outputs; ++i) { - ImageToBuffer(net, MakeString("OutputImage", i), MakeString("Output", i), + ImageToBuffer(&net, + MakeString("OutputImage", i), + MakeString("Output", i), kernels::BufferType::IN_OUT_CHANNEL); } } // Check std::vector expected_shape({batch, height, width, output_channels}); - const index_t outer_size = std::accumulate(expected_shape.begin(), expected_shape.end() - 1, - 1, std::multiplies()); + const index_t outer_size = std::accumulate(expected_shape.begin(), + expected_shape.end() - 1, + 1, + std::multiplies()); const float *input_ptr = input_data.data(); const float *output_ptr; for (int i = 0; i < num_outputs; ++i) { @@ -74,7 +83,8 @@ void RandomTest(const int num_outputs) { for (int outer_idx = 0; outer_idx < outer_size; ++outer_idx) { const int idx = outer_idx * input_channels + i * output_channels; for (int j = 0; j < output_channels; ++j) { - ASSERT_NEAR(*output_ptr++, input_ptr[idx + j], 1e-2) << "with output " << i << " index " << idx + j; + ASSERT_NEAR(*output_ptr++, input_ptr[idx + j], 1e-2) << "with output " + << i << " index " << idx + j; } } } @@ -97,3 +107,5 @@ TEST_F(SliceOpTest, OPENCLHalf) { RandomTest(4); RandomTest(11); } + +} // namespace mace diff --git a/mace/ops/softmax.h b/mace/ops/softmax.h index 3eebabe0..c092aebc 100644 --- a/mace/ops/softmax.h +++ b/mace/ops/softmax.h @@ -2,8 +2,8 @@ // Copyright (c) 2017 XiaoMi All rights reserved. // -#ifndef MACE_SOFTMAX_H_ -#define MACE_SOFTMAX_H_ +#ifndef MACE_OPS_SOFTMAX_H_ +#define MACE_OPS_SOFTMAX_H_ #include "mace/core/operator.h" #include "mace/kernels/softmax.h" @@ -36,4 +36,4 @@ class SoftmaxOp : public Operator { } // namespace mace -#endif // MACE_SOFTMAX_H_ +#endif // MACE_OPS_SOFTMAX_H_ diff --git a/mace/ops/softmax_benchmark.cc b/mace/ops/softmax_benchmark.cc index 4f2e8ce8..fd77b7af 100644 --- a/mace/ops/softmax_benchmark.cc +++ b/mace/ops/softmax_benchmark.cc @@ -19,7 +19,7 @@ static void SoftmaxBenchmark( net.AddRandomInput("Input", {batch, height, width, channels}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Softmax", "SoftmaxBM") diff --git a/mace/ops/softmax_test.cc b/mace/ops/softmax_test.cc index 68c4e4e6..cb994ba8 100644 --- a/mace/ops/softmax_test.cc +++ b/mace/ops/softmax_test.cc @@ -18,7 +18,7 @@ void Simple() { {1, 1, 1, 1, 1, 2, 3, 4}); if (D == DeviceType::OPENCL) { - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Softmax", "SoftmaxTest") @@ -30,7 +30,7 @@ void Simple() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Softmax", "SoftmaxTest") @@ -69,7 +69,7 @@ void Complex(const std::vector &logits_shape) { Tensor expected; expected.Copy(*net.GetOutput("Output")); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("Softmax", "SoftmaxTest") @@ -81,7 +81,7 @@ void Complex(const std::vector &logits_shape) { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "OPENCLOutput", + ImageToBuffer(&net, "OutputImage", "OPENCLOutput", kernels::BufferType::IN_OUT_CHANNEL); ExpectTensorNear(expected, *net.GetOutput("OPENCLOutput"), 1e-5); diff --git a/mace/ops/space_to_batch.h b/mace/ops/space_to_batch.h index b25c5895..35cddf5d 100644 --- a/mace/ops/space_to_batch.h +++ b/mace/ops/space_to_batch.h @@ -6,6 +6,7 @@ #define MACE_OPS_SPACE_TO_BATCH_H_ #include +#include #include "mace/core/operator.h" #include "mace/kernels/space_to_batch.h" diff --git a/mace/ops/space_to_batch_benchmark.cc b/mace/ops/space_to_batch_benchmark.cc index db72ce54..7829a043 100644 --- a/mace/ops/space_to_batch_benchmark.cc +++ b/mace/ops/space_to_batch_benchmark.cc @@ -15,7 +15,7 @@ static void BMSpaceToBatch( OpsTestNet net; net.AddRandomInput("Input", {batch, height, width, channels}); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("SpaceToBatchND", "SpaceToBatchNDTest") .Input("InputImage") diff --git a/mace/ops/space_to_batch_test.cc b/mace/ops/space_to_batch_test.cc index b9cb14f6..b20ca84d 100644 --- a/mace/ops/space_to_batch_test.cc +++ b/mace/ops/space_to_batch_test.cc @@ -6,7 +6,7 @@ #include "gtest/gtest.h" #include "mace/ops/ops_test_util.h" -using namespace mace; +namespace mace { template void RunSpaceToBatch(const std::vector &input_shape, @@ -17,7 +17,7 @@ void RunSpaceToBatch(const std::vector &input_shape, OpsTestNet net; net.AddInputFromArray("Input", input_shape, input_data); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("SpaceToBatchND", "SpaceToBatchNDTest") .Input("InputImage") @@ -29,7 +29,7 @@ void RunSpaceToBatch(const std::vector &input_shape, // Run net.RunOp(D); - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); // Check ExpectTensorNear(*expected, *net.GetOutput("Output"), 1e-8); @@ -45,7 +45,7 @@ void RunBatchToSpace(const std::vector &input_shape, // Add input data net.AddInputFromArray("Input", input_shape, input_data); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("BatchToSpaceND", "BatchToSpaceNDTest") .Input("InputImage") @@ -57,7 +57,7 @@ void RunBatchToSpace(const std::vector &input_shape, // Run net.RunOp(D); - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); // Check ExpectTensorNear(*expected, *net.GetOutput("Output"), 1e-8); @@ -216,3 +216,5 @@ TEST(SpaceToBatchTest, MultiBatchAndChannelData) { // {2, 2, 2, 2}, // space_tensor.get()); //} + +} // namespace mace diff --git a/mace/ops/winograd_convolution_test.cc b/mace/ops/winograd_convolution_test.cc index 41e8478a..6965e4e9 100644 --- a/mace/ops/winograd_convolution_test.cc +++ b/mace/ops/winograd_convolution_test.cc @@ -13,8 +13,9 @@ class WinogradConvlutionTest : public OpsTestBase {}; void TransposeFilter(const std::vector &input, const std::vector &input_shape, - std::vector &output) { - output.resize(input.size()); + std::vector *output) { + MACE_CHECK_NOTNULL(output); + output->resize(input.size()); const float *input_ptr = input.data(); for (index_t h = 0; h < input_shape[0]; ++h) { @@ -24,7 +25,7 @@ void TransposeFilter(const std::vector &input, int offset = ((oc * input_shape[3] + ic) * input_shape[0] + h) * input_shape[1] + w; - output[offset] = *input_ptr; + (*output)[offset] = *input_ptr; ++input_ptr; } } @@ -46,16 +47,16 @@ void WinogradConvolution(const index_t batch, // Add input data std::vector filter_data; std::vector filter_shape = {3, 3, out_channels, in_channels}; - GenerateRandomRealTypeData(filter_shape, filter_data); + GenerateRandomRealTypeData(filter_shape, &filter_data); net.AddRandomInput("Input", {batch, height, width, in_channels}); net.AddInputFromArray("Filter", filter_shape, filter_data); net.AddRandomInput("Bias", {out_channels}); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Conv2D", "Conv2dTest") .Input("InputImage") .Input("FilterImage") @@ -69,7 +70,7 @@ void WinogradConvolution(const index_t batch, net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "ConvOutput", + ImageToBuffer(&net, "OutputImage", "ConvOutput", kernels::BufferType::IN_OUT_CHANNEL); Tensor expected; expected.Copy(*net.GetOutput("ConvOutput")); @@ -78,10 +79,10 @@ void WinogradConvolution(const index_t batch, // Winograd convolution // transform filter std::vector wino_filter_data; - TransposeFilter(filter_data, filter_shape, wino_filter_data); + TransposeFilter(filter_data, filter_shape, &wino_filter_data); net.AddInputFromArray( "WinoFilterData", {out_channels, in_channels, 3, 3}, wino_filter_data); - BufferToImage(net, "WinoFilterData", "WinoFilter", + BufferToImage(&net, "WinoFilterData", "WinoFilter", kernels::BufferType::WINOGRAD_FILTER); // transform input @@ -119,7 +120,7 @@ void WinogradConvolution(const index_t batch, net.RunOp(D); net.Sync(); - ImageToBuffer(net, "WinoOutputImage", "WinoOutput", + ImageToBuffer(&net, "WinoOutputImage", "WinoOutput", kernels::BufferType::IN_OUT_CHANNEL); if (DataTypeToEnum::value == DataType::DT_HALF) { ExpectTensorNear(expected, *net.GetOutput("WinoOutput"), 1e-1); @@ -163,16 +164,16 @@ void WinogradConvolutionWithPad(const index_t batch, // Add input data std::vector filter_data; std::vector filter_shape = {3, 3, out_channels, in_channels}; - GenerateRandomRealTypeData(filter_shape, filter_data); + GenerateRandomRealTypeData(filter_shape, &filter_data); net.AddRandomInput("Input", {batch, height, width, in_channels}); net.AddInputFromArray("Filter", filter_shape, filter_data); net.AddRandomInput("Bias", {out_channels}); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); - BufferToImage(net, "Filter", "FilterImage", + BufferToImage(&net, "Filter", "FilterImage", kernels::BufferType::CONV2D_FILTER); - BufferToImage(net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); + BufferToImage(&net, "Bias", "BiasImage", kernels::BufferType::ARGUMENT); OpDefBuilder("Conv2D", "Conv2dTest") .Input("InputImage") .Input("FilterImage") @@ -186,7 +187,7 @@ void WinogradConvolutionWithPad(const index_t batch, net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "ConvOutput", + ImageToBuffer(&net, "OutputImage", "ConvOutput", kernels::BufferType::IN_OUT_CHANNEL); Tensor expected; expected.Copy(*net.GetOutput("ConvOutput")); @@ -195,10 +196,10 @@ void WinogradConvolutionWithPad(const index_t batch, // Winograd convolution // transform filter std::vector wino_filter_data; - TransposeFilter(filter_data, filter_shape, wino_filter_data); + TransposeFilter(filter_data, filter_shape, &wino_filter_data); net.AddInputFromArray( "WinoFilterData", {out_channels, in_channels, 3, 3}, wino_filter_data); - BufferToImage(net, "WinoFilterData", "WinoFilter", + BufferToImage(&net, "WinoFilterData", "WinoFilter", kernels::BufferType::WINOGRAD_FILTER); // transform input @@ -236,7 +237,7 @@ void WinogradConvolutionWithPad(const index_t batch, net.RunOp(D); net.Sync(); - ImageToBuffer(net, "WinoOutputImage", "WinoOutput", + ImageToBuffer(&net, "WinoOutputImage", "WinoOutput", kernels::BufferType::IN_OUT_CHANNEL); if (DataTypeToEnum::value == DataType::DT_HALF) { ExpectTensorNear(expected, *net.GetOutput("WinoOutput"), 1e-1); @@ -250,4 +251,4 @@ TEST_F(WinogradConvlutionTest, UnAlignedConvolutionPad2) { WinogradConvolutionWithPad(1, 32, 32, 96, 109, 2); } -} +} // namespace mace diff --git a/mace/ops/winograd_inverse_transform.h b/mace/ops/winograd_inverse_transform.h index 4ea49289..c53c1efe 100644 --- a/mace/ops/winograd_inverse_transform.h +++ b/mace/ops/winograd_inverse_transform.h @@ -6,6 +6,7 @@ #define MACE_OPS_WINOGRAD_INVERSE_TRANSFORM_H_ #include +#include #include "mace/core/operator.h" #include "mace/kernels/activation.h" diff --git a/mace/ops/winograd_transform_benchmark.cc b/mace/ops/winograd_transform_benchmark.cc index 23f7249b..e0025d1e 100644 --- a/mace/ops/winograd_transform_benchmark.cc +++ b/mace/ops/winograd_transform_benchmark.cc @@ -15,7 +15,7 @@ static void BMWinogradTransform( OpsTestNet net; net.AddRandomInput("Input", {batch, height, width, channels}); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_CHANNEL); OpDefBuilder("WinogradTransform", "WinogradTransformTest") .Input("InputImage") @@ -62,7 +62,7 @@ static void BMWinogradInverseTransform( OpsTestNet net; net.AddRandomInput("Input", {16, channels, p, 1}); - BufferToImage(net, "Input", "InputImage", + BufferToImage(&net, "Input", "InputImage", kernels::BufferType::IN_OUT_HEIGHT); OpDefBuilder("WinogradInverseTransform", "WinogradInverseTransformTest") .Input("InputImage") -- GitLab