0x1, 服务器环境
首先得说说HPL测试的服务器环境,这是非常重要的一点,因为这直接关系到本文剩余部分.
本次超算竞赛HPL的环境是由郑州大学提供的KNL环境,首先是登录节点,因为此节点是我们直接使用ssh进行登录使用的节点.
此机器拥有双路xeon,共64核心,64GB的RAM,性能十分强悍,但这机器并不是我们拿来跑HPL的地方,毕竟200多个队伍怎么可能同时都在一台上面跑= =???
因此郑州大学还提供了10台KNL服务器,这些机器的配置都是Intel Xeon Phi 7210的处理器,单机有64物理核心,每核心4线程,凭借intel的超线程,单机共拥有256逻辑核心,以及约70G的运行内存.
但其实,根据我的发现,郑州大学提供的远不止10台,大约一共有30台这样的机子.按照原pdf的说明,这10台当中, 5 compiling nodes for compiling applications, A cluster with 5 computing nodes. 也就是说,有5台是拿来编译用的,另外5台是拿来真正跑HPL的.
这30台中,001~010共10台服务器是用作”编译节点”的,顾名思义,就是让你拿来编译东西的- -,而剩下的20台是用qsub管理的任务集群,通过qsub提交单节点任务进行计算.
问题出在,邮件发来的pdf文档并没有告诉你怎么使用所谓的”nodes for compiling”.
同时正因为没有告诉使用方法,导致这些节点有8成以上的时间是空闲状态. 而2成的工作状态当中,又可能有超过50%都是我用的…..
0x2, 编译节点的发现
官网发来的邮件里面,在告诉我们登录IP,用户名,密码等信息之外,还告诉我们登陆节点是那个,然而只是说了”KNL004″,依旧没说怎么登录…
首先是忘记哪一天,我偶然间登录郑州大学给的一个在线查看集群工作状态的页面,在页面上,我发现一共并不只pdf里面写的10台服务器,而是30台, 同时编号为001~010的机子是灰色状态, 011以上是处于qsub管理状态,这我就觉得很奇怪了,001~010是灰色状态说明这些节点并不参与运算,也不受qsub的管理,那么这些节点只可能是之前提到的“编译节点”, 那么问题来了, 如何登录这些节点?
于是凭借我3年的linux经验, 我直接尝试用ssh去连接knl004
ssh knl004
发现居然直接就连上去了, 同时$HOME也是直接挂载上去的. 于是我把001~010这10台通通用 ssh 尝试去连接,发现002,004,006,007,008,009,010这几台(可能多记了一个)是可以直接连接使用的,并且这些节点的负载全是0
更重要的一点是!这些节点你可以交互式的跑hpl!不会受到qsub的时间限制! 再也不会因为超过30分钟而被qsub强制杀掉进程了.
如果你用qsub跑的话,你不得不等好久才知道结果,并且你无法直观的检测你的hpl运行负载.
而我直接登陆编译节点, 直接用shell跑hpl的话, 我可以把hpl放到后台跑,同时用top去查看内存使用情况/CPU占用率/进程等,这对hpl的测试有很大的帮助
并且由于大部分人都不知道这个的存在,导致在很长一段时间里,这些节点都在闲置. 因为我经常 ssh 上去就是一整天, 除了我自己, 没有看到有其他人登录这些节点….
不过再快结尾的时候, 我看到了有3个人左右也在用这些节点跑自己的hpl. 还是很机智的.
0x3, 多节点的HPL!
本次HPL比赛题目是只允许单节点跑的,并且qsub也只能申请单节点.
不过,既然我可以直接登录5台以上的编译节点,那我就可以直接用mpi在这几台上跑hpl
对,没错,我就是用 machinefile 参数让hpl在多台编译节点上跑的,并且如果我没有记错,甚至跑到了5TFlops以上….
不过倒是发现了一个问题, 双节点的效率是最高的, 三节点及以上速度直线下降,甚至不如单节点…
同时双节点情况下两节点使用的总内存和单节点是一样的,继续增加反而会降低性能.对此不是很懂- –
暂时就先写这么多算了= =
花花!!!超算竞赛好cool!