/** * \file dnn/test/cpu/fixture.h * MegEngine is Licensed under the Apache License, Version 2.0 (the "License") * * Copyright (c) 2014-2021 Megvii Inc. All rights reserved. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ #pragma once #include #include "megdnn/handle.h" #include "test/common/utils.h" #include namespace megdnn { namespace test { class CPU : public ::testing::Test { public: void SetUp() override; void TearDown() override; Handle* handle() { return m_handle.get(); } protected: std::unique_ptr m_handle; }; class CPU_MULTI_THREADS : public ::testing::Test { public: void SetUp() override; void TearDown() override; Handle* handle() { return m_handle.get(); } protected: std::unique_ptr m_handle; }; class CPU_BENCHMARK_MULTI_THREADS : public ::testing::Test { Handle* handle() { if (!m_handle) { m_handle = create_cpu_handle(0, true, &m_thread_config); } return m_handle.get(); } void set_thread_config(TaskExecutorConfig&& thread_config) { set_thread_config(thread_config); } void set_thread_config(TaskExecutorConfig& thread_config) { m_thread_config = thread_config; m_handle.reset(create_cpu_handle(0, true, &m_thread_config).get()); } TaskExecutorConfig get_thread_config() { return m_thread_config; } protected: TaskExecutorConfig m_thread_config; std::unique_ptr m_handle; }; } // namespace test } // namespace megdnn // vim: syntax=cpp.doxygen