Skip to content

Commit 4ac91ef

Browse files
committed
Simplify tests
1 parent 352db1b commit 4ac91ef

File tree

3 files changed

+28
-52
lines changed

3 files changed

+28
-52
lines changed

test/source/tflite_from_buffer_test.cpp

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,60 +16,50 @@
1616
TEST_CASE("Tflite from buffer default runtime (CPU)", "[tflite][buffer][cpu]") {
1717
const std::string modelPath = "models/tflite/mobilenet_v3_small.tflite";
1818
std::ifstream file(modelPath, std::ios::binary);
19-
2019
std::vector<uint8_t> modelBuffer((std::istreambuf_iterator<char>(file)),
2120
std::istreambuf_iterator<char>());
22-
auto model = edge::createModel(modelBuffer, "tflite");
2321

22+
auto model = edge::createModel(modelBuffer, "tflite");
2423
REQUIRE(model != nullptr);
25-
2624
REQUIRE(model->getDelegate() == edge::DELEGATE::CPU);
2725

26+
const auto inputs = model->getInputs();
2827
const auto numInputs = model->getNumInputs();
29-
3028
REQUIRE(numInputs == 1);
29+
REQUIRE(numInputs == inputs.size());
3130

31+
const auto outputs = model->getOutputs();
3232
const auto numOutputs = model->getNumOutputs();
33-
3433
REQUIRE(numOutputs == 1);
34+
REQUIRE(numOutputs == outputs.size());
3535

3636
auto input = model->getInput(0);
37-
3837
REQUIRE(input->getName() == "image_tensor");
39-
4038
REQUIRE(input->getDimensions() == std::vector<size_t> {1, 224, 224, 3});
41-
4239
REQUIRE(input->getType() == edge::TensorType::FLOAT32);
40+
REQUIRE(input.get() == inputs[0].get());
4341

4442
auto inputData = input->getTensorAs<float>();
45-
4643
REQUIRE(inputData.size() == input->getSize());
4744

4845
auto output = model->getOutput(0);
49-
5046
REQUIRE(output->getName() == "output_0");
51-
5247
REQUIRE(output->getDimensions() == std::vector<size_t> {1, 1000});
53-
5448
REQUIRE(output->getType() == edge::TensorType::FLOAT32);
49+
REQUIRE(output.get() == outputs[0].get());
5550

56-
auto outputData = output->getTensorAs<float>();
57-
58-
REQUIRE(outputData.size() == output->getSize());
51+
auto outputBuffer = output->getTensorAs<float>();
52+
REQUIRE(outputBuffer.size() == output->getSize());
5953

6054
const auto executionStatus = model->execute();
61-
6255
REQUIRE(executionStatus == edge::STATUS::SUCCESS);
6356

6457
BENCHMARK("execution") {
6558
return model->execute();
6659
};
6760

6861
/* verify output buffer is persistent across execution */
69-
const auto outputDataAfter = model->getOutput(0)->getTensorAs<float>();
70-
71-
const auto outputMse = meanSquaredError(outputData, outputDataAfter);
72-
73-
CAPTURE(outputMse);
74-
REQUIRE(outputMse < std::numeric_limits<float>::epsilon());
62+
const auto newOutputBuffer = model->getOutput(0)->getTensorAs<float>();
63+
REQUIRE(outputBuffer.data() == newOutputBuffer.data());
64+
REQUIRE(outputBuffer.size() == newOutputBuffer.size());
7565
}

test/source/tflite_gpu_test.cpp

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,20 @@
1414

1515
TEST_CASE("Tflite GPU runtime", "[tflite][gpu]") {
1616
const std::string modelPath = "models/tflite/mobilenet_v3_small.tflite";
17-
auto model = edge::createModel(modelPath);
1817

18+
auto model = edge::createModel(modelPath);
1919
REQUIRE(model != nullptr);
20-
2120
REQUIRE(std::string {"mobilenet_v3_small"} == model->name());
22-
2321
REQUIRE(model->getDelegate() == edge::DELEGATE::CPU);
2422

23+
/* ensure CPU and GPU inference have the same inputs */
2524
auto cpuInputData = model->getInput(0)->getTensorAs<float>();
2625
for (auto& cpuInputDatum : cpuInputData) {
2726
cpuInputDatum = 0;
2827
}
2928

30-
model->execute();
29+
auto executionStatus = model->execute();
30+
CHECK(executionStatus == edge::STATUS::SUCCESS);
3131

3232
const auto cpuOutput = model->getOutput(0)->getTensorAs<float>();
3333

@@ -39,57 +39,44 @@ TEST_CASE("Tflite GPU runtime", "[tflite][gpu]") {
3939
cpuOutput.cbegin(), cpuOutput.cend(), std::back_inserter(cpuResult));
4040

4141
const auto delegateStatus = model->applyDelegate(edge::DELEGATE::GPU);
42-
4342
REQUIRE(delegateStatus == edge::STATUS::SUCCESS);
44-
4543
REQUIRE(model->getDelegate() == edge::DELEGATE::GPU);
4644

4745
const auto numInputs = model->getNumInputs();
48-
4946
REQUIRE(numInputs == 1);
5047

5148
const auto numOutputs = model->getNumOutputs();
52-
5349
REQUIRE(numOutputs == 1);
5450

5551
auto input = model->getInput(0);
56-
5752
REQUIRE(input->getName() == "image_tensor");
58-
5953
REQUIRE(input->getDimensions() == std::vector<size_t> {1, 224, 224, 3});
60-
6154
REQUIRE(input->getType() == edge::TensorType::FLOAT32);
6255

6356
auto inputData = input->getTensorAs<float>();
64-
6557
REQUIRE(inputData.size() == input->getSize());
6658

59+
/* ensure CPU and GPU inference have the same inputs */
6760
for (auto& inputDatum : inputData) {
6861
inputDatum = 0;
6962
}
7063

71-
const auto executionStatus = model->execute();
72-
64+
executionStatus = model->execute();
7365
REQUIRE(executionStatus == edge::STATUS::SUCCESS);
7466

75-
auto output = model->getOutput(0);
67+
BENCHMARK("execution") {
68+
return model->execute();
69+
};
7670

71+
auto output = model->getOutput(0);
7772
REQUIRE(output->getName() == "output_0");
78-
7973
REQUIRE(output->getDimensions() == std::vector<size_t> {1, 1000});
80-
8174
REQUIRE(output->getType() == edge::TensorType::FLOAT32);
8275

8376
auto outputData = output->getTensorAs<float>();
84-
8577
REQUIRE(outputData.size() == output->getSize());
8678

8779
const auto mse = meanSquaredError(cpuResult, outputData);
88-
8980
CAPTURE(mse);
9081
REQUIRE(mse < mseThreshold);
91-
92-
BENCHMARK("execution") {
93-
return model->execute();
94-
};
9582
}

test/source/tflite_test.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#include <cstddef>
2-
#include <limits>
32
#include <string>
43
#include <vector>
54

@@ -14,6 +13,7 @@
1413

1514
TEST_CASE("Tflite default runtime (CPU)", "[tflite][cpu]") {
1615
const std::string modelPath = "models/tflite/mobilenet_v3_small.tflite";
16+
1717
auto model = edge::createModel(modelPath);
1818
REQUIRE(model != nullptr);
1919
REQUIRE(std::string {"mobilenet_v3_small"} == model->name());
@@ -44,8 +44,8 @@ TEST_CASE("Tflite default runtime (CPU)", "[tflite][cpu]") {
4444
REQUIRE(output->getType() == edge::TensorType::FLOAT32);
4545
REQUIRE(output.get() == outputs[0].get());
4646

47-
auto outputData = output->getTensorAs<float>();
48-
REQUIRE(outputData.size() == output->getSize());
47+
auto outputBuffer = output->getTensorAs<float>();
48+
REQUIRE(outputBuffer.size() == output->getSize());
4949

5050
const auto executionStatus = model->execute();
5151
REQUIRE(executionStatus == edge::STATUS::SUCCESS);
@@ -55,8 +55,7 @@ TEST_CASE("Tflite default runtime (CPU)", "[tflite][cpu]") {
5555
};
5656

5757
/* verify output buffer is persistent across execution */
58-
const auto outputDataAfter = model->getOutput(0)->getTensorAs<float>();
59-
const auto outputMse = meanSquaredError(outputData, outputDataAfter);
60-
CAPTURE(outputMse);
61-
REQUIRE(outputMse < std::numeric_limits<float>::epsilon());
58+
const auto newOutputBuffer = model->getOutput(0)->getTensorAs<float>();
59+
REQUIRE(outputBuffer.data() == newOutputBuffer.data());
60+
REQUIRE(outputBuffer.size() == newOutputBuffer.size());
6261
}

0 commit comments

Comments
 (0)