如何在GNU Parallel中交替切换GPU配置参数执行任务?
如何让GNU Parallel交替切换GPU配置参数
当然可行!这里有个简洁的方案,能帮你在GNU Parallel的任务中交替使用两个GPU的配置文件,充分利用你的双GPU资源:
核心思路
利用GNU Parallel内置的任务序号{#}——这个变量会为每个任务分配一个从1开始递增的编号。我们可以对这个序号取模(%2),得到0或1的结果,再据此映射到对应的GPU配置文件。
步骤1:修改Parallel命令
把原命令中固定的$config替换为任务序号{#},让每个任务把自己的序号传递给task函数:
gsutil ls -d $ee_repo | parallel -j 10 -k "task {} $PWD $year {#}"
步骤2:在task函数中处理GPU选择
在你的task函数里,新增逻辑根据传入的任务序号计算要使用的GPU配置:
task() { # 保留你原有的参数处理逻辑 ee_path=$1 work_dir=$2 target_year=$3 jobnumber=$4 # 对任务序号取模,得到0或1的标识 gpu_mod=$(expr $jobnumber % 2) # 根据取模结果切换配置文件 if [ $gpu_mod -eq 0 ]; then config="gpu_2" else config="gpu_1" fi # 接下来就可以用$config变量调用GPU相关的图像处理逻辑了 # 比如:your_image_processing_script --config $config ... }
这样一来,任务1会使用gpu_1,任务2用gpu_2,任务3回到gpu_1,以此循环交替,两个GPU就能同时被利用起来啦。
内容的提问来源于stack exchange,提问作者Pierre-Antoine DOUCHET
相关产品推荐
相关产品推荐

