PaddlePaddle Notes

单机训练和多机训练

use_cuda = True
place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
exe = fluid.Executor(place)
fluid.CUDAPlace

多卡训练:

使用 fluid.compiler.CompiledProgram 来编译 fluid.Program ,然后调用 with_data_parallel 

train_program = fluid.Program()
if not use_cuda:
    os.environ['CPU_NUM'] = str(2)

compiled_prog = compiler.CompiledProgram(
    train_program).with_data_parallel(
    loss_name=loss.name)
loss_data, = exe.run(compiled_prog,
                     feed={"X": x},
                     fetch_list=[loss.name])

CompiledProgram 会将传入的 fluid.Program 转为计算图,即Graph,因为 compiled_prog 与传入的 train_program 是完全不同的对象,目前还不能够对 compiled_prog 进行保存。 (如何保存)

CUDAPlace

参数:
  • id (int,可选) - GPU的设备ID。如果为 None,则默认会使用 id 为 0 的设备。默认值为 None

代码示例

import paddle.fluid as fluid
gpu_place = fluid.CUDAPlace(0)

 这里编号指的是可见显卡的逻辑编号,而不是显卡实际的编号。

在终端里指定GPU:

export CUDA_VISIBLE_DEVICES=9 
原文地址:https://www.cnblogs.com/shona/p/12238659.html