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

Commit 733e2398 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Add fenced compute path to memory domain validation test." into rvc-dev...

Merge "Add fenced compute path to memory domain validation test." into rvc-dev am: 5380a6e6 am: a45d63d8

Change-Id: Ic80aaab0022808e4295225931146eb93c989c29f
parents 8bce4efe a45d63d8
Loading
Loading
Loading
Loading
+7 −7
Original line number Original line Diff line number Diff line
@@ -78,13 +78,6 @@ enum class MemoryType { SHARED, DEVICE };


enum class IOType { INPUT, OUTPUT };
enum class IOType { INPUT, OUTPUT };


static void waitForSyncFence(int syncFd) {
    constexpr int kInfiniteTimeout = -1;
    ASSERT_GT(syncFd, 0);
    int r = sync_wait(syncFd, kInfiniteTimeout);
    ASSERT_GE(r, 0);
}

struct TestConfig {
struct TestConfig {
    Executor executor;
    Executor executor;
    MeasureTiming measureTiming;
    MeasureTiming measureTiming;
@@ -275,6 +268,13 @@ void copyTestBuffers(const std::vector<const TestBuffer*>& buffers, uint8_t* out


}  // namespace
}  // namespace


void waitForSyncFence(int syncFd) {
    constexpr int kInfiniteTimeout = -1;
    ASSERT_GT(syncFd, 0);
    int r = sync_wait(syncFd, kInfiniteTimeout);
    ASSERT_GE(r, 0);
}

Model createModel(const TestModel& testModel) {
Model createModel(const TestModel& testModel) {
    uint32_t constCopySize = 0;
    uint32_t constCopySize = 0;
    uint32_t constRefSize = 0;
    uint32_t constRefSize = 0;
+2 −0
Original line number Original line Diff line number Diff line
@@ -77,6 +77,8 @@ enum class TestKind {
void EvaluatePreparedModel(const sp<IDevice>& device, const sp<IPreparedModel>& preparedModel,
void EvaluatePreparedModel(const sp<IDevice>& device, const sp<IPreparedModel>& preparedModel,
                           const test_helper::TestModel& testModel, TestKind testKind);
                           const test_helper::TestModel& testModel, TestKind testKind);


void waitForSyncFence(int syncFd);

}  // namespace android::hardware::neuralnetworks::V1_3::vts::functional
}  // namespace android::hardware::neuralnetworks::V1_3::vts::functional


#endif  // ANDROID_HARDWARE_NEURALNETWORKS_V1_3_GENERATED_TEST_HARNESS_H
#endif  // ANDROID_HARDWARE_NEURALNETWORKS_V1_3_GENERATED_TEST_HARNESS_H
+39 −2
Original line number Original line Diff line number Diff line
@@ -864,6 +864,9 @@ class MemoryDomainExecutionTest
            case Executor::SYNC:
            case Executor::SYNC:
                EXPECT_EQ(executeSync(preparedModel, request), expectedStatus);
                EXPECT_EQ(executeSync(preparedModel, request), expectedStatus);
                break;
                break;
            case Executor::FENCED:
                EXPECT_EQ(executeFenced(preparedModel, request), expectedStatus);
                break;
            default:
            default:
                ASSERT_TRUE(false);
                ASSERT_TRUE(false);
        }
        }
@@ -912,7 +915,38 @@ class MemoryDomainExecutionTest
        return executionStatus;
        return executionStatus;
    }
    }


    // TODO(xusongw): Add executeFenced.
    ErrorStatus executeFenced(const sp<IPreparedModel>& preparedModel, const Request& request) {
        ErrorStatus executionStatus;
        hidl_handle syncFenceHandle;
        sp<IFencedExecutionCallback> fencedCallback;
        const auto callbackFunc = [&executionStatus, &syncFenceHandle, &fencedCallback](
                                          ErrorStatus error, const hidl_handle& handle,
                                          const sp<IFencedExecutionCallback>& callback) {
            executionStatus = error;
            syncFenceHandle = handle;
            fencedCallback = callback;
        };
        Return<void> ret = preparedModel->executeFenced(request, {}, MeasureTiming::NO, {}, {}, {},
                                                        callbackFunc);
        EXPECT_TRUE(ret.isOk());
        if (executionStatus != ErrorStatus::NONE) {
            EXPECT_EQ(syncFenceHandle.getNativeHandle(), nullptr);
            EXPECT_EQ(fencedCallback, nullptr);
            return executionStatus;
        }
        if (syncFenceHandle.getNativeHandle()) {
            waitForSyncFence(syncFenceHandle.getNativeHandle()->data[0]);
        }
        EXPECT_NE(fencedCallback, nullptr);
        ret = fencedCallback->getExecutionInfo(
                [&executionStatus](ErrorStatus error, Timing t, Timing) {
                    executionStatus = error;
                    EXPECT_EQ(UINT64_MAX, t.timeOnDevice);
                    EXPECT_EQ(UINT64_MAX, t.timeInDriver);
                });
        EXPECT_TRUE(ret.isOk());
        return executionStatus;
    }


    const Executor kExecutor = std::get<Executor>(GetParam());
    const Executor kExecutor = std::get<Executor>(GetParam());
};
};
@@ -1111,6 +1145,9 @@ TEST_P(MemoryDomainExecutionTest, SameRequestMultipleRoles) {
}
}


TEST_P(MemoryDomainExecutionTest, InvalidDimensions) {
TEST_P(MemoryDomainExecutionTest, InvalidDimensions) {
    // FENCED execution does not support dynamic shape.
    if (kExecutor == Executor::FENCED) return;

    TestOperand testOperand = kTestOperand;
    TestOperand testOperand = kTestOperand;
    testOperand.dimensions[0] = 0;
    testOperand.dimensions[0] = 0;
    auto preparedModel = createConvPreparedModel(testOperand);
    auto preparedModel = createConvPreparedModel(testOperand);
@@ -1148,7 +1185,7 @@ TEST_P(MemoryDomainExecutionTest, InvalidDimensions) {
                  ErrorStatus::GENERAL_FAILURE);
                  ErrorStatus::GENERAL_FAILURE);
}
}


const auto kExecutorChoices = testing::Values(Executor::ASYNC, Executor::SYNC);
const auto kExecutorChoices = testing::Values(Executor::ASYNC, Executor::SYNC, Executor::FENCED);


std::string printMemoryDomainExecutionTest(
std::string printMemoryDomainExecutionTest(
        const testing::TestParamInfo<MemoryDomainExecutionTestParam>& info) {
        const testing::TestParamInfo<MemoryDomainExecutionTestParam>& info) {