在其他进程运行时运行命令

在其他进程运行时运行命令

我想这个问题肯定以前被问过但我一直找不到答案。

我正在使用 CentOS 7 的服务器上训练神经网络。我使用的是 Linux 屏幕。在一个特定的屏幕上,我连接了 4 个 GPU。我怀疑我的训练没有使用它们,但我不知道如何确定,因为我必须停止训练才能运行类似的东西nvidia-smi来获取有关 GPU 使用情况的信息。那么显然没有使用任何 GPU。我也无法在屏幕外运行命令。

我曾尝试进行训练nohup但却无法结束它,所以我在寻找其他的方法。

问题:如何确定 GPU 的使用情况期间训练?

答案1

您可能可以使用类似这样的脚本:

./myprogram &
./myprogram &
./myprogram &
./myprogram &

echo Started ./myprogram instances, now sleeping for 5 seconds
sleep 5

echo Doing "cat /proc/cpuinfo | grep MHz"
cat /proc/cpuinfo | grep MHz

echo Waiting until all ./myprogram instances are done
wait

cat /proc/cpuinfo上面的方法对我有用,它让我可以在四个myprogram实例运行时查看命令的结果。对于您来说,您需要运行您的训练程序而不是“myprogram”,并且在我的测试中运行您的nvidia-smi命令而不是命令cat /proc/cpuinfo

关键是,以这种方式启动程序&意味着它们在后台运行,然后您可以根据需要使用该sleep命令等待,然后执行某些操作来获取您想要的任何信息,最后wait意味着您等到所有进程都完成;在您的情况下,直到训练计划完成。

类似这样的事对你有用吗?

相关内容