python - 定期检查 gpu 内存并在空闲时运行脚本
问题描述
我的系统中有 4 个 GPU (Nvidia)。我想定期检查一个特定的 GPU 是否空闲(例如,如果空闲内存超过 10GB),如果它是空闲的,我想运行一个 python 脚本。
我想我可以使用 nvidia-smi 来检查给定 gpu 有多少可用内存。我有一个想法,但我无法完全完成脚本。有人帮我吗?
这是我到目前为止所写的:
检查.sh
id=$1
free_mem=$(nvidia-smi --query-gpu=memory.free --format=csv -i $id)
echo $free_mem # this prints out: memory.free [MiB] 1954 MiB
while [ $free_mem -lt 10000 ]
free_mem=$(nvidia-smi --query-gpu=memory.free --format=csv -i $id)
sleep 5
CUDA_VISIBLE_DEVICES=$id python run_python_file.py
我相信代码应该类似于上面的代码片段,但是我找不到详细信息。
解决方案
用于grep -Eo [0-9]+
匹配一个或多个连续数字:
id=$1
free_mem=$(nvidia-smi --query-gpu=memory.free --format=csv -i $id | grep -Eo [0-9]+)
while [ $free_mem -lt 10000 ]; do
free_mem=$(nvidia-smi --query-gpu=memory.free --format=csv -i $id | grep -Eo [0-9]+)
sleep 5
done
CUDA_VISIBLE_DEVICES=$id python run_python_file.py
grep 的替代方法是使用POSIX 正则表达式: sed 's/[^[:digit:]]*\([[:digit:]]\+\).*/\1/'
。
推荐阅读
- javascript - 如何在Angular 6中使用反应式表单隐藏字段后提交表单?
- .net - 在 Winform 应用程序中使用 Matlab 生成的 .Net 程序集
- php - jQuery 中的 bloginfo('template_directory') 用于管理面板
- ecmascript-6 - 使用 Node Rollup 如何生成 ES2015 输出
- html - 引导工具提示
- jquery - 如何防止 JQuery 中的第二次点击?
- sql - 我可以在外键列中添加非原子值吗?
- javascript - 将所有访问者浏览器信息保存到会话中不起作用
- python - NameError: __file__ 未定义
- cakephp-3.0 - 如果满足条件,如何初始化数据库中的表对象?蛋糕PHP