我目前面临将 GPU 服务器集成到现有 SGE 环境中的问题。使用谷歌我找到了一些集群的例子,其中已经设置了这个,但没有关于如何完成的信息。
是否有某种形式的方法或教程?它不必非常冗长,但它应该包含足够的信息来启动和运行“cuda 队列”......
提前致谢...
编辑:要设置一个负载传感器,了解一个节点中有多少 GPU 是空闲的,我已经完成了以下操作:
#!/bin/sh
主机名=`uname -n`
而 [1]; 做
读取输入
结果=$?
如果 [ $result != 0 ]; 然后
出口 1
菲
if [ "$input" == "quit" ]; 然后
退出 0
菲
smitool=`which nvidia-smi`
结果=$?
如果 [ $result != 0 ]; 然后
gpusav=0
gpu=0
别的
gpustotal=`nvidia-smi -L|wc -l`
gpusused=`nvidia-smi |grep "进程名称" -A 6|grep -v +-|grep -v \|=|grep -v 用法|grep -v "没有运行"|wc -l`
gpusavail=`echo $gpustotal-$gpusused|bc`
菲
回声开始
echo "$hostname:gpu:$gpusavail"
回声结束
完毕
退出 0
注意:这显然只适用于 NVIDIA GPU
该策略实际上相当简单。
使用qconf -mc您可以创建一个名为gpu(或任何您想命名的)的复杂资源。资源定义应该类似于:
#name shortcut type relop requestable consumable default urgency
#----------------------------------------------------------------------------------------------
gpu gpu INT <= YES YES 0 0
Run Code Online (Sandbox Code Playgroud)
然后您应该编辑您的 exec 主机定义,qconf -me以设置具有它们的 exec 主机上的 GPU 数量:
hostname node001
load_scaling NONE
complex_values gpu=2
user_lists NONE
xuser_lists NONE
projects NONE
xprojects NONE
usage_scaling NONE
report_variables NONE
Run Code Online (Sandbox Code Playgroud)
现在您已经设置了 exec 主机,您可以在提交作业时请求 gpu 资源。例如:qsub -l gpu=1gridengine 将跟踪有多少 GPU 可用。
如果每个使用 GPU 的节点运行多个作业,您可能希望将 GPU 置于独占模式。您可以使用该nvidia-smi实用程序执行此操作。
小智 5
Open Grid Engine 在 2011.11 版本中添加了 GPU 负载传感器支持,而无需 nvidia-smi。nvidia-smi 应用程序的输出可能(并且确实)在驱动程序版本之间发生变化,因此不推荐使用其他方法。
如果您有 GE2011.11 源代码树,请查找:dist/gpu/gpu_sensor.c
编译负载传感器(需要系统上有 CUDA 工具包):
% cc gpu_sensor.c -lnvidia-ml
如果您只想以交互方式查看负载传感器报告的状态,请编译:
-DSTANDALONE
要在 Grid Engine 集群中使用负载传感器,您只需遵循标准负载传感器设置程序:
资料来源:
| 归档时间: |
|
| 查看次数: |
10755 次 |
| 最近记录: |