forked from mindspore-Ecosystem/mindspore
125 lines
3.7 KiB
C++
125 lines
3.7 KiB
C++
/**
|
|
* Copyright 2019 Huawei Technologies Co., Ltd
|
|
*
|
|
* 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.
|
|
*/
|
|
#include <iostream>
|
|
#include <memory>
|
|
|
|
#include "./prof_reporter.h"
|
|
#include "common/common_test.h"
|
|
#include "runtime/device/ascend/profiling/profiling_manager.h"
|
|
#define private public
|
|
#include "runtime/device/ascend/profiling/plugin_impl.h"
|
|
#undef private
|
|
#include "runtime/device/ascend/profiling/profiling_engine_impl.h"
|
|
|
|
namespace mindspore {
|
|
namespace device {
|
|
namespace ascend {
|
|
class stubReporter : public Reporter {
|
|
public:
|
|
stubReporter() = default;
|
|
~stubReporter() = default;
|
|
|
|
int Report(const Msprof::Engine::ReporterData *data) override;
|
|
int Flush() override;
|
|
};
|
|
|
|
int stubReporter::Report(const Msprof::Engine::ReporterData *data) { return 0; }
|
|
|
|
int stubReporter::Flush() { return 0; }
|
|
|
|
class TestAscendProfiling : public UT::Common {
|
|
public:
|
|
TestAscendProfiling() {}
|
|
};
|
|
|
|
TEST_F(TestAscendProfiling, test_profiling_GetJobId) {
|
|
auto job_id = ProfilingManager::GetInstance().GetJobId();
|
|
printf("get job_id:%ld\n", job_id);
|
|
}
|
|
|
|
int test_profiling_start() {
|
|
(void)setenv("PROFILING_MODE", "true", 1);
|
|
(void)setenv("PROFILING_OPTIONS", "training_trace:task_trace", 1);
|
|
auto ret = ProfilingManager::GetInstance().StartupProfiling(0);
|
|
(void)unsetenv("PROFILING_MODE");
|
|
(void)unsetenv("PROFILING_OPTIONS");
|
|
return ret;
|
|
}
|
|
|
|
TEST_F(TestAscendProfiling, test_profiling_start) {
|
|
auto ret = test_profiling_start();
|
|
ASSERT_EQ(ret, true);
|
|
}
|
|
|
|
int test_profiling_stop() {
|
|
(void)setenv("PROFILING_MODE", "true", 1);
|
|
auto engine = std::make_shared<ProfilingEngineImpl>();
|
|
auto report = std::make_shared<stubReporter>();
|
|
auto plug = engine->CreatePlugin();
|
|
plug->Init(report.get());
|
|
auto ret = ProfilingManager::GetInstance().StopProfiling();
|
|
plug->UnInit();
|
|
engine->ReleasePlugin(plug);
|
|
(void)unsetenv("PROFILING_OPTIONS");
|
|
return ret;
|
|
}
|
|
|
|
TEST_F(TestAscendProfiling, test_profiling_stop) {
|
|
auto ret = test_profiling_stop();
|
|
ASSERT_EQ(ret, true);
|
|
}
|
|
|
|
int test_profiling_rpt() {
|
|
(void)setenv("PROFILING_MODE", "true", 1);
|
|
std::map<uint32_t, std::string> op_taskId_map;
|
|
op_taskId_map[1] = "add";
|
|
op_taskId_map[2] = "mul";
|
|
auto engine = std::make_shared<ProfilingEngineImpl>();
|
|
auto report = std::make_shared<stubReporter>();
|
|
auto plug = engine->CreatePlugin();
|
|
plug->Init(report.get());
|
|
ProfilingManager::GetInstance().ReportProfilingData(op_taskId_map);
|
|
plug->UnInit();
|
|
engine->ReleasePlugin(plug);
|
|
(void)unsetenv("PROFILING_OPTIONS");
|
|
return 0;
|
|
}
|
|
|
|
TEST_F(TestAscendProfiling, test_profiling_rpt) {
|
|
auto ret = test_profiling_rpt();
|
|
ASSERT_EQ(ret, false);
|
|
}
|
|
|
|
int test_profiling_rpt_abnormal() {
|
|
std::map<uint32_t, std::string> op_taskId_map;
|
|
ProfilingManager::GetInstance().ReportProfilingData(op_taskId_map);
|
|
(void)setenv("PROFILING_MODE", "true", 1);
|
|
ProfilingManager::GetInstance().ReportProfilingData(op_taskId_map);
|
|
op_taskId_map[1] = "add";
|
|
op_taskId_map[2] = "mul";
|
|
ProfilingManager::GetInstance().ReportProfilingData(op_taskId_map);
|
|
(void)unsetenv("PROFILING_OPTIONS");
|
|
return 0;
|
|
}
|
|
|
|
TEST_F(TestAscendProfiling, test_profiling_rpt_abnormal) {
|
|
auto ret = test_profiling_rpt_abnormal();
|
|
ASSERT_EQ(ret, false);
|
|
}
|
|
} // namespace ascend
|
|
} // namespace device
|
|
} // namespace mindspore
|