Browse Source

!7908 add reduce precision in pynative mode

Merge pull request !7908 from chujinjin/add_reduce_precision_in_pynative_mode
tags/v1.1.0
mindspore-ci-bot Gitee 5 years ago
parent
commit
c6246d7a7e
3 changed files with 13 additions and 5 deletions
  1. +10
    -0
      mindspore/ccsrc/backend/session/gpu_session.cc
  2. +2
    -0
      mindspore/ccsrc/backend/session/gpu_session.h
  3. +1
    -5
      mindspore/ccsrc/runtime/device/gpu/kernel_info_setter.cc

+ 10
- 0
mindspore/ccsrc/backend/session/gpu_session.cc View File

@@ -141,6 +141,15 @@ void GPUSession::HardwareOptimize(const std::shared_ptr<KernelGraph> &kernel_gra
kernel_graph->SetExecOrderByDefault();
}

void GPUSession::RunOpHardwareOptimize(const std::shared_ptr<KernelGraph> &kernel_graph) {
auto optimizer = std::make_shared<opt::GraphOptimizer>();
auto pm = std::make_shared<opt::PassManager>();
pm->AddPass(std::make_shared<opt::ReducePrecisionFusion>("reduce_precision"));
optimizer->AddPassManager(pm);
(void)optimizer->Optimize(kernel_graph);
kernel_graph->SetExecOrderByDefault();
}

void GPUSession::GraphKernelOptimize(const std::shared_ptr<KernelGraph> &kernel_graph) {
auto context_ptr = MsContext::GetInstance();
MS_EXCEPTION_IF_NULL(context_ptr);
@@ -350,6 +359,7 @@ void GPUSession::BuildOpImpl(const OpRunInfo &op_run_info, const GraphInfo &grap
auto kernel_graph = ConstructSingleOpGraph(op_run_info, input_tensors, tensors_mask);
MS_EXCEPTION_IF_NULL(kernel_graph);
SelectKernel(kernel_graph);
RunOpHardwareOptimize(kernel_graph);
StartKernelRT();
// Hide NopOp from execution graph
opt::HideNopNode(kernel_graph.get());


+ 2
- 0
mindspore/ccsrc/backend/session/gpu_session.h View File

@@ -50,6 +50,8 @@ class GPUSession : public SessionBasic {

void HardwareOptimize(const std::shared_ptr<KernelGraph> &kernel_graph);

void RunOpHardwareOptimize(const std::shared_ptr<KernelGraph> &kernel_graph);

void GraphKernelOptimize(const std::shared_ptr<KernelGraph> &kernel_graph);

void AssignStream(const std::shared_ptr<KernelGraph> &kernel_graph);


+ 1
- 5
mindspore/ccsrc/runtime/device/gpu/kernel_info_setter.cc View File

@@ -395,11 +395,7 @@ void SetKernelInfo(const CNodePtr &kernel_node, KernelType kernel_type) {
result =
kernel::GpuKernelFactory::GetInstance().SearchRegistered(AnfAlgo::GetCNodeName(kernel_node), builder->Build());
if (!result) {
auto ms_context = MsContext::GetInstance();
MS_EXCEPTION_IF_NULL(ms_context);
if (ms_context->get_param<int>(MS_CTX_EXECUTION_MODE) == kGraphMode) {
result = kernel::GpuKernelFactory::GetInstance().ReducePrecision(AnfAlgo::GetCNodeName(kernel_node), builder);
}
result = kernel::GpuKernelFactory::GetInstance().ReducePrecision(AnfAlgo::GetCNodeName(kernel_node), builder);
}
if (!result) {
result = SelectAkgKernel(kernel_node, builder->Build());


Loading…
Cancel
Save