武汉大学超算门户: http://hpc.whu.edu.cn
所需的相关软件
链接:https://pan.baidu.com/s/1HklkpOJaWkbnPtH16q2VwA
提取码:jrzn
参考:http://hpc.whu.edu.cn/info/1025/1133.htm
文件传输:
武汉大学高性能计算平台文件系统被分为/home 、/project和/workfs三个分区:
- /home 分区: 该分区下的用户主目录为用户默认家目录,仅用于存储用户的环境变量等信息。在脚本中使用“/home/系统账号”引用该分区下的用户主目录。该分区的磁盘容量较小,其磁盘限额为每用户1GB,长期保存。所有登录服务节点和计算节点皆可以访问该分区下的文件。
- /project 分区(2019年12月31日及之前开通的用户) /project 分区为数据存放区域,主要用于项目文件和运行作业。在脚本中使用“/project/系统账号”引用该分区下的用户主目录。同时用户也可通过“/home/系统账号/project”访问该分区。该分区磁盘容量大,数据读写快。其磁盘限额为每用户1TB,长期保存。所有登录服务节点和计算节点都可以访问该分区下的文件。
- /dat01 分区 (2020年1月1日之后开通的用户): /dat01 分区为数据存放区域,主要用于项目文件和运行作业。在脚本中使用“/dat01/系统账号”引用该分区下的用户主目录。同时用户也可通过“/home/系统账号/dat01”访问该分区。该分区磁盘容量大,数据读写快。其磁盘限额为每用户1TB,长期保存。所有登录服务节点和计算节点都可以访问该分区下的文件。
- /workfs 分区: /workfs分区为数据存放区域,主要用于数据文件。在脚本中使用“/workfs/系统账号”引用该分区下的用户主目录。同时用户也可通过"/home/系统账号/workfs"访问该分区。该分区磁盘容量大,数据读写快。其磁盘限额为每用户3TB,超过3个月的数据会自动清理。所有登录服务节点和计算节点都可以访问该分区下的文件。
数据传输:从外部机器向计算平台上传或下载文件,可以使用 sftp 客户端。
FileZilla中如何上传自己的工程,参考链接http://www.360doc.com/content/14/0404/11/10454742_366320479.shtml
但是上传之前需要明确自己的工程上传的位置,这就需要进行磁盘限额查询。
磁盘限额查询:
在putty中输入磁盘限额查询命令,该命令会判断用户在home, workfs或者dat01下,输出相应配额:
结果显示,当前的/home分区限额都超出了,如果将工程上传在该分区,可能会出现传输失败的情况。因此,考虑另2个分区。通过cd …反向追踪找到了dat01分区,进入后发现里面有很多用户,并成功的找到了我的用户名。而另一个分区workfs,我也查看了,但是没有我的用户名,别人的用户,没有密码也进不去。
由于我每次登陆进去的都是/home/用户名,反向搜索也不方便操作。故,我需要创建dat01的链接文件到当前路径下。
创建连接文件:
进入dat01分区中我的用户huqibiao, 并将工程上传到里面的project目录下
利用软件FileZilla把我的测试工程SSNGAN导入到project目录下
接下来就是怎么把这个工程执行掉,参考了一下链接
https://www.cnblogs.com/huchong/p/9159887.html
执行python工程项目:
要执行项目,那么就要考虑运行环境啥的有没有。参考链接
https://blog.csdn.net/sowhatgavin/article/details/81878245
未导入anaconda模块前,python默认是2.7的
用命令module avail查看当前用户的环境,看到了熟悉的anaconda和cuda模块,将它们导入
anaconda中是自带python3.7编译器的,如果要训练模型,运行Tran_GAN.py文件就可以了
python Tran_GAN.py
运行后显示ImportError: No module named torchvision错误
这是因为我们的程序调用了torchvision包,而我们未安装这个依赖包,需要安装后程序才能正常运行,直接输入" pip install 包名 –user "即可
在安装库的时候,我出现了[Errno 122] Disk quota exceeded错误,是因为磁盘配额不够了,即磁盘已满或超出了用户所能使用的配额上限。尝试了很多方法,没有解决。后面的工作就希望成功了的,告诉我一下。
用户查看其节点的状态:sinfo
其中,PARTITION 表示分区,NODES 表示结点数,NODELIST 为结点列表,STATE 表示结点运行状态。其中,idle 表示结点处于空闲状态,alloc 表示结点已经分配了一个或多个作业。
** 批处理作业提交命令 **: sbatch
-n, –ntasks=number
指定要运行的任务数。请求为 number 个任务分配资源,默认为每个任务一个处理器核。
-c, –cpus-per-task=ncpus
告知资源管理系统控制进程,作业的每个任务需要 ncpus 个处理器核。若未指定此选项,则控制进程默认为每个任务分配一个处理器核。
-N, –nodes=minnodes[-maxnodes]
请求为作业至少分配 minnodes 个结点。调度器可能觉得在多于 minnodes 个结点上运行作业。可以通过 maxnodes 限制最多分配的结点数目(例如“-N 2-4”或“–nodes=2-4”)。最少和最多结点数目可以相同以指定特定的结点数目(例如, “-N 2”或“–nodes=2-2” 将请求两个且仅两个结点)。分区的结点数目限制将覆盖作业的请求。如果作业的结点限制超出了分区中配置的结点数目,作业将被拒绝。 如果没有指定-N,缺省行为是分配足够多的结点以满足-n 和-c 参数的需求。在允许的限制范围内以及不延迟作业开始运行的前提下,作业将被分配尽可能多的结点。
-p, –partition=partition name
在指定分区中分配资源。请使用 -p [hpxg|hpib|debug] 指定所使用的分区。
-w, –nodelist=node name list
请求指定的结点名字列表。作业分配资源中将至少包含这些结点。列表可以用逗号分隔的结点名或结点范围(如 n[0001-0005,0007,…])指定,或者用文件名指定。如果参数中包含 “/” 字符,则会被当作文件名。如果指定了最大结点数如-N 1-2,但是文件中有多余 2 个结点,则请求列表中只使用前 2 个结点。
-x, –exclude=node name list
不要将指定的结点分配给作业。如果包含 “/” 字符,参数将被当作文件名。srun 将把作业请求提交到控制进程,然后在远程结点上启动所有进程。如果资源请求不能立即被满足,srun 将阻塞等待,直到资源可用以运行作业。如果指 定了–immediate 选项,则 srun 将在资源不是立即可用时终止。
-h, –help
若需使用 srun 更多选项,可通过 “srun –h” 或 “srun –help” 查看。
查看作业运行情况:squeue
其中,JOBID 表示任务 ID,Name 表示任务名称,USER 为用户,TIME 为已运行时间,NODES 表示占用结点数,NODELIST 为任务运行的结点列表。