Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b5fe58b9 authored by Michael K. Sanders's avatar Michael K. Sanders
Browse files

Autogenerates VTS ValidationTest tests.

This removes the use of a separately updated list of models
that has fallen out of sync.

Bug: 119293899
Test: VtsHalNeuralnetworksV1_2TargetTest --hal_service_instance=android.hardware.neuralnetworks@1.2::IDevice/sample-all
Test: VtsHalNeuralnetworksV1_2CompatV1_1TargetTest --hal_service_instance=android.hardware.neuralnetworks@1.2::IDevice/sample-all
Test: VtsHalNeuralnetworksV1_2CompatV1_0TargetTest --hal_service_instance=android.hardware.neuralnetworks@1.2::IDevice/sample-all
Test: VtsHalNeuralnetworksV1_1TargetTest --hal_service_instance=android.hardware.neuralnetworks@1.1::IDevice/sample-all
Test: VtsHalNeuralnetworksV1_1CompatV1_0TargetTest --hal_service_instance=android.hardware.neuralnetworks@1.1::IDevice/sample-all
Test: VtsHalNeuralnetworksV1_0TargetTest --hal_service_instance=android.hardware.neuralnetworks@1.0::IDevice/sample-all

Change-Id: I2d8804d78331b8fceab4c622c871802aa0f0a4b4
parent 0fb3892c
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -80,6 +80,5 @@ cc_test {
    srcs: [
        "BasicTests.cpp",
        "GeneratedTests.cpp",
        "ValidationTests.cpp",
    ],
}
+2 −0
Original line number Diff line number Diff line
@@ -45,6 +45,8 @@ using ::android::hardware::neuralnetworks::V1_0::implementation::PreparedModelCa
using ::android::nn::allocateSharedMemory;
using ::test_helper::MixedTypedExample;

std::vector<Request> createRequests(const std::vector<MixedTypedExample>& examples);

// in frameworks/ml/nn/runtime/tests/generated/
#include "all_generated_V1_0_vts_tests.cpp"

+0 −200
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef VTS_HAL_NEURALNETWORKS_V1_0_VTS_FUNCTIONAL_MODELS_H
#define VTS_HAL_NEURALNETWORKS_V1_0_VTS_FUNCTIONAL_MODELS_H

#define LOG_TAG "neuralnetworks_hidl_hal_test"

#include "TestHarness.h"

#include <android/hardware/neuralnetworks/1.0/types.h>

namespace android {
namespace hardware {
namespace neuralnetworks {
namespace V1_0 {
namespace vts {
namespace functional {

using MixedTypedExample = test_helper::MixedTypedExample;

#define FOR_EACH_TEST_MODEL(FN)                          \
    FN(add_broadcast_quant8)                             \
    FN(add)                                              \
    FN(add_quant8)                                       \
    FN(avg_pool_float_1)                                 \
    FN(avg_pool_float_2)                                 \
    FN(avg_pool_float_3)                                 \
    FN(avg_pool_float_4)                                 \
    FN(avg_pool_float_5)                                 \
    FN(avg_pool_quant8_1)                                \
    FN(avg_pool_quant8_2)                                \
    FN(avg_pool_quant8_3)                                \
    FN(avg_pool_quant8_4)                                \
    FN(avg_pool_quant8_5)                                \
    FN(concat_float_1)                                   \
    FN(concat_float_2)                                   \
    FN(concat_float_3)                                   \
    FN(concat_quant8_1)                                  \
    FN(concat_quant8_2)                                  \
    FN(concat_quant8_3)                                  \
    FN(conv_1_h3_w2_SAME)                                \
    FN(conv_1_h3_w2_VALID)                               \
    FN(conv_3_h3_w2_SAME)                                \
    FN(conv_3_h3_w2_VALID)                               \
    FN(conv_float_2)                                     \
    FN(conv_float_channels)                              \
    FN(conv_float_channels_weights_as_inputs)            \
    FN(conv_float_large)                                 \
    FN(conv_float_large_weights_as_inputs)               \
    FN(conv_float)                                       \
    FN(conv_float_weights_as_inputs)                     \
    FN(conv_quant8_2)                                    \
    FN(conv_quant8_channels)                             \
    FN(conv_quant8_channels_weights_as_inputs)           \
    FN(conv_quant8_large)                                \
    FN(conv_quant8_large_weights_as_inputs)              \
    FN(conv_quant8)                                      \
    FN(conv_quant8_overflow)                             \
    FN(conv_quant8_overflow_weights_as_inputs)           \
    FN(conv_quant8_weights_as_inputs)                    \
    FN(depth_to_space_float_1)                           \
    FN(depth_to_space_float_2)                           \
    FN(depth_to_space_float_3)                           \
    FN(depth_to_space_quant8_1)                          \
    FN(depth_to_space_quant8_2)                          \
    FN(depthwise_conv2d_float_2)                         \
    FN(depthwise_conv2d_float_large_2)                   \
    FN(depthwise_conv2d_float_large_2_weights_as_inputs) \
    FN(depthwise_conv2d_float_large)                     \
    FN(depthwise_conv2d_float_large_weights_as_inputs)   \
    FN(depthwise_conv2d_float)                           \
    FN(depthwise_conv2d_float_weights_as_inputs)         \
    FN(depthwise_conv2d_quant8_2)                        \
    FN(depthwise_conv2d_quant8_large)                    \
    FN(depthwise_conv2d_quant8_large_weights_as_inputs)  \
    FN(depthwise_conv2d_quant8)                          \
    FN(depthwise_conv2d_quant8_weights_as_inputs)        \
    FN(depthwise_conv)                                   \
    FN(dequantize)                                       \
    FN(embedding_lookup)                                 \
    FN(floor)                                            \
    FN(fully_connected_float_2)                          \
    FN(fully_connected_float_large)                      \
    FN(fully_connected_float_large_weights_as_inputs)    \
    FN(fully_connected_float)                            \
    FN(fully_connected_float_weights_as_inputs)          \
    FN(fully_connected_quant8_2)                         \
    FN(fully_connected_quant8_large)                     \
    FN(fully_connected_quant8_large_weights_as_inputs)   \
    FN(fully_connected_quant8)                           \
    FN(fully_connected_quant8_weights_as_inputs)         \
    FN(hashtable_lookup_float)                           \
    FN(hashtable_lookup_quant8)                          \
    FN(l2_normalization_2)                               \
    FN(l2_normalization_large)                           \
    FN(l2_normalization)                                 \
    FN(l2_pool_float_2)                                  \
    FN(l2_pool_float_large)                              \
    FN(l2_pool_float)                                    \
    FN(local_response_norm_float_1)                      \
    FN(local_response_norm_float_2)                      \
    FN(local_response_norm_float_3)                      \
    FN(local_response_norm_float_4)                      \
    FN(logistic_float_1)                                 \
    FN(logistic_float_2)                                 \
    FN(logistic_quant8_1)                                \
    FN(logistic_quant8_2)                                \
    FN(lsh_projection_2)                                 \
    FN(lsh_projection)                                   \
    FN(lsh_projection_weights_as_inputs)                 \
    FN(lstm2)                                            \
    FN(lstm2_state2)                                     \
    FN(lstm2_state)                                      \
    FN(lstm3)                                            \
    FN(lstm3_state2)                                     \
    FN(lstm3_state3)                                     \
    FN(lstm3_state)                                      \
    FN(lstm)                                             \
    FN(lstm_state2)                                      \
    FN(lstm_state)                                       \
    FN(max_pool_float_1)                                 \
    FN(max_pool_float_2)                                 \
    FN(max_pool_float_3)                                 \
    FN(max_pool_float_4)                                 \
    FN(max_pool_quant8_1)                                \
    FN(max_pool_quant8_2)                                \
    FN(max_pool_quant8_3)                                \
    FN(max_pool_quant8_4)                                \
    FN(mobilenet_224_gender_basic_fixed)                 \
    FN(mobilenet_quantized)                              \
    FN(mul_broadcast_quant8)                             \
    FN(mul)                                              \
    FN(mul_quant8)                                       \
    FN(mul_relu)                                         \
    FN(relu1_float_1)                                    \
    FN(relu1_float_2)                                    \
    FN(relu1_quant8_1)                                   \
    FN(relu1_quant8_2)                                   \
    FN(relu6_float_1)                                    \
    FN(relu6_float_2)                                    \
    FN(relu6_quant8_1)                                   \
    FN(relu6_quant8_2)                                   \
    FN(relu_float_1)                                     \
    FN(relu_float_2)                                     \
    FN(relu_quant8_1)                                    \
    FN(relu_quant8_2)                                    \
    FN(reshape)                                          \
    FN(reshape_quant8)                                   \
    FN(reshape_quant8_weights_as_inputs)                 \
    FN(reshape_weights_as_inputs)                        \
    FN(resize_bilinear_2)                                \
    FN(resize_bilinear)                                  \
    FN(rnn)                                              \
    FN(rnn_state)                                        \
    FN(softmax_float_1)                                  \
    FN(softmax_float_2)                                  \
    FN(softmax_quant8_1)                                 \
    FN(softmax_quant8_2)                                 \
    FN(space_to_depth_float_1)                           \
    FN(space_to_depth_float_2)                           \
    FN(space_to_depth_float_3)                           \
    FN(space_to_depth_quant8_1)                          \
    FN(space_to_depth_quant8_2)                          \
    FN(svdf2)                                            \
    FN(svdf)                                             \
    FN(svdf_state)                                       \
    FN(tanh)

#define FORWARD_DECLARE_GENERATED_OBJECTS(function) \
    namespace function {                            \
    extern std::vector<MixedTypedExample> examples; \
    Model createTestModel();                        \
    }

FOR_EACH_TEST_MODEL(FORWARD_DECLARE_GENERATED_OBJECTS)

#undef FORWARD_DECLARE_GENERATED_OBJECTS

}  // namespace functional
}  // namespace vts
}  // namespace V1_0
}  // namespace neuralnetworks
}  // namespace hardware
}  // namespace android

#endif  // VTS_HAL_NEURALNETWORKS_V1_0_VTS_FUNCTIONAL_MODELS_H
+0 −50
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#define LOG_TAG "neuralnetworks_hidl_hal_test"

#include "Models.h"
#include "VtsHalNeuralnetworks.h"

namespace android {
namespace hardware {
namespace neuralnetworks {
namespace V1_0 {
namespace vts {
namespace functional {

// forward declarations
std::vector<Request> createRequests(const std::vector<::test_helper::MixedTypedExample>& examples);

// generate validation tests
#define VTS_CURRENT_TEST_CASE(TestName)                                           \
    TEST_F(ValidationTest, TestName) {                                            \
        const Model model = TestName::createTestModel();                          \
        const std::vector<Request> requests = createRequests(TestName::examples); \
        validateModel(model);                                                     \
        validateRequests(model, requests);                                        \
    }

FOR_EACH_TEST_MODEL(VTS_CURRENT_TEST_CASE)

#undef VTS_CURRENT_TEST_CASE

}  // namespace functional
}  // namespace vts
}  // namespace V1_0
}  // namespace neuralnetworks
}  // namespace hardware
}  // namespace android
+0 −2
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ cc_test {
    defaults: ["VtsHalNeuralNetworksTargetTestDefaults"],
    srcs: [
        "GeneratedTestsV1_0.cpp",
        "ValidationTestsV1_0.cpp",
    ],
}

@@ -31,6 +30,5 @@ cc_test {
    srcs: [
        "BasicTests.cpp",
        "GeneratedTests.cpp",
        "ValidationTests.cpp",
    ],
}
Loading