服务器自动抢占GPU运行程序

其原理是通过nvidia-smi扫描每块显卡上的内存,然后查询已经使用的内存,若已经使用的显卡内存不大于一个阈值,则运行python脚本(你也可以替换成别的命令)

#!/bin/bash
var=0
ocp_memory=${2:-500}
while [ $var -eq 0 ]
echo 'waiting for available gpu...'
do
    count=0
    for i in $(nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits)
    do
        if [ $i -lt ocp_memory ]
        then
            echo 'GPU'$count' is avaiable'
            CUDA_VISIBLE_DEVICES=$count python ${1}
            var=1
            break
        fi
        count=$(($count+1))    
    done    
done

使用时的命令为

sh ocp_gpu.sh test.py 500

test.py即需要运行的py文件,500代表显卡被占有内存小于等于500MB。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
好的,我可以为您提供关于时间片抢占程序代码。以下是C++语言的示例代码: ```cpp #include<iostream> using namespace std; struct process{ int id; // 进程ID int atime; // 到达时间 int rtime; // 运行时间 int priority; // 优先级 int wtime; // 等待时间 int etime; // 结束时间 int state; // 进程状态,0表示未运行,1表示正在运行,2表示已完成 }; const int N = 5; // 进程数量 process P[N]; // 进程数组 void input(){ // 输入进程信息,包括ID,到达时间,运行时间,优先级等 } void sort(){ // 按照到达时间升序排列进程数组 } void init(){ // 初始化每个进程的等待时间和状态 } void run(){ int total = 0; // 记录总等待时间 int k = 0; // 记录当前正在运行的进程号 int cnt = 0; // 记录已完成的进程数 while(cnt < N){ for(int i=0;i<N;i++){ if(P[i].state == 0 && P[i].atime <= total){ if(k == -1){ // 如果没有进程正在运行,则把该进程设为当前进程 k = i; } else if(P[i].priority > P[k].priority){ // 如果有进程正在运行,则比较优先级 P[k].state = 0; k = i; } } } P[k].rtime--; // 当前进程运行1个时间片 total++; // 总等待时间+1 init(); // 更新每个进程的等待时间和状态 if(P[k].rtime == 0){ // 当前进程运行完毕 P[k].state = 2; cnt++; k = -1; // 没有进程正在运行 } } // 计算每个进程的等待时间和结束时间 } void output(){ // 输出每个进程的信息,包括ID,到达时间,运行时间,优先级,等待时间和结束时间等 } int main(){ input(); sort(); run(); output(); return 0; } ``` 这是一个简单的时间片抢占算法程序,可以根据您的具体需求进行修改。如果您有任何问题,可以随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非线性光学元件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值