• CompiledProgram

    CompiledProgram

    CompiledProgram 用于把程序转化为不同的优化组合。例如,你可以使用with_data_parallel将程序转化为数据并行程序,使其能够运行在多个设备上。

    1. # 注释:
    2. # - 如果你想在ParallelExecutor中指定用于运行的GPU卡,需要在环境中定义
    3. # CUDA_VISIBLE_DEVICES
    4. # - 如果你想在ParallelExecutor中使用多CPU来运行程序,需要在环境中定义
    5. # CPU_NUM
    6.  
    7. # 首先创建Executor。
    8. place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
    9. exe = fluid.Executor(place)
    10. # 运行启动程序仅一次。
    11. exe.run(fluid.default_startup_program())
    12.  
    13. # 直接运行主程序,无需编译。
    14. loss = exe.run(fluid.default_main_program(),
    15. feed=feed_dict,
    16. fetch_list=[loss.name])
    17.  
    18. # 或者编译程序后用数据并行方式运行模型。
    19. exec_strategy = fluid.ExecutionStrategy()
    20. exec_strategy.num_threads = dev_count * 4 # the size of thread pool.
    21. build_strategy = fluid.BuildStrategy()
    22. build_strategy.memory_optimize = True if memory_opt else False
    23. compiled_prog = compiler.CompiledProgram(
    24. fluid.default_main_program()).with_data_parallel(
    25. loss_name=loss.name,
    26. build_strategy=build_strategy,
    27. exec_strategy=exec_strategy)
    28. loss, = exe.run(compiled_prog,
    29. feed=feed_dict,
    30. fetch_list=[loss.name])
    • 相关API :
    • CompiledProgram