【问题标题】:Run several python scripts with parallel并行运行多个 python 脚本
【发布时间】:2019-11-18 17:55:01
【问题描述】:

我有 run_command_list.txt 每行限制一个命令:

time python3 train.py --dataroot ./datasets/maps --name maps_pix2pix --model pix2pix --direction AtoB --checkpoints_dir maps_pix2pix_a_to_b_bs_1 --batch_size 1 > bs_1.log
time python3 train.py --dataroot ./datasets/maps --name maps_pix2pix --model pix2pix --direction AtoB --checkpoints_dir maps_pix2pix_a_to_b_bs_2 --batch_size 2 > bs_2.log
time python3 train.py --dataroot ./datasets/maps --name maps_pix2pix --model pix2pix --direction AtoB --checkpoints_dir maps_pix2pix_a_to_b_bs_4 --batch_size 4 > bs_4.log
...

我想并行运行不超过 2 个作业,并且我想根据当前可用的 GPU 设置 CUDA_VISIBLE_DEVICES=0 或 CUDA_VISIBLE_DEVICES=1,我如何使用 parallelxargs 执行此操作?

即类似cat run_command_list.txt | xargs -n 1 -P 2

【问题讨论】:

标签: bash gpu xargs gnu-parallel


【解决方案1】:
seq 1000 |
  parallel -j2 CUDA_VISIBLE_DEVICES='{=1 $_=slot()-1 =}' time python3 train.py --dataroot ./datasets/maps --name maps_pix2pix --model pix2pix --direction AtoB --checkpoints_dir maps_pix2pix_a_to_b_bs_{} --batch_size {} '>' bs_{}.log

【讨论】:

    【解决方案2】:

    你可以这样做:

    function GET_AVAILABLE_DEVICE() {
        [[ SOMETHING_HERE == SOMETHING ]] && echo 0 || echo 1
    }
    
    CUDA_VISIBLE_DEVICES=$( GET_AVAILABLE_DEVICE ) time python3 train.py --dataroot ./datasets/maps --name maps_pix2pix --model pix2pix --direction AtoB --checkpoints_dir maps_pix2pix_a_to_b_bs_1 --batch_size 1 > bs_1.log &
    CUDA_VISIBLE_DEVICES=$( GET_AVAILABLE_DEVICE ) time python3 train.py --dataroot ./datasets/maps --name maps_pix2pix --model pix2pix --direction AtoB --checkpoints_dir maps_pix2pix_a_to_b_bs_2 --batch_size 2 > bs_2.log &
    CUDA_VISIBLE_DEVICES=$( GET_AVAILABLE_DEVICE ) time python3 train.py --dataroot ./datasets/maps --name maps_pix2pix --model pix2pix --direction AtoB --checkpoints_dir maps_pix2pix_a_to_b_bs_4 --batch_size 4 > bs_4.log &
    wait
    

    您需要用任何可以为您提供可用设备的命令替换 SOMETHING_HERE== SOMETHING

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 2021-11-30
      • 2023-03-28
      • 1970-01-01
      • 2013-04-26
      • 2023-03-22
      • 2017-12-12
      • 2020-04-09
      • 1970-01-01
      相关资源
      最近更新 更多