未验证 提交 230fd50f 编写于 作者: P pangyoki 提交者: GitHub

Skip async mode for standalone executor (#45599)

* new exe skip async mode

* open distribution
上级 9bf4c676
...@@ -1552,17 +1552,22 @@ class Executor(object): ...@@ -1552,17 +1552,22 @@ class Executor(object):
UserWarning) UserWarning)
return False return False
compiled = isinstance(program, compiler.CompiledProgram) compiled = isinstance(program,
compiler.CompiledProgram) or isinstance(
program._graph, compiler.CompiledProgram)
if compiled: if compiled:
compiled_program = program if isinstance(
program, compiler.CompiledProgram) else program._graph
# Unsupported case 1 : the CompiledProgram is constructed by Graph # Unsupported case 1 : the CompiledProgram is constructed by Graph
if program._program is None: if compiled_program._program is None:
warnings.warn("Standalone executor is not used for Graph", warnings.warn("Standalone executor is not used for Graph",
UserWarning) UserWarning)
return False return False
# Unsupported case 2: data parallel # Unsupported case 2: data parallel
if program._is_data_parallel and len( if compiled_program._is_data_parallel and len(
program._get_places(place, program._places)) != 1: compiled_program._get_places(
place, compiled_program._places)) != 1:
warnings.warn( warnings.warn(
"Standalone executor is not used for data parallel", "Standalone executor is not used for data parallel",
UserWarning) UserWarning)
...@@ -1578,36 +1583,28 @@ class Executor(object): ...@@ -1578,36 +1583,28 @@ class Executor(object):
return False return False
# Unsupported case 4: inference # Unsupported case 4: inference
if program._is_inference: if compiled_program._is_inference:
warnings.warn( warnings.warn(
"Standalone executor is not used for inference", "Standalone executor is not used for inference",
UserWarning) UserWarning)
return False return False
# Unsupported case 5: CUDA Graph # Unsupported case 5: CUDA Graph
if program._build_strategy is not None and program._build_strategy.allow_cuda_graph_capture: if compiled_program._build_strategy is not None and compiled_program._build_strategy.allow_cuda_graph_capture:
warnings.warn( warnings.warn(
"Standalone executor is not used for CUDA Graph", "Standalone executor is not used for CUDA Graph",
UserWarning) UserWarning)
return False return False
# Unsupported case 6: distributed # Unsupported case 6: async mode
if program._build_strategy is not None and ( if compiled_program._build_strategy is not None and compiled_program._build_strategy.async_mode:
program._build_strategy.is_distribution
or program._build_strategy.num_trainers > 1):
warnings.warn( warnings.warn(
"Standalone executor is not used for distribution", "Standalone executor is not used for async mode",
UserWarning) UserWarning)
return False return False
return use_standalone_executor_for_compiled_program return use_standalone_executor_for_compiled_program
else: else:
if isinstance(
program._graph, compiler.CompiledProgram
) and not use_standalone_executor_for_compiled_program:
warnings.warn("Standalone executor is not used for Graph",
UserWarning)
return False
assert isinstance(program, Program) assert isinstance(program, Program)
return True return True
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册