From 7366fcf76112596399c051caaab8b95b930d2692 Mon Sep 17 00:00:00 2001 From: caifubi Date: Sat, 26 Dec 2020 11:00:42 +0800 Subject: [PATCH] Add PyNative parallel context checker --- mindspore/ccsrc/pipeline/pynative/pynative_execute.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mindspore/ccsrc/pipeline/pynative/pynative_execute.cc b/mindspore/ccsrc/pipeline/pynative/pynative_execute.cc index b9499a0378..c5da2a1202 100644 --- a/mindspore/ccsrc/pipeline/pynative/pynative_execute.cc +++ b/mindspore/ccsrc/pipeline/pynative/pynative_execute.cc @@ -54,6 +54,7 @@ #include "pipeline/jit/resource.h" #include "pipeline/jit/pipeline.h" #include "pipeline/jit/pass.h" +#include "frontend/parallel/context.h" #ifdef ENABLE_GE #include "pipeline/pynative/pynative_execute_ge.h" @@ -523,7 +524,17 @@ PynativeExecutor::~PynativeExecutor() { ClearRes(); } +void CheckPyNativeContext() { + auto context = parallel::ParallelContext::GetInstance(); + MS_EXCEPTION_IF_NULL(context); + auto parallel_mode = context->parallel_mode(); + if (parallel_mode != parallel::STAND_ALONE && parallel_mode != parallel::DATA_PARALLEL) { + MS_LOG(EXCEPTION) << "PyNative Only support STAND_ALONE and DATA_PARALLEL, but got:" << parallel_mode; + } +} + py::object RunOp(const py::args &args) { + CheckPyNativeContext(); auto executor = PynativeExecutor::GetInstance(); MS_EXCEPTION_IF_NULL(executor); OpExecInfoPtr op_exec_info = executor->GenerateOpExecInfo(args);