diff --git a/mace/ops/activation_benchmark.cc b/mace/ops/activation_benchmark.cc index d80099d7d5952eede5120d3c4b0bde850865b972..d8a8cb726a5e8398052dec9e397c8a830fef8219 100644 --- a/mace/ops/activation_benchmark.cc +++ b/mace/ops/activation_benchmark.cc @@ -23,7 +23,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") @@ -83,7 +83,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") @@ -146,9 +146,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") @@ -210,7 +210,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") @@ -270,7 +270,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 82006c56fcc6cb4543b24ef698d8c4adfaf7ddbd..18bddcc75e4555cdc16d3cd63e828281ce7dd0e8 100644 --- a/mace/ops/activation_test.cc +++ b/mace/ops/activation_test.cc @@ -21,7 +21,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") @@ -34,7 +34,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") @@ -67,7 +67,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") @@ -80,7 +80,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") @@ -116,7 +116,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") @@ -130,7 +130,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") @@ -166,7 +166,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") @@ -180,7 +180,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") @@ -219,9 +219,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") @@ -235,7 +235,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") @@ -272,7 +272,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") @@ -285,7 +285,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") @@ -323,7 +323,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") @@ -336,7 +336,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 79d3aca33855119f1fa44a9871cd71c47418b0b6..a5c5a114101ca0e00db24574906f25c664c1f742 100644 --- a/mace/ops/addn_benchmark.cc +++ b/mace/ops/addn_benchmark.cc @@ -24,7 +24,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 e6e5b4cb923066ee9ed02cc87b4e388959b79b6d..068932dbfd38d79a072a1f8a8b04ab0687c206ec 100644 --- a/mace/ops/addn_test.cc +++ b/mace/ops/addn_test.cc @@ -67,7 +67,7 @@ void RandomTest() { static unsigned int seed = time(NULL); for (int round = 0; round < 10; ++round) { - // generate random input + // generate random input index_t n = 1 + (rand_r(&seed) % 5); index_t h = 1 + (rand_r(&seed) % 100); index_t w = 1 + (rand_r(&seed) % 100); @@ -94,7 +94,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); } @@ -110,7 +110,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 cdd4c693631dcbbecc3c2c0bf250153bd280dad7..6e9f20c85b6ba5c94213c3da7ef74adabd15c843 100644 --- a/mace/ops/batch_norm_benchmark.cc +++ b/mace/ops/batch_norm_benchmark.cc @@ -26,15 +26,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 5a599a611c28cce68bdef2b3036dcdfe7872bd86..eac95fa51f08d39a699ae382d64ed6bd3abd31f4 100644 --- a/mace/ops/batch_norm_test.cc +++ b/mace/ops/batch_norm_test.cc @@ -24,15 +24,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") @@ -48,7 +48,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") @@ -112,15 +112,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") @@ -142,7 +142,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); } @@ -255,15 +255,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") @@ -285,7 +285,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); } @@ -326,15 +326,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") @@ -357,7 +357,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 9d85d7d9df037d0cc7f814a02efbe6681f514099..de613f0401c994ab620d9a7c7d9ae2da4f434fa3 100644 --- a/mace/ops/batch_to_space_benchmark.cc +++ b/mace/ops/batch_to_space_benchmark.cc @@ -17,7 +17,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 1ba0fac20812239703cf9c2fa5ccf37e8a7bc715..375f78ac2e4b65a33079ea9cc05ef07cdd94d936 100644 --- a/mace/ops/bias_add_benchmark.cc +++ b/mace/ops/bias_add_benchmark.cc @@ -22,9 +22,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 4803bcd23611d6d8728cd99e82d58cb8ecc29303..eff5ace0b81a665800e4a2345c58bc7a3c441247 100644 --- a/mace/ops/bias_add_test.cc +++ b/mace/ops/bias_add_test.cc @@ -21,9 +21,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") @@ -35,7 +35,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") @@ -90,9 +90,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") @@ -105,7 +105,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 5fa1f6bd36faef15331ecd0efb9a1ab70b76902f..c547cce6637dac8dda1c768b1aa5f8327c6e2553 100644 --- a/mace/ops/channel_shuffle_benchmark.cc +++ b/mace/ops/channel_shuffle_benchmark.cc @@ -21,7 +21,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 6de9904c04e45e5b59c63dca9da08fac19cf39c9..610a260a2a98a2f0768830b831ad28e215eae53d 100644 --- a/mace/ops/channel_shuffle_test.cc +++ b/mace/ops/channel_shuffle_test.cc @@ -44,7 +44,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); OpDefBuilder("ChannelShuffle", "ChannelShuffleTest") @@ -57,7 +57,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 diff --git a/mace/ops/concat_benchmark.cc b/mace/ops/concat_benchmark.cc index 6e98d03c69ede587c2551f0ec5114be9611643de..a8da83588cb62b49033083c2a0f85318f4bbf984 100644 --- a/mace/ops/concat_benchmark.cc +++ b/mace/ops/concat_benchmark.cc @@ -64,9 +64,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 9612b04dce7f7e5c0ce28742163fdeb35784f7a2..efc8bd7fc1bb4e59e92c0f14c11736011432586a 100644 --- a/mace/ops/concat_test.cc +++ b/mace/ops/concat_test.cc @@ -27,9 +27,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); @@ -64,9 +64,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); @@ -107,7 +107,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); @@ -115,7 +115,7 @@ TEST_F(ConcatOpTest, CPURandom) { for (int i = 0; i < num_inputs; ++i) { input_shapes[i][axis] = 1 + rand_r(&seed) % 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]); @@ -157,7 +157,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); } @@ -174,7 +174,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 diff --git a/mace/ops/conv_2d_benchmark.cc b/mace/ops/conv_2d_benchmark.cc index 5399d0ad8dcc4776a6d0f43e1732c83360d99e2c..90e4579eb9c53c4870a083f9871001420509318e 100644 --- a/mace/ops/conv_2d_benchmark.cc +++ b/mace/ops/conv_2d_benchmark.cc @@ -36,11 +36,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") @@ -82,30 +82,32 @@ static void Conv2d(int iters, // approximate the amortized latency. The OpenCL runtime for Mali/Adreno is // in-order. -#define BM_CONV_2D_MACRO(N, C, H, W, KH, KW, STRIDE, DILATION, P, OC, TYPE, \ - DEVICE) \ - static void \ - BM_CONV_2D_##N##_##C##_##H##_##W##_K##KH##x##KW##S##STRIDE##D##DILATION##_##P##_##OC##_##TYPE##_##DEVICE( \ - int iters) { \ - const int64_t tot = static_cast(iters) * N * C * H * W; \ - int64_t pad_h = 0, pad_w = 0; \ - if (P == SAME) { \ - pad_h = KH / 2; \ - pad_w = KW / 2; \ - } \ - int64_t oh = \ - (H + 2 * pad_h - KH - (KH - 1) * (DILATION - 1)) / STRIDE + 1; \ - int64_t ow = \ - (W + 2 * pad_w - KW - (KW - 1) * (DILATION - 1)) / STRIDE + 1; \ - const int64_t macc = \ - static_cast(iters) * N * OC * oh * ow * (KH * KW * C + 1); \ - mace::testing::MaccProcessed(macc); \ - mace::testing::BytesProcessed(tot *(sizeof(TYPE))); \ - Conv2d(iters, N, C, H, W, KH, KW, STRIDE, DILATION, \ - mace::Padding::P, OC); \ - } \ - BENCHMARK( \ - BM_CONV_2D_##N##_##C##_##H##_##W##_K##KH##x##KW##S##STRIDE##D##DILATION##_##P##_##OC##_##TYPE##_##DEVICE) +#define BM_CONV_2D_MACRO(N, C, H, W, KH, KW, STRIDE, DILATION, P, OC, TYPE, \ + DEVICE) \ + static void \ + BM_CONV_2D_##N##_##C##_##H##_##W##_K##KH##x##KW##S##STRIDE##D##DILATION\ + ##_##P##_##OC##_##TYPE##_##DEVICE( \ + int iters) { \ + const int64_t tot = static_cast(iters) * N * C * H * W; \ + int64_t pad_h = 0, pad_w = 0; \ + if (P == SAME) { \ + pad_h = KH / 2; \ + pad_w = KW / 2; \ + } \ + int64_t oh = \ + (H + 2 * pad_h - KH - (KH - 1) * (DILATION - 1)) / STRIDE + 1; \ + int64_t ow = \ + (W + 2 * pad_w - KW - (KW - 1) * (DILATION - 1)) / STRIDE + 1; \ + const int64_t macc = \ + static_cast(iters) * N * OC * oh * ow * (KH * KW * C + 1); \ + mace::testing::MaccProcessed(macc); \ + mace::testing::BytesProcessed(tot *(sizeof(TYPE))); \ + Conv2d(iters, N, C, H, W, KH, KW, STRIDE, DILATION, \ + mace::Padding::P, OC); \ + } \ + BENCHMARK( \ + BM_CONV_2D_##N##_##C##_##H##_##W##_K##KH##x##KW##S##STRIDE##D##DILATION\ + ##_##P##_##OC##_##TYPE##_##DEVICE) #define BM_CONV_2D(N, C, H, W, KH, KW, S, D, P, OC) \ BM_CONV_2D_MACRO(N, C, H, W, KH, KW, S, D, P, OC, float, CPU); \ diff --git a/mace/ops/conv_2d_test.cc b/mace/ops/conv_2d_test.cc index 0fcde7188626883692e18b217d1ba6e52f8c137c..eef5a560d6a190932681173a0038fa4edd738703 100644 --- a/mace/ops/conv_2d_test.cc +++ b/mace/ops/conv_2d_test.cc @@ -28,11 +28,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") @@ -48,7 +48,7 @@ void TestNHWCSimple3x3VALID() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { @@ -85,11 +85,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") @@ -105,7 +105,7 @@ void TestNHWCSimple3x3SAME() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { @@ -154,9 +154,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") @@ -171,7 +171,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") @@ -220,11 +220,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") @@ -240,7 +240,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") @@ -293,11 +293,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") @@ -312,7 +312,7 @@ void TestConv1x1() { // Run net.RunOp(D); - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("Conv2D", "Conv2DTest") @@ -384,11 +384,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") @@ -404,7 +404,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); }; @@ -460,13 +460,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); @@ -482,11 +482,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") @@ -502,7 +502,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); @@ -606,11 +606,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") @@ -626,7 +626,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); }; @@ -689,11 +689,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") @@ -708,7 +708,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 2d7ec655b8044183fb376b5de77f05eb0185933a..d97df4585d1925ca2a2c3f07e7a4ae29992636bb 100644 --- a/mace/ops/depthwise_conv2d_benchmark.cc +++ b/mace/ops/depthwise_conv2d_benchmark.cc @@ -35,11 +35,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") @@ -77,31 +77,33 @@ static void DepthwiseConv2d(int iters, } } -#define BM_DEPTHWISE_CONV_2D_MACRO(N, C, H, W, KH, KW, STRIDE, P, M, TYPE, \ - DEVICE) \ - static void \ - BM_DEPTHWISE_CONV_2D_##N##_##C##_##H##_##W##_K##KH##x##KW##S##STRIDE##_##P##_##M##_##TYPE##_##DEVICE( \ - int iters) { \ - const int64_t dilation = 1; \ - const int64_t tot = static_cast(iters) * N * C * H * W; \ - int64_t pad_h = 0, pad_w = 0; \ - if (P == SAME) { \ - pad_h = KH / 2; \ - pad_w = KW / 2; \ - } \ - int64_t oh = \ - (H + 2 * pad_h - KH - (KH - 1) * (dilation - 1)) / STRIDE + 1; \ - int64_t ow = \ - (W + 2 * pad_w - KW - (KW - 1) * (dilation - 1)) / STRIDE + 1; \ - const int64_t macc = \ - static_cast(iters) * N * C * M * oh * ow * (KH * KW + 1); \ - mace::testing::MaccProcessed(macc); \ - mace::testing::BytesProcessed(tot *(sizeof(TYPE))); \ - DepthwiseConv2d(iters, N, C, H, W, KH, KW, STRIDE, \ - mace::Padding::P, M); \ - } \ - BENCHMARK( \ - BM_DEPTHWISE_CONV_2D_##N##_##C##_##H##_##W##_K##KH##x##KW##S##STRIDE##_##P##_##M##_##TYPE##_##DEVICE) +#define BM_DEPTHWISE_CONV_2D_MACRO(N, C, H, W, KH, KW, STRIDE, P, M, TYPE, \ + DEVICE) \ + static void \ + BM_DEPTHWISE_CONV_2D_##N##_##C##_##H##_##W##_K##KH##x##KW##S##STRIDE##_\ + ##P##_##M##_##TYPE##_##DEVICE( \ + int iters) { \ + const int64_t dilation = 1; \ + const int64_t tot = static_cast(iters) * N * C * H * W; \ + int64_t pad_h = 0, pad_w = 0; \ + if (P == SAME) { \ + pad_h = KH / 2; \ + pad_w = KW / 2; \ + } \ + int64_t oh = \ + (H + 2 * pad_h - KH - (KH - 1) * (dilation - 1)) / STRIDE + 1; \ + int64_t ow = \ + (W + 2 * pad_w - KW - (KW - 1) * (dilation - 1)) / STRIDE + 1; \ + const int64_t macc = \ + static_cast(iters) * N * C * M * oh * ow * (KH * KW + 1); \ + mace::testing::MaccProcessed(macc); \ + mace::testing::BytesProcessed(tot *(sizeof(TYPE))); \ + DepthwiseConv2d(iters, N, C, H, W, KH, KW, STRIDE, \ + mace::Padding::P, M); \ + } \ + BENCHMARK( \ + BM_DEPTHWISE_CONV_2D_##N##_##C##_##H##_##W##_K##KH##x##KW##S##STRIDE##_\ + ##P##_##M##_##TYPE##_##DEVICE) #define BM_DEPTHWISE_CONV_2D(N, C, H, W, KH, KW, S, P, M) \ BM_DEPTHWISE_CONV_2D_MACRO(N, C, H, W, KH, KW, S, P, M, float, CPU); \ diff --git a/mace/ops/depthwise_conv2d_test.cc b/mace/ops/depthwise_conv2d_test.cc index 6c841c752aedcd3c32b53bcdb53c1a4399a70a2d..59073899e24351dc798fd7f5da787a1eb6b25474 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 { @@ -239,11 +239,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") @@ -259,7 +259,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 25917890e25ee02c77206d0546f1eb9dc6e42b20..478db803b59e9dc6c6cd02e4719189f894cdf96b 100644 --- a/mace/ops/eltwise_benchmark.cc +++ b/mace/ops/eltwise_benchmark.cc @@ -24,9 +24,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 28d7384369916794f5b678862f7d9f574b974154..8a0fbcd882cf68156afbf459cac32d0116478bec 100644 --- a/mace/ops/eltwise_test.cc +++ b/mace/ops/eltwise_test.cc @@ -38,9 +38,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") @@ -53,7 +53,7 @@ void Simple(const kernels::EltwiseType type, // Run net.RunOp(D); - ImageToBuffer(net, "OutputImg", "Output", + ImageToBuffer(&net, "OutputImg", "Output", kernels::BufferType::IN_OUT_CHANNEL); } @@ -122,9 +122,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") @@ -138,7 +138,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 416e6ad8c3011007b530c7e6942a74e2ffd1ed2b..4c13e08c38e58477a5dbbe00885166d13d5bcddf 100644 --- a/mace/ops/folded_batch_norm_test.cc +++ b/mace/ops/folded_batch_norm_test.cc @@ -39,11 +39,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") @@ -56,7 +56,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") @@ -204,11 +204,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") @@ -222,7 +222,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); } @@ -313,11 +313,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") @@ -330,7 +330,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); } @@ -366,11 +366,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") @@ -384,7 +384,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_benchmark.cc b/mace/ops/fully_connected_benchmark.cc index da9749c40f45b17a46d50c5ddee929b0efdd46d7..2328ea8e2290f2915e825d8dbf68f25dc6bd7d49 100644 --- a/mace/ops/fully_connected_benchmark.cc +++ b/mace/ops/fully_connected_benchmark.cc @@ -28,11 +28,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 09a0b04f341a4fcef9e181b97fa375bfa6cf1157..26a893b25cf77f0a7af49b7379693729a2410de4 100644 --- a/mace/ops/fully_connected_test.cc +++ b/mace/ops/fully_connected_test.cc @@ -30,11 +30,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") @@ -48,7 +48,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") @@ -139,11 +139,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") @@ -158,7 +158,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); @@ -221,11 +221,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") @@ -239,7 +239,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); diff --git a/mace/ops/fused_conv_2d_test.cc b/mace/ops/fused_conv_2d_test.cc index a893e0e7ebf408054afb575d621fe528cc40295a..554f2cba53025e8ca038fd8c420d8099184e35ba 100644 --- a/mace/ops/fused_conv_2d_test.cc +++ b/mace/ops/fused_conv_2d_test.cc @@ -27,11 +27,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") @@ -47,7 +47,7 @@ void TestNHWCSimple3x3VALID() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { @@ -84,11 +84,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") @@ -104,7 +104,7 @@ void TestNHWCSimple3x3SAME() { net.RunOp(D); // Transfer output - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { @@ -152,9 +152,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") @@ -169,7 +169,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") @@ -221,11 +221,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") @@ -240,7 +240,7 @@ void TestConv1x1() { // Run net.RunOp(D); - ImageToBuffer(net, "OutputImage", "Output", + ImageToBuffer(&net, "OutputImage", "Output", kernels::BufferType::IN_OUT_CHANNEL); } else { OpDefBuilder("FusedConv2D", "FusedConv2dTest") @@ -311,11 +311,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") @@ -331,7 +331,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); }; @@ -374,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); @@ -396,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") @@ -416,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); @@ -474,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") @@ -494,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); }; @@ -553,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") @@ -573,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); }; @@ -640,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") @@ -660,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); }; diff --git a/mace/ops/matmul_benchmark.cc b/mace/ops/matmul_benchmark.cc index 5c136f57206fcb2b7a915bf08886a6e4469428c9..850acb184d404befd0c7897831175ff2cabe8e74 100644 --- a/mace/ops/matmul_benchmark.cc +++ b/mace/ops/matmul_benchmark.cc @@ -24,8 +24,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 237b8f134bcd3b70258e419d007805ac8f23310d..192cfc31f63b77faa791e632239b99b433f9a6ad 100644 --- a/mace/ops/matmul_test.cc +++ b/mace/ops/matmul_test.cc @@ -27,9 +27,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") @@ -41,7 +41,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") @@ -127,9 +127,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") @@ -142,7 +142,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); diff --git a/mace/ops/ops_test_util.h b/mace/ops/ops_test_util.h index b782115b24b33df6ccf540cc5a36f5edbf431c1b..ece4885717ad9336f753be57499f4c2eec87e548 100644 --- a/mace/ops/ops_test_util.h +++ b/mace/ops/ops_test_util.h @@ -5,11 +5,13 @@ #ifndef MACE_OPS_OPS_TEST_UTIL_H_ #define MACE_OPS_OPS_TEST_UTIL_H_ -#include -#include #include -#include +#include +#include #include +#include +#include +#include #include "gtest/gtest.h" #include "mace/core/net.h" @@ -210,37 +212,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 @@ -383,39 +389,43 @@ 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) { + MACE_CHECK_NOTNULL(net); + OpDefBuilder("ImageToBuffer", "ImageToBufferTest") .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(); } } // namespace test diff --git a/mace/ops/pooling_benchmark.cc b/mace/ops/pooling_benchmark.cc index af6688abe1c41cb2dc80b05040b1cb7c2f47cbb5..dd5c57a9971291fd6510e5e8ba398b86273683b4 100644 --- a/mace/ops/pooling_benchmark.cc +++ b/mace/ops/pooling_benchmark.cc @@ -50,18 +50,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); diff --git a/mace/ops/pooling_test.cc b/mace/ops/pooling_test.cc index e57e57163cd8af7d59dd043c146c9bdc0cc6c33d..dd81a4bb3cbd0b4fb0b7e5f5ee105810ce19df09 100644 --- a/mace/ops/pooling_test.cc +++ b/mace/ops/pooling_test.cc @@ -135,7 +135,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") @@ -147,7 +147,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 @@ -200,7 +200,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") @@ -213,7 +213,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); @@ -285,7 +285,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") @@ -298,7 +298,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 @@ -336,7 +336,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") @@ -349,7 +349,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); diff --git a/mace/ops/resize_bilinear_benchmark.cc b/mace/ops/resize_bilinear_benchmark.cc index 6e19a000ebe67a8a4c6a1f6070fec112b5e92236..aa66d346c983db82f20074395e1155745cd0d18f 100644 --- a/mace/ops/resize_bilinear_benchmark.cc +++ b/mace/ops/resize_bilinear_benchmark.cc @@ -29,7 +29,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") @@ -60,18 +60,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 9e4034e239171d4b5709dbf0b017646f26c2e1b2..896fe630842c524d77c5a2066792408bffca492f 100644 --- a/mace/ops/resize_bilinear_test.cc +++ b/mace/ops/resize_bilinear_test.cc @@ -94,7 +94,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") @@ -106,7 +106,7 @@ void TestRandomResizeBilinear() { // Run net.RunOp(D); - ImageToBuffer(net, "OutputImage", "DeviceOutput", + ImageToBuffer(&net, "OutputImage", "DeviceOutput", kernels::BufferType::IN_OUT_CHANNEL); } else { // TODO(someone): support NEON diff --git a/mace/ops/slice.h b/mace/ops/slice.h index 466914f3580f7de9c58b5a6ff96ee9e351b58f55..a1a6ad112578c41f5966a0a61951a730c50cf245 100644 --- a/mace/ops/slice.h +++ b/mace/ops/slice.h @@ -20,10 +20,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 a0aeb90a191384976914bed7052e53c200c01b34..a38c995d7f6c46d493d511d5f10ef1b9a1790f09 100644 --- a/mace/ops/slice_benchmark.cc +++ b/mace/ops/slice_benchmark.cc @@ -19,13 +19,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"); @@ -58,14 +61,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 7f94aa55eb6deddbb2a058588abd47a0378eaf69..bd0244d3cd9453785c30a219c6011c82edd2bd84 100644 --- a/mace/ops/slice_test.cc +++ b/mace/ops/slice_test.cc @@ -3,6 +3,7 @@ // #include +#include #include "gmock/gmock.h" #include "mace/ops/slice.h" @@ -27,13 +28,16 @@ void RandomTest(const int num_outputs) { 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"); @@ -58,15 +62,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) { @@ -77,7 +85,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; } } } diff --git a/mace/ops/softmax_benchmark.cc b/mace/ops/softmax_benchmark.cc index bd40f4f77da2e0d98cbdb062de83bc4624047ccf..fb6dc4ef27ae2ae6904d5a598a70484724fd24ef 100644 --- a/mace/ops/softmax_benchmark.cc +++ b/mace/ops/softmax_benchmark.cc @@ -23,7 +23,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 b53b94651e87e9f2a94395ebd780c07c446b76eb..b4ad23097db6474df978f1537572aecac11b6dfa 100644 --- a/mace/ops/softmax_test.cc +++ b/mace/ops/softmax_test.cc @@ -20,7 +20,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") @@ -32,7 +32,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") @@ -71,7 +71,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") @@ -83,7 +83,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_benchmark.cc b/mace/ops/space_to_batch_benchmark.cc index f00409b5497df8ae3acc4ec6c0c1aad5a45532b3..62a4f7ddf5c51dd29266321f5e3ec779ed00edde 100644 --- a/mace/ops/space_to_batch_benchmark.cc +++ b/mace/ops/space_to_batch_benchmark.cc @@ -18,7 +18,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 588483b58f031d85f3aa9a61fd55e3ceaa8f3672..452a9638c14134cfbbb37feb0d7236798d6980a8 100644 --- a/mace/ops/space_to_batch_test.cc +++ b/mace/ops/space_to_batch_test.cc @@ -20,7 +20,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") @@ -32,7 +32,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); @@ -48,7 +48,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") @@ -60,7 +60,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); diff --git a/mace/ops/winograd_convolution_test.cc b/mace/ops/winograd_convolution_test.cc index 6c96f0cc18038fb9b339a601e1c32c042d43cf7d..1f335c6bd9642adc20039f16a1b2158ff97f9cab 100644 --- a/mace/ops/winograd_convolution_test.cc +++ b/mace/ops/winograd_convolution_test.cc @@ -16,8 +16,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) { @@ -27,7 +28,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; } } @@ -49,16 +50,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") @@ -72,7 +73,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")); @@ -81,10 +82,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 @@ -122,7 +123,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); @@ -166,16 +167,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") @@ -189,7 +190,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")); @@ -198,10 +199,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 @@ -239,7 +240,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); diff --git a/mace/ops/winograd_transform_benchmark.cc b/mace/ops/winograd_transform_benchmark.cc index bb20d186efea82ff236b0d7a89a37b0a6b16baa6..bd20ae9f28ac28f664944a735162569d4c0a61d4 100644 --- a/mace/ops/winograd_transform_benchmark.cc +++ b/mace/ops/winograd_transform_benchmark.cc @@ -18,7 +18,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") @@ -65,7 +65,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")