forked from mindspore-Ecosystem/mindspore
using context variable instead of env variable
This commit is contained in:
parent
eed1c343ef
commit
eb079de210
|
@ -114,9 +114,6 @@ bool ProfilingManager::StartupProfiling(uint32_t device_id) {
|
|||
return true;
|
||||
}
|
||||
device_id_ = device_id;
|
||||
// exp: export PROFILING_MODE=true
|
||||
// export PROFILING_OPTIONS=training_trace
|
||||
const char *prof_options_str = std::getenv("PROFILING_OPTIONS");
|
||||
// register Framework to profiling
|
||||
int result = Msprof::Engine::RegisterEngine("Framework", engine_0_.get());
|
||||
if (result != 0) {
|
||||
|
@ -124,53 +121,51 @@ bool ProfilingManager::StartupProfiling(uint32_t device_id) {
|
|||
return false;
|
||||
}
|
||||
|
||||
if (prof_options_str != nullptr) {
|
||||
const string prof_options_str_tmp = prof_options_str;
|
||||
vector<string> opts = Split(prof_options_str_tmp, ':');
|
||||
if (!opts.empty()) {
|
||||
// current one docker only use one device`
|
||||
Json p_device;
|
||||
|
||||
// JOBID
|
||||
auto job_id = GetJobId();
|
||||
p_device["jobID"] = std::to_string(job_id);
|
||||
|
||||
// device_id
|
||||
p_device["deviceID"] = std::to_string(device_id);
|
||||
|
||||
// features:'training_trace', 'task_trace' etc
|
||||
Json features;
|
||||
for (vector<string>::size_type i = 0; i < opts.size(); i++) {
|
||||
Json f;
|
||||
f["name"] = opts[i];
|
||||
features[i] = f;
|
||||
}
|
||||
p_device["features"] = features;
|
||||
|
||||
// only one device, but sProfMgrStartUp API require for device list
|
||||
Json devices;
|
||||
devices[0] = p_device;
|
||||
|
||||
Json startCfg;
|
||||
startCfg["startCfg"] = devices;
|
||||
|
||||
// convert json to string
|
||||
std::stringstream ss;
|
||||
ss << startCfg;
|
||||
std::string cfg = ss.str();
|
||||
|
||||
MS_LOG(INFO) << "profiling config " << cfg;
|
||||
|
||||
// call profiling startup API
|
||||
ProfMgrCfg prof_cfg = {cfg};
|
||||
prof_handle_ = ProfMgrStartUp(&prof_cfg);
|
||||
if (prof_handle_ == nullptr) {
|
||||
MS_LOG(ERROR) << "Startup profiling failed.";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
auto context = MsContext::GetInstance();
|
||||
MS_EXCEPTION_IF_NULL(context);
|
||||
const string prof_options_str = context->profiling_options();
|
||||
vector<string> opts = Split(prof_options_str, ':');
|
||||
if (opts.empty()) {
|
||||
MS_LOG(WARNING) << "Profiling is enabled, but profiling option is not set!";
|
||||
return true;
|
||||
}
|
||||
|
||||
// current one docker only use one device`
|
||||
Json p_device;
|
||||
// JOBID
|
||||
auto job_id = GetJobId();
|
||||
p_device["jobID"] = std::to_string(job_id);
|
||||
// device_id
|
||||
p_device["deviceID"] = std::to_string(device_id);
|
||||
// features:'training_trace', 'task_trace' etc
|
||||
Json features;
|
||||
for (vector<string>::size_type i = 0; i < opts.size(); i++) {
|
||||
Json f;
|
||||
f["name"] = opts[i];
|
||||
features[i] = f;
|
||||
}
|
||||
p_device["features"] = features;
|
||||
// only one device, but sProfMgrStartUp API require for device list
|
||||
Json devices;
|
||||
devices[0] = p_device;
|
||||
|
||||
Json startCfg;
|
||||
startCfg["startCfg"] = devices;
|
||||
|
||||
// convert json to string
|
||||
std::stringstream ss;
|
||||
ss << startCfg;
|
||||
std::string cfg = ss.str();
|
||||
|
||||
MS_LOG(INFO) << "profiling config " << cfg;
|
||||
|
||||
// call profiling startup API
|
||||
ProfMgrCfg prof_cfg = {cfg};
|
||||
prof_handle_ = ProfMgrStartUp(&prof_cfg);
|
||||
if (prof_handle_ == nullptr) {
|
||||
MS_LOG(ERROR) << "Startup profiling failed.";
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <cstring>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
#include "utils/context/ms_context.h"
|
||||
using std::map;
|
||||
using std::string;
|
||||
|
||||
|
@ -41,8 +42,9 @@ class ProfilingManager {
|
|||
bool StopProfiling() const;
|
||||
|
||||
inline bool IsProfiling() const {
|
||||
const char *is_profiling = std::getenv("PROFILING_MODE");
|
||||
return (is_profiling != nullptr && (strcmp("true", is_profiling) == 0));
|
||||
auto context = MsContext::GetInstance();
|
||||
MS_EXCEPTION_IF_NULL(context);
|
||||
return context->enable_profiling();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
|
Loading…
Reference in New Issue