Skip to content

Compile time - runtime separation / single node multiple GPU milestones #6359

Closed
@helinwang

Description

@helinwang
  1. Attributes use Attr proto message only (any C++ trick to make changing to it easier?):
    The current attribute items can't be serialized, we can't use ProgramDesc for executor unless we change this.

    $ cd paddle/paddle
    
    # brew install ack, or use ack-grep on linux
    $ ack 'Attr<' |sed 's/Attr</|/' |awk -F'|' '{print $2}'|sed 's/>(/|/' |awk -F'|' '{print $1}'|sort|uniq
    AttrType
    T
    bool
    float
    framework::BlockDescBind *
    int
    int32_t
    size_t
    std::string
    std::vector<int>
    std::vector<std::string>
    # not a single OpDesc::Attr
    
  2. C++ Executor take ProgramDesc

    Eventually we will change to ExecutionPlan, ProgramDesc is similar to ExecutionPlan (both can be serialized), but ProgramDescBind is too different from ExecutionPlan. If we develop multiple thread executor based on ProgramDescBind, there are too much to change later.

  3. ExecutionPlan design doc (Add ExecutionPlan design. #6078)

  4. change C++ Executor to take ExecutionPlan

  5. Multiple thread executor design doc

  6. C++ multiple thread Executor

  7. simple C++ planner

    Just place everything on CPU / GPU-0

  8. Modular Python Executor

    current code:

    # pseudo code
    # implement local Python executor first, remote Python executor later.
    def run(program):
      plan = planner.plan(program, local_devices)
      fetch_vars = cpp_executor.run(plan, g_scope)
      return fetch_vars
  9. single node multiple GPU planner

Dependency

screen shot 2017-12-06 at 5 00 24 pm

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions