GPU集群Torque排队系统使用手册
GPU集群Torque排队系统使用手册
GPU集群Torque排队系统使⽤⼿册多媒体计算与通讯实验室GPU集群Torque排队系统使⽤⼿册袁平波 2016.5.20本实验室新购进24块K80 tesla GPU。
为了充分利⽤GPU计算资源,我们利⽤Torque来管理同学们的计算任务队列。
头结点的IP是192.168.17.240。
下⾯说明使⽤本GPU集群的⼏个步骤。
1.申请帐号.本集群有⼀个头结点和多个服务结点构成,因此提交计算作业需要在头结点上拥有帐号,需要使⽤集群的学⽣需要给我发⼀个申请邮件,同时cc给⾃⼰的导师,在导师批准后相应的帐号会被建⽴。
2.建⽴job脚本⽂件Torque管理系统不能直接提交⼆进制可执⾏⽂件,需要编写⼀个⽂本的脚本⽂件,来描述相关参数情况。
⼀个⽰例脚本⽂件myjob1.pbs如下:#PBS -N myjob1#PBS -o /home/username/myjob1.out#PBS -e /home/username/myjob1.err#PBS -l nodes=1:gpus=1:S#PBS -r ycd $PBS_O_WORKDIRecho Time is `date`echo Directory is $PWDecho This job runs on following nodes:cat $PBS_NODEFILEcat $PBS_GPUFILE./my_proc脚本⽂件中定义的参数默认是以#PBS开头的。
其中:-N 定义的是job名称,可以随意。
-o 定义程序运⾏的标准输出⽂件,如程序中printf打印信息,相当于stdout;-e 定义程序运⾏时的错误输出⽂件,相当于stderr。
-l 定义了申请的结点数和gpus数量。
nodes=1代表⼀个结点,⼀般申请⼀个结点,除⾮采⽤mpi并⾏作业;gpus=1定义了申请的GPU数量,根据应⽤实际使⽤的gpu数量来确定,S表⽰job类型,后⾯有详细描述。
北鲲云用户手册说明书
北鲲云用户手册Table of contents:登录一. 如何登录二. 下载客户端基本概念一. 计算区二. SSH连接三. 工作站四. 模板提交作业五. 镜像中心收费标准一. 收费项目二. 查看硬件资源价格功能介绍一. 仪表盘二. 应用中心三. 作业管理四. SSH连接五. 图形界面六. 文件传输七. 数据集八. 镜像中心提交作业模板提交命令行提交图形界面提交作业监控和查看结果视频专区一、 文件传输二、提交作业三、作业监控和查看结果四、镜像中心版本介绍一. 版本差别二. 功能介绍一. 个人中心二. 费用中心三. 代金券四. 收费标准计费规则五. 网络策略安全管理一. 基础设置二. 密钥对管理三. 网络策略管理四. 操作审计团队管理一. 用户管理二. 子用户管理配额管理一. 配额管理二. 配额申请存储目录介绍二. 其它隐藏目录(文件)介绍文件传输一. Windows数据传输二. Linux数据传输三. 结果文件下载四. 文件同步查询平台预装软件一. 使用命令行查询软件二. Python/Conda环境的查询三. 工作站软件的查询四. 未查询到所需软件加载预装软件一. SSH命令行加载软件环境1. 使用module工具查询和加载软件2. 加载Python/Conda虚拟环境二. 工作站启动软件自定义安装软件一. 安装须知如何选择安装方式?二. SSH连接命令行安装软件Linux编译安装软件Python/Conda环境安装软件三. Windows工作站安装软件四. Linux工作站安装软件五. 镜像中心安装软件如何提交作业模板提交一. 提交流程二. 操作步骤三. 提交后的监控命令行提交一. 操作步骤二. 计算节点资源使用率监控图形界面提交一. Windows工作站提交二. Linux工作站提交AlphaFold2一. 模板提交二. 命令行提交三. 结果文件介绍四. 使用PyMOL对结果进行图形化展示 Amber一. 模板提交二. 命令行提交CPU版 Amber 作业示例GPU Amber 作业示例Ansys CFX一. 图形界面提交二. 模板提交三. 命令行提交Ansys Fluent一. 图形界面提交二. 模板提交三. 命令行提交Ansys LS-DYNA一. 图形界面提交AutoDock-Vina一. 模板提交二. AutoDockToolsCOMSOL Multiphysics一. 图形界面提交二. 命令行提交CONVERGE一. 命令行提交CP2K一. 命令行提交步骤ColabFold一. 模板提交二. 命令行提交GROMACS一. 模板提交二. 命令行提交GPU版GROMACS作业示例CPU版GROMACS作业示例 Gaussian一. 模板提交二. 命令行提交三. GaussView 6对结果进行图形化展示 Jupyter Notebook一. 图形界面提交LAMMPS一. 模板提交二. 命令行提交LS-DYNA一. 图形界面提交二. 模板提交三. 命令行提交NAMD一. 模板提交二. 命令行提交ORCA一. 命令行提交PyTorchRoseTTAFold一. 模板提交二. 使用PyMOL对结果进行图形化展示STAR-CCM+一. 图形界面提交二. 模板提交三. 命令行提交TensorFlow一. 命令行提交TeraChem一. 命令行提交VASP一. 模板提交二. 命令行提交VirtualFlow一. 模板提交二. 后置处理失败基本功能使用问题1. 我该如何提交作业?2. 我该如何上传文件到服务器?3. 你们平台 文件传输 上传下载速度是否有限制,大文件无法上传如何解决?4. 我在通用计算区配置的环境在其它计算区怎么使用不了?5. 我在账号下创建一个子用户,子用户的目录和主用户进入的目录一样吗?6. 你们平台的模板功能,主要用于哪些场景?7. 我在您们平台提交作业,多核机器速度和自己本地电脑算起来速度没有快多少,会是什么原因呢?8. 可以设置工作站计算完自动释放吗?9. 作业结束后会有通知吗?10. 能看到下载到本地的文件在哪个目录下么?11. 请问下现在我们的WebSSH终端大概闲置多久才会断开连接?12. 我在通知设置里设置了闲置工作站自动释放,为什么没有释放?13. 您们平台是否支持自定义安装Linux系统其它发行版本?16. 停机与释放有什么区别?17. 我的作业为什么会执行失败?18. 使用模板提交方式,作业执行失败,我该怎么处理?19. 平台总共有哪些类型的节点,它们各自代表什么含义?应用软件使用问题2. 平台没有我要使用的软件怎么办?3. 你们平台是否提供商业软件?4. 普通用户没有权限安装软件,能否获取root权限?5. 每次登录都需要使用module add命令加载软件,可不可以实现自动加载?6. 使用slurm命令报错:“slurm_load_jobs error: Unable to contact slurm controller(connect failure)”如何解决?7. 执行module命令报错“Lmod has detected the following error:”,如何解决?8. 什么是队列?9. 为什么有些硬件资源无法选择?10. 使用Material Studio软件(Windows)时,CPU核数如何修改?11. Jupyter Notebook 如何远程使用虚拟环境?计费问题1. 平台是如何收费的?2. 如何充值?3. 如何查看消费记录?4. 工作站如何查看节点配置价格?5. 为什么我没有使用,还在一直扣费?6. 工作站停机还会收费吗?7. 已经赠送免费核时,但余额显示为零?8. 平台可以开发票吗?9. 节点选择经济型和标准型有什么区别?其他问题1. 我测试为什么工作站与本地笔记本同等CPU配置没有本地笔记本算的快?2. 提交作业需要排队吗?3. 节点启动需要多久?4. 超算资源有时候跑着跑着就被强制回收了,你们也会有这种情况吗?5. 为什么我的 CPU 使用率最高显示为 50%?6. 为什么我连接登录到Windows工作站没有看到H或者S盘,请问如何找回呢?7. 没有我想要的数据集怎么办?镜像中心使用问题1. 镜像中心有什么作用?2. 在哪里设置为默认镜像,如何启动默认镜像?3. 制作镜像需要多久,我已经制作了半个小时了还没结束?4. 我之前制作的镜像怎么不见了?5. 什么是容器镜像?6. 镜像中心磁盘大小设置方法Slurm作业管理系统1. 查看分区状态2. 查看作业队列3. 查看所有作业详细信息4. 取消作业号为20的作业二. 提交作业的方式1. 使用sbatch批处理模式提交作业2. 使用salloc分配模式提交作业 Module的使用一. 常用命令二. 使用例子Conda的使用一. 使用北鲲云的Conda环境二. Conda管理环境三. Conda管理包四. Conda/Pip软件安装进阶操作 Linux的常用命令linux快捷键以及帮助手册快捷键帮助手册软件安装yum用户和文件权限管理查看用户使用root查看文件权限变更文件所有者修改文件权限目录及文件操作基本目录操作基本文件操作搜索文件whichwhereislocatefind文件解压缩rartar管道与一些文本命令&& 和 ||管道文本处理sortcoltrpaste重定向重定向文件描述符永久重定向以及“丢弃”输出进程的基本操作前台/后台切换终止进程管理topps提交作业Body Attributes(Body属性)Request(请求)Response(响应) - 200Response Body Attributes(响应Body属性) 取消作业Body Attributes(Body属性)Request(请求)Response(响应) - 200Response Body Attributes(响应Body属性) 查询作业状态URL ParametersRequest(请求)Response(响应) - 200Response Body Attributes(响应Body属性) 获取文件服务器TokenRequest(请求)Response(响应) - 200查询集群配置Body Attributes(Body属性)Request(请求)Response(响应) - 200Response Body Attributes(响应Body属性) 修改集群配置Body Attributes(Body属性)Request(请求)Response(响应) - 200Response Body Attributes(响应Body属性)登录欢迎来到北鲲云一站式云超算平台!本文档提供了一些链接来帮助您登录。
曙光作业管理-调度系统安装配置手册
Torque + Maui配置手册之抛砖引玉篇本文将以应用于实际案例(南航理学院、复旦大学物理系、宁波气象局)中的作业调度系统为例,简单介绍一下免费开源又好用的Torque+Maui如何在曙光服务器上进行安装和配置,以及针对用户特定需求的常用调度策略的设定情况,以便可以起到抛砖引玉的作用,使更多的人关注MAUI这个功能强大的集群调度器(后期将推出SGE+MAUI版本)。
本文中的涉及的软件版本Torque 版本:2.1.7 maui版本:3.2.6p17。
1. 集群资源管理器Torque1.1.从源代码安装Torque其中pbs_server安装在node33上,TORQUE有两个主要的可执行文件,一个是主节点上的pbs_server,一个是计算节点上的pbs_mom,机群中每一个计算节点(node1~node16)都有一个pbs_mom负责与pbs_server通信,告诉pbs_server该节点上的可用资源数以及作业的状态。
机群的NFS共享存储位置为/home,所有用户目录都在该目录下。
1.1.1.解压源文件包在共享目录下解压缩torque# tar -zxf torque-2.1.17.tar.gz假设解压的文件夹名字为: /home/dawning/torque-2.1.71.1.2.编译设置#./configure --enable-docs --with-scp --enable-syslog其中,默认情况下,TORQUE将可执行文件安装在/usr/local/bin和/usr/local/sbin下。
其余的配置文件将安装在/var/spool/torque下默认情况下,TORQUE不安装管理员手册,这里指定要安装。
默认情况下,TORQUE使用rcp来copy数据文件,官方强烈推荐使用scp,所以这里设定--with-scp.默认情况下,TORQUE不允许使用syslog,我们这里使用syslog。
资源管理软件TORQUE 与作业调度软件Maui 的安装、设置及使用
资源管理软件TORQUE与作业调度软件Maui的安装、设置及使用李会民(hmli@)中国科学技术大学网络信息中心2008年1月目录1资源管理软件TORQUE的安装与设置21.1服务节点安装TORQUE (2)1.2服务节点初始化并设置TORQUE (2)1.3计算节点上安装TORQUE (4)1.4计算节点配置TORQUE (4)2安装与配置作业调度软件:Maui52.1服务节点上安装Maui (5)2.2服务节点上配置Maui (5)3作业运行63.1串行作业 (7)3.2并行作业 (8)3.3常用作业管理命令 (8)3.3.1查看队列中的作业状态:qstat (9)3.3.2挂起作业:qhold (10)3.3.3取消挂起:qrls (10)3.3.4终止作业:qdel和canceljob (10)3.3.5查看作业状态:checkjob (11)3.3.6交换两个作业的排队顺序:qorder (12)3.3.7选择符合特定条件的作业的作业号:qselect (12)3.3.8显示队列中作业的信息:showq (13)3.3.9显示节点信息:pbsnodes和qnodes (13)1资源管理软件TORQUE的安装与设置TORQUE和Maui可以从上下载。
以下仅是粗略配置,详细配置请参考相关手册:•TORQUE:/torquedocs21/•Maui:/products/maui/docs/mauiusers.shtml1.1服务节点安装TORQUE这里假设服务节点的机子名为kd50,其中一个计算节点的名字为node0101。
root@kd50#tar zxvf torque-2.2.1.tar.gzroot@kd50#cd torque-2.2.1root@kd50#./configure–prefix=/opt/torque-2.2.1–with-rcp=rcp上面–with-rcp=rcp设置为利用rsh协议在节点间传输文件,也可设置为–with-rcp=scp以利用scp协议进行传输。
1-Torque1.5中文教程
Torque 1.5 – 介绍教程欢迎来到Torque的世界祝贺你买了我们的Torque 游戏引擎。
这个教程会带领你参观大部分Torque的基本功能,也是你开始自己做游戏的一个起点。
做完这个教程时,我们已经做好了一个简单的3D游戏!在我们进入Torque世界以前,有两点值得注意。
在这个教程中,当你看到诸如“Select File > Open Mission”,它意味着点击File菜单中的“Open Mission”选项。
至于文件的位置,我们假定你把Torque安装在了某个硬盘根目录的/Torque/SDK目录。
第2点,这个教程是写给PC平台用户的,如果你使用的是苹果系统,我们强烈建议你使用两个按键的鼠标,同时用Option键代替Ctrl键的操作。
另外,应用程序文件在Mac中被叫做“二进制文件”的,我们在这里叫“可执行文件”。
开始页在Torque/SDK/example目录下,你会发现名为torqueDemo可执行文件。
当你运行torqueDemo的时候,你会发现如下的开始页面:那顶上的一群图标是到TGE工具和文档的快捷方式。
GUIEditor是制作图形用户界面的工具。
World Editor是创造你的游戏世界并添加物体。
Console是提供通过文字界面访问和控制游戏引擎的脚本。
在这个教程中,我们将要探索GUI和World编辑器,并且我们会快速浏览一下Console。
至于TDN,News,Docs,和Forums图标是关于Torque信息的网页的链接。
Tutorial是本教程的链接。
Options让你能设置普通的图形和声音选项,比如屏幕分辨率或音量等。
最后,Exit 就像你想象中的那样,退出这个引擎。
我们在这个教程中不会深入介绍Torque 的Consol (控制台),只是让你知道它能做什么,点击这个图标,在Consol 窗口你可以看到引擎启动后的一些进程记录。
你不仅仅可以用它来得到文字反馈,你也能直接在文字输入框中输入命令,举个例子,输入“quit();”,当然,这个命令退出了TGE 。
集群GPU队列使用指南
集群GPU队列使用指南1.单个GPU使用首先编写.cu文件,拷贝至用户的主目录下。
假设源文件是,编译出来vectorAdd, 编译指令如下(命令是一整行的):nvcc -I /opt/cuda/include -I /opt/cuda/NVIDIA_GPU_Computing_SDK/C/common/inc -I /opt/cuda/NVIDIA_GPU_Computing_SDK/shared/inc -L /opt/cuda/lib64 -L /opt/cuda/NVIDIA_GPU_Computing_SDK/C/lib -L /opt/cuda/NVIDIA_GPU_Computing_SDK/C/common/lib -L /opt/cuda/NVIDIA_GPU_Computing_SDK/shared/lib -o vectorAdd -lcutil_x86_64 –lcuda 接下来,编写提交的脚本内容如下:#!/bin/bash -x#PBS -N VectorAdd#PBS -l nodes=1:ppn=1:gpus=1#PBS -j oe#PBS -q gpu##define variables#PATH=/opt/cuda/bin:$PATHn_proc=$(cat $PBS_NODEFILE | wc -l)LD_LIBRARY_PATH=/opt/cuda/lib64:/opt/cuda/lib:$LD_LIBRARY_PATH:$LD_LIBRARY_PATH#binary file/home/users/yourname/vectorAddexit 0最后提交任务,qsub 即完成所有操作。
2.多个GPU使用(Cuda + Open MPI)由于目前gpu对列内每个节点有8个cpu核,只有1个gpu卡。
一般只需要一个cpu核绑定一块gpu卡。
所以在申请队列中如果需要同时申请多块gpu卡,那么需要控制好申请的cpu数。
GPU集群使用方法
学校GPU集群使用方法:1.使用一款客户端远程登录软件,如SSH,登录到GPU集群上上图中的Host Name是GPU集群的IP地址:202.38.95.84,User Name是在管理员那里已开好的用户名:XXXXX。
2.点击Connect,弹出出入密码的界面,如下图所示:输入密码:XXXXX,并点击OK,就远程登录到GPU集群上了。
3.GPU集群有很多节点,有些节点上的GPU可能并不是用来进行通用计算的,但1~18号节点是用来进行通用计算的。
如输入:rsh node1并回车就可以登录到节点1。
如下图:4.矩阵乘法程序就放在目录:/home/nic/cbo869/cbo869/MatrixMul下,输入:cd /home/nic/cbo869/cbo869/MatrixMul5.文件夹MatrixMul下的程序matrixmul.cu实现了矩阵乘法,还有一个makefile文件,用来编译的。
输入:Make生成可执行文件matrixmul;最后输入:./ matrixmul就可以运行程序了。
6.GPU上的矩阵乘法代码:#include <stdlib.h>#include <stdio.h>#include <string.h>#include <math.h>#include <time.h>#include <sys/time.h>// includes, project#include <cutil.h>#include <cuda.h>#include <cuda_runtime.h>// Thread block size#define BLOCK_SIZE 16// Matrix dimensions// (chosen as multiples of the thread block size for simplicity)#define WA (30 * BLOCK_SIZE) // Matrix A width#define HA (50 * BLOCK_SIZE) // Matrix A height#define WB (80 * BLOCK_SIZE) // Matrix B width#define HB W A // Matrix B height#define WC WB // Matrix C width#define HC HA // Matrix C height//sequential code implemented on cpuvoid computeGold(float* C, const float* A, const float* B, int hA, int wA, int wB) {for (int i = 0; i < hA; ++i) {for (int j = 0; j < wB; ++j) {double sum = 0;for (int k = 0; k < wA; ++k) {double a = A[i * wA + k];double b = B[k * wB + j];sum += a * b;}C[i * wB + j] = sum;}}}// Initialize a matrix with random float entries.void randomInit(float* data, int size){for (int i = 0; i < size; ++i)data[i] = rand() / (float)RAND_MAX;}//Compare the cpu's result with gpu'svoid printDiff(float *data1, float *data2, int width, int height) {int i,j,k;int error_count=0;for (j=0; j<height; j++) {for (i=0; i<width; i++) {k = j*width+i;if (data1[k] != data2[k]){printf("diff(%d,%d) CPU=%4.4f, GPU=%4.4f n", i,j, data1[k], data2[k]);error_count++;}}}printf(" nTotal Errors = %d n", error_count);}/////////////////////////////////////////////////////////////////////////////////////////////////////__global__ void matrixMul( float* C, float* A, float* B, int wA, int wB){// Declaration of the shared memory array As used to// store the sub-matrix of A__shared__ float As[BLOCK_SIZE][BLOCK_SIZE];// Declaration of the shared memory array Bs used to// store the sub-matrix of B__shared__ float Bs[BLOCK_SIZE][BLOCK_SIZE];// Block indexint bx = blockIdx.x;int by = blockIdx.y;// Thread indexint tx = threadIdx.x;int ty = threadIdx.y;// Index of the first sub-matrix of A processed by the blockint aBegin = wA * BLOCK_SIZE * by;// Index of the last sub-matrix of A processed by the blockint aEnd = aBegin + wA - 1;// Step size used to iterate through the sub-matrices of Aint aStep = BLOCK_SIZE;// Index of the first sub-matrix of B processed by the blockint bBegin = BLOCK_SIZE * bx;// Step size used to iterate through the sub-matrices of Bint bStep = BLOCK_SIZE * wB;// Csub is used to store the element of the block sub-matrix// that is computed by the threadfloat Csub = 0;// Loop over all the sub-matrices of A and B// required to compute the block sub-matrixfor (int a = aBegin, b = bBegin; a <= aEnd; a += aStep, b += bStep) {// Load the matrices from device memory// to shared memory; each thread loads// one element of each matrixAs[ty][tx] = A[a + wA * ty + tx];Bs[ty][tx] = B[b + wB * ty + tx];// Synchronize to make sure the matrices are loaded__syncthreads();// Multiply the two matrices together;// each thread computes one element// of the block sub-matrixfor (int k = 0; k < BLOCK_SIZE; ++k)Csub += As[ty][k] * Bs[k][tx];// Synchronize to make sure that the preceding// computation is done before loading two new// sub-matrices of A and B in the next iteration__syncthreads();}// Write the block sub-matrix to device memory;// each thread writes one elementint c = wB * BLOCK_SIZE * by + BLOCK_SIZE * bx;C[c + wB * ty + tx] = Csub;}/////////////////////////////////////////////////////////////////////////////////////////////int main(void){// set seed for rand()srand((unsigned)time(NULL));struct timeval tv_start, tv_end;double time_used;// allocate host memory for matrices A and Bint size_A = W A * HA;size_t mem_size_A = sizeof(float) * size_A;float* h_A = (float*) malloc(mem_size_A);int size_B = WB * HB;size_t mem_size_B = sizeof(float) * size_B;float* h_B = (float*) malloc(mem_size_B);// initialize host memoryrandomInit(h_A, size_A);randomInit(h_B, size_B);// allocate device memoryfloat* d_A;cudaMalloc((void**) &d_A, mem_size_A);float* d_B;cudaMalloc((void**) &d_B, mem_size_B);// copy host memory to devicecudaMemcpy(d_A, h_A, mem_size_A, cudaMemcpyHostToDevice) ;cudaMemcpy(d_B, h_B, mem_size_B, cudaMemcpyHostToDevice) ;// allocate device memory for resultint size_C = WC * HC;size_t mem_size_C = sizeof(float) * size_C;float* d_C;cudaMalloc((void**) &d_C, mem_size_C);// allocate host memory for the resultfloat* h_C = (float*) malloc(mem_size_C);// setup execution parametersdim3 BlockDim(BLOCK_SIZE, BLOCK_SIZE);dim3 GridDim(WC / BlockDim.x, HC / BlockDim.y);gettimeofday(&tv_start, NULL);// execute the kernelmatrixMul<<<GridDim, BlockDim>>>(d_C, d_A, d_B, WA, WB); cudaThreadSynchronize();gettimeofday(&tv_end, NULL);time_used=(tv__sec-tv__sec)*1000000+(tv__usec-tv__usec); printf("\nMA(%dx%d) X MB(%dx%d)\n\n", HA, W A, HB, WB);printf("GPU_USE_TIME=%fms\n\n", time_used/1000);// copy result from device to hostcudaMemcpy(h_C, d_C, mem_size_C, cudaMemcpyDeviceToHost) ;// compute reference solutionfloat* reference = (float*) malloc(mem_size_C);gettimeofday(&tv_start, NULL);computeGold(reference, h_A, h_B, HA, W A, WB);gettimeofday(&tv_end, NULL);time_used=(tv__sec-tv__sec)*1000000+(tv__usec-tv__usec); printf("CPU_USE_TIME=%fms\n\n", time_used/1000);// check resultCUTBoolean res = cutCompareL2fe(reference, h_C, size_C, 1e-6f);printf("%s\n\n", (1 == res) ? "Right!" : "Failed!");if (res!=1)printDiff(reference, h_C, WC, HC);// clean up memoryfree(h_A);free(h_B);free(h_C);free(reference);cudaFree(d_A);cudaFree(d_B);cudaFree(d_C);cudaThreadExit();return 0;}。
Tesla GPU 集群服务器使用手册
T esla GPU集群服务器使用手册v0.93 (2010-1-11)一、系统环境简介T esla GPU集群服务器域名为,IP地址为159.226.49.76(暂定),内部用户可以在办公网内直接使用SSH登录该集群,外部用户同样需要经过防火墙身份认证之后(认证过程请参见《深腾7000远程登录指南》)再进行SSH登录。
数据的上传与下载仍然是通过scp或者sftp方式进行。
T esla GPU集群服务器的系统环境如下: 1)硬件环境:● 头节点1个,机器名console,配备一颗Intel Xeon E5504四核处理器,2.0GHz 主频,2*4MB缓存,8G内存,6块300GB SAS硬盘,工作于Raid5模式。
● 计算节点90个,存在两种不同硬件配置,其机器名分别如下:c0101-c0110、c0201-c0203、c0301-c0305(共18个节点)以上节点配置一颗AMD Phenom 9850四核处理器,2.5GHz主频,4*256KB 二级缓存,4MB三级缓存,3块T esla C1060 GPU处理器,8GB内存,一块500GB SATA硬盘。
c0204-c0233、c0401-0442(共72个节点)以上节点配置一颗Intel Xeon E5410四核处理器,2.33GHz主频,2*6MB二级缓存,2块T esla C1060 GPU处理器,8GB内存,一块500GB SATA硬盘。
各节点间通过DDR 4X Infiniband高速网络和千兆以太网进行连接,分别用于计算数据和系统管理信息的通讯。
2)软件环境:RHEL 5.3 x64操作系统,内核版本2.6.18-128.el5。
GNU C/C++/Fortran编译器。
Nvidia CUDA T oolkit 2.1开发工具。
Mvapich/OpenMPI并行编程环境。
Atlas/GotoBlas数学函数库。
T orque/Maui资源管理系统及作业调度器。
PBS管理系统--torque
PBS管理系统(一)作业提交系统Torque个人安装总结(PBS)PBS是功能最为齐全,历史最悠久,支持最广泛的本地集群调度器之一。
PBS 的目前包括openPBS,PBS Pro和Torque三个主要分支。
其中OpenPBS是最早的PBS系统,目前已经没有太多后续开发,PBS pro是PBS的商业版本,功能最为丰富。
Torque是Clustering公司接过了OpenPBS,并给与后续支持的一个开源版本。
下面是本人安装torque的过程。
一、Torque安装在master(管理结点上)1、解压安装包[root@master tmp]#tar zxvf torque-2.3.0.tar.gz2、进入到解压后的文件夹./configure--with-default-server=mastermakemake install3、(1)[root@master torque-2.3.0]#./torque.setup<user><user>必须是个普通用户(2)[root@master torque-2.3.0]#make packages把产生的tpackages,torque-package-clients-linux-x86-64.sh,torque-package-mom-linux-x86-64.sh拷贝到所有节点。
(3)[root@mastertorque-2.3.0]#./torque-package-clients-linux-x86_64.sh--install[root@master torque-2.3.0]#./torque-package-mom-linux-x86_64.sh --install(4)编辑/var/spool/torque/server_priv/nodes(需要自己建立)加入如下内容master np=4node01np=4........node09np=4(5)启动pbs_server,pbs_sched,pbs_mom,并把其写到/etc/rc.local里使其能开机自启动。
Tuxedo完全操作手册
Tuxedo完全操作⼿册⼀、tuxedo的配置1、展开tuxedo包,例如:/home/tuxedo2、配置ubbconfig⽂件在江苏建⾏是jsccb.ubb*RESOURCES*RESOURCES节包含整个应⽤范围的信息。
本节必须在配置⽂件第⼀节,不可缺少。
参数意义*RESOURCES *RESOURCES节IPCKEY 共享内存idUID TUXEDO管理员⽤户idGID TUXEDO管理员⽤户idPERM TUXEDO管理员组⽤户的权限MAXACCESSERS 服务端和客户端的最⼤进程数MAXSERVERS 限制可以启动服务总数MAXSERVICES 限制可以发布交易总数MASTER 指出主控节点的逻辑名,第⼆个是备份节点MODEL 应⽤构架,MP表⽰多机OPTIONS LAN,MIGRA TE表⽰是⼀个⽹络应⽤,服务可以移植到替代处理器上SECURITY 安全级别(5个)AUTHSVC 客户端可以通过交易“AUTHSVC”获得认证NOTIFY DIPIN,客户端通过dip-in收到⼴播通知SYSTEM_ACCESS PROTECTED,NO_OVERRIDE,应⽤代码不得⼲扰共享内存LDBAL 设Y则进⾏负载平衡MAXBUF[S]TYPE 数据缓冲类型及⼦类的最⼤数SCANUNIT 内部时间间隔单位,单位是秒SANITYSCAN 检索公告牌的内部时间间隔,单位是SCANUNITBLOCKTIME 交易超时时间,单位是SCANUNITBBLQUERY DBBL查询所有BLL的时间间隔DBBLWAIT DBBL等待BBL回应的超时时间MAXCONV 同时最⼤会话数jsccb.ubb的实例###################### RESOURCES SECTION ######################*RESOURCESIPCKEY 234567DOMAINID JSCCBMASTER SERVER1MAXSERVERS 900MAXSERVICES 2000CMTRET LOGGEDMODEL MPLDBAL YSECURITY NONEMAXGTT 500OPTIONS LANBLOCKTIME 12*MACHINES*MACHINES节包含应⽤有关的每个处理器的信息。
超算集群pbs使用指南
PBS用户指南1、PBS队列介绍目前部署在超算集群上有六个队列,队列名称分别是batch、old、oldfat、fat、newfat、gpu。
batch :默认队列,一般用来做作业测试;old :此队列共有58个计算节点,每个节点内存为24G,cpu核数为12核,此队列一般用于对内存需求不太大的作业;此队列对应的节点为c0101—c0142,c0301—c0332,除开有故障的节点,共计58个。
oldfat :此队列共有1个胖节点,每个节点内存为125G,cpu核数为32核;此队列对应的节点为c0401。
fat :此队列共有3个胖节点,每个节点内存为1T,cpu核数为40核,此队列一般用于对内存需求较大的作业;此队列对应的节点为fat01、fat02、fat03。
newfat:此队列共有2个胖节点,每个节点内存为1T,cpu核数为48核,此队列一般用于对内存需求较大的作业;此队列对应的节点为fat04、fat05。
gpu :此队列共有1个计算节点,每个节点内存为125G,cpu核数为20核,主要用于视频编码,图形处理等应用。
此队列对应的节点为gpu01。
2、PBS命令介绍PBS提供4条命令用于作业管理。
(1)qsub ——用于提交作业脚本命令格式:qsub [-a date_time] [-c interval] [-C directive_prefix][-e path] [-I] [-j join] [-k keep] [-l resource_list] [-m mail_options][-M user_list][-N name] [-o path] [-p priority] [-q destination][-r c][-S path_list] [-u user_list][-v variable_list] [-V][-W additional_attributes] [-z][script](2)qstat ——用于查询作业状态信息命令格式:qstat [-f][-a][-i][-n][-s][-R][-Q][-q][-B][-u]参数说明:-f jobid列出指定作业的信息-a 列出系统所有作业-i 列出不在运行的作业-n 列出分配给此作业的结点-s 列出队列管理员与scheduler所提供的建议-R 列出磁盘预留信息-Q 操作符是destination id,指明请求的是队列状态-q 列出队列状态,并以alternative形式显示-au userid列出指定用户的所有作业-B 列出PBS Server信息-r 列出所有正在运行的作业-Qf queue列出指定队列的信息-u 若操作符为作业号,则列出其状态。
torque创建队列
Torque创建队列安装完torque后默认只有一个batch队列,所有节点都属于batch队列有些情况下客户需要创建不同队列,来限制节点资源的使用以一个18节点的集群为例创建一个short队列,队列节点资源限制在node11,node12,node13,node14此4台机器1,创建队列[root@m1 server_priv]# qmgr -c "create queue short queue_type=execution"2,定义队列必须属性[root@m1 server_priv]# qmgr -c "set queue short enabled = True"[root@m1 server_priv]# qmgr -c "set queue short started = True"3,指定可用节点资源修改/usr/local/inspur/server_priv/nodes文件如下node1 np=12node2 np=12node3 np=12node4 np=12node5 np=12node6 np=12node7 np=12node8 np=12node9 np=12node10 np=12node11 np=12 shortnode12 np=12 shortnode13 np=12 shortnode14 np=12 shortnode15 np=12node16 np=12node17 np=12node18 np=12执行命令[root@m1 server_priv]# qmgr -c "set queue short =short"要使操作生效需要重启pbs_server先停掉pbs_server[root@m1 server_priv]# qterm -t quick再启动pbs_server[root@m1 server_priv]# pbs_server4,测试队列,向队列里提交作业[inspur@m1 wtk]$ qsub -q short查看状态[inspur@m1 wtk]$ watch qstat -nEvery : qstat -n Wed Jun 22 15:38:54 2011m1:Req'd Req'd ElapJob ID Username Queue Jobname SessID NDS TSKMemory Time S Time-------------------- -------- -------- ---------------- ------ ----- --- ------ ----- - -----inspur short hello 2531 4 -- -- 12:00 R --node14/1+node14/0+node13/1+node13/0+node12/1+node12/0+node11/1+node11/05,删除队列用以下命令删除[root@m1 server_priv]# qmgr -c "del queue short"对于队列其他资源限制,可以参考手册,以下也列出一些队列最大作业数量(包含运行的和排队的):qmgr -c "set queue short max_queuable=20"队列最大运行作业数量(不包含排队的):qmgr -c "set queue short max_running=20"一个用户最大作业数量qmgr -c "set queue short max_user_queuable=20"一个用户最大运行作业数量(不包含排队的):qmgr -c "set queue short max_user_run=10"一个用户单个作业最大使用cpu核心数量(不包含排队的):set queue long = 2指定队列的优先级:qmgr -c "set queue short priority=20"指定队列中所有作业可用的最大计算节点数量:qmgr -c "set queue short =20"指定队列中单个提交的作业的最大计算节点数量:qmgr -c "set queue short =16"允许提交作业的机器qmgr -c "set queue batch acl_hosts=h1+h2+h3" qmgr -c "set queue batch acl_host_enable=true"set server acl_hosts = snset server acl_hosts += jnset server acl_hosts += mnset server acl_roots = rootset server managers = root@mnset server operators = daihj@*set server operators += inspur@* 让普通用户qsta 查看所有作业set server operators += liqing@*set server operators += root@*set server operators += sunych@*set server operators += zhjx@*set server default_queue = batchset server log_events = 511set server mail_from = admset server scheduler_iteration = 600set server node_check_rate = 150set server tcp_timeout = 6set server keep_completed = 30set server submit_hosts = mnset server submit_hosts += jnset server submit_hosts += snset server auto_node_np = Trueset server next_job_number = 458mqmgr -c "set server operators -= zhangyun@*" 减去一个属性。
新曙光集群系统(Pluto)简明用户手册
曙光集群系统(Pluto)简明用户手册(第2版)1.系统介绍曙光集群系统(命名为Pluto)共有172个计算节点(140个刀片节点,16个MIC节点,16个GPU节点),5个登录节点。
集群系统所有登录节点和计算节点的操作系统均为64位Redhat7.2。
系统采用Intel Omni-Path高速计算网络,曙光Parastor200全局并行存储系统。
全系统峰值性能为211.2Tflop/s。
计算节点的硬件配置如下:●所有刀片计算节点、MIC计算节点、GPU计算节点均配置2颗Intel E5-2680 v3处理器,每个处理器12核,每节点共24核;64 GB DDR4 ECC 2133MHz内存。
●每台MIC计算节点配置1块Intel Xeon Phi 5110P加速卡(1.011TFlops)。
●每台GPU计算节点配置1块NVIDIA TESLA K80 GPGPU加速卡(2.911TFlops)。
2.系统登录及文件传输2.1.系统登录首先使用Xshell、SecureCRT等软件登录到前端机(IP:218.249.35.43)。
登陆进前端机后,再用命令ssh 帐号@pluto登录到新曙光(pluto)系统。
2.2.文件拷贝用scp命令在前端机与新曙光(pluto)之间完成文件拷贝,新老曙光系统间的文件拷贝同样用scp命令。
3.程序编译运行环境集群系统部署的编译器既包含Linux操作系统自带的GNU c/c++/fortran(版本4.8.5)编译器,也提供了Intel/MPI多个版本的c/c++/fortran的编译器,以及支持NVIDIA GPU 程序编译的CUDA toolkit。
此外,集群系统还部署了Mvapich2/OpenMPI/IntelMPI等多个版本的MPI 库,可以支持OpenMP和MPI两种并行方式。
3.1.环境变量设置方法用户可以采用下面的方法来快速设置环境变量:方法一、运行脚本文件加载环境变量。
作业调度系统PBS(Torque)的设置
作业调度系统PBS(Torque)的设置1、修改/var/spool/torque/server_priv/⽬录下的nodes⽂件##Node1 np=16 gpus=4Node2 np=16 gpus=4...其中Node1为计算节点名字,np为逻辑核数,gpus为显卡数该⽂件给出了计算集群的最⼤可⽤资源2、重新启动pbs##\#service pbs_mon restart\#service pbs_server restart\#service pbs_sched restart注意要按照顺序重启服务3、 qmgr 是Torque⽤户对队列进⾏管理的交互界⾯##在root账户下进⼊qmgr\#qmgrQmgr:list queue QueueName //查看队列属性Queue QueueNamequeue_type = Executionmax_user_queuable = 100total_jobs = 0state_count = Transit:0 Queued:4 Held:0 Waiting:0 Running:1 Exiting:0 Complete:0resources_max.ncpus = 12resources_default.ncpus = 12resources_default.nodes = 1resources_default.walltime = 01:00:00mtime = Tue Jan 30 16:14:38 2018resources_assigned.ncpus = 4resources_assigned.nodect = 1max_user_run = 1enabled = Truestarted = True如要启⽤队列Qmgr:set queue QueueName enabled=True相应的设置项在中给出max_user_queuable :队列中⼀个⽤户能提交的最⼤作业数max_user_run :队列中⼀个⽤户同时运⾏的作业数resources_max.ncpus :最⼤可⽤逻辑核数total_jobs :当前提交的作业数如果要求⼀次执⾏⼀个任务,该任务占⽤12个核,其余任务需要排队,则设置max_user_run=1.然后在作业提交脚本.pbs中 -np 12qmgr不需要重新启动pbs服务4、如何将pbs_mom, pbs_server 和 pbs_sched ,并添加为系统服务,设置为开机启动##cd /usr/local/src/torque-2.5.12/contrib/init.d/cp pbs_mom pbs_server pbs_sched /etc/init.d/chkconfig --add pbs_momchkconfig --add pbs_serverchkconfig --add pbs_sched。
北京脑中心高性能集群使用手册说明书
北京脑中心高性能集群使用手册2023年06月12日第一章现有集群2第二章集群登录1.1 VPN登录1.1.1vpn下载打开IE浏览器或者safari浏览器访问https://117.133.167.242:1443或者https://:1443打开网页后会提示安全警告信息,点击“详细信息”然后再点击“转到此网页”,最后会显示VPN登陆窗口,输入VPN账号密码后点击登录。
第一次登录会下载安装Easyconnect客户端,后续登录用该客户端登录即可,不需再从网页登录。
打开Easyconnect客户端输入访问地址登录集群的vpn账号,密码然后输入手机接收到的的验证码第一次是管理员设置好的手机号码,如果使用期间想更换手机号登录成功之后可自行修改1.1.2 vpn 支持的版本1.2 主机登录1.2.1 集群IP地址集群IP地址为:10.12.100.88,用户通过该地址可以登录到集群的登录节点。
登录节点主要用于文件上传下载、程序编写、软件安装以及作业提交等操作,登录节点不能运行程序(需要在登录节点用slurm去调度),否则将会影响到其他用户的登录及操作。
1.2.2 Windows用户主机登录Windows用户可以用MobaXterm,Xshell, SSH Secure Shell Client,PuTTY,SecureC RT等SSH客户端软件登录集群。
下面以xshell 为例介绍如何登录。
xshell是付费商业软件,但有免费的教育家庭版可以下载。
1)打开xshell,点击“文件”中的“新建会话”2)编辑会话,在红框内输入IP地址3)输入集群主机账号和密码点击“用户验证”,输入主机账号和密码,然后点击“确定”完成会话新建工作。
4)选择刚创建的会话,然后点击“连接”登录集群5)首次登陆时会弹出窗口,询问是否保存密钥,选择“接受保持”后即可登录集群。
1.2.3 Linux、Mac用户主机登录1.3.1 Windows 用户文件上传下载Windows用户可以用MobaXterm,Xftp, SSH Secure Shell Client,winscp等软件实现文件的上传下载。
torque使用指南
torque使用指南tip1:bydefault,jobsubmissionisallowedonlyonthetorqueserverhost(hostonwhichpbs_ serverisrunning).enablementofjobsubmissionfromotherhostsisdocumentedinconfigur ingjobsubmithosts.masternode:node3submitajob:qsub查询作业状态:qstat/qstatcf查询节点状态:pbsnodesca第一步:安装yuminstalltorque*安装之后的路径:/var/torque第二步:布局布局掌控节点:1.执行/usr/share/doc/torque-2.5.7/torque.setup,将本节点配置为管理节点。
命令:./torque.setup(选定一个非root用户名)qmgr-c'ps'//查阅布局信息2.具体内容选定排序节点在目录torque_home/server_priv/nodes建立文件nodes,具体指定集群中的计算节点。
简单示例如下:#nodes001and003-005areclusternodes#node001np=2cluster01racknumber22##node002willbereplacedsoonnode002:tswaitingtobereplaced#node002willbereplaceds oon#node003np=4cluster01racknumber24node004cluster01racknumber25node005np=2cluster01racknumber26ram16gbnode006node007np=2node008:tsnp=4布局排序节点:在计算节点的torque_home/mom_priv/config文件中修改$pbsserverheadnode#note:hostnamerunningpbs_server$logevent255#bitmapofwhicheve ntstologpbsserver为你的集群中的管理节点的hostname.3.重启节点排序节点:pbs_mom控制节点:>qterm-tquick>pbs_server注意事项:1.在torque中在继续执行mpi程序时。
Torque说明文档
Torque 3.0使用指南原文地址:/mandy/articles/1982.htmlTorque 3.0使用指南 (1)原文地址: (1)1 使用简明流程 (5)1.1 从已经存在的数据库生成schema XML文件 (5)1.1.1 编辑build.properties (5)1.2 根据schema XML文件生成java object model模型源代码 51.3 在项目中整合torque (5)1.3.1 编辑Torque.properties (5)1.3.2 在项目的初始化代码中添加一下代码: (6)1.4 增加新表 (6)1.4.1 备份shx3-schema.xml (6)1.4.2 ant –f build-torque.xml jdbc (6)1.4.3 将新的表的XML文本块粘贴到备份的shx3-schema.xml (6)1.4.4 备份src/java/* (7)1.4.5 ant –f build-torque.xml om (7)1.4.6 将新的表对应的java文件添加到项目中。
(7)1.5 删除旧表 (7)1.5.1 删除表 (7)1.5.2 删除项目中该表相关联的java源代码 (7)1.6 修改数据库表结构 (7)1.6.1 (7)注意如果修改的表对应的java文件有添加了自定义的方法,含有该方法的java文件需要事先备份。
待增加新表操作完成后,再将这些java文件复制过来,覆盖生成的文件。
其实,torque在生成java文件时,不会覆盖从base基类继承来的类。
所以,在保证安全的情况下,可以直接在修改的package上直接生成java代码。
(7)1.6.2 先执行删除旧表,然后执行增加新表 (7)1.7 包管理及缺省基类 (7)2 torque结构说明 (9)3 编码 (10)3.1 在生成的java源码中添加自定义方法 (10)3.2 初始化 (10)3.3 ID生成器的使用 (10)3.4 INSERT (10)3.5 SELECT (11)3.6 UPDATE (11)3.7 DELETE (12)3.8 简单查询 (12)3.9 复杂查询 (12)3.10 关联查询 (13)3.11 DISTINCT (13)3.12 排序 (14)3.13 GROUP BY AND DISTINCT (14)3.14 条件查询 (15)3.15 自定义查询条件 (15)3.16 在查询中使用两次同一字段 (16)3.17 翻页 (16)3.18 事务处理 (17)4、模板文件 (18)4.1 Torque.properties (23)1 使用简明流程1.1 从已经存在的数据库生成schema XML文件1.1.1 编辑build.propertiestorque.project = shx3torque.database = oracletorque.targetPackage = net.emedchina.omtorque.database.createUrl = jdbc:oracle:thin:@172.25.3.201:1521:devgbk torque.database.buildUrl = jdbc:oracle:thin:@172.25.3.201:1521:devgbk torque.database.url = jdbc:oracle:thin:@172.25.3.201:1521:devgbk torque.database.driver = oracle.jdbc.OracleDriverer = shx3torque.database.password = shx3torque.database.host = 172.25.3.201# 下面一行至关重要torque.database.schema = SHX31.1.1.1ant –f build-torque.xml jdbc1.1.1.2生成:schema/shx3-schema.xml,该文件用于生成模型源代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多媒体计算与通讯实验室GPU集群Torque排队系统使用手册袁平波 2016.5.20本实验室新购进24块K80 tesla GPU。
为了充分利用GPU计算资源,我们利用Torque来管理同学们的计算任务队列。
头结点的IP是192.168.17.240。
下面说明使用本GPU集群的几个步骤。
1.申请帐号.本集群有一个头结点和多个服务结点构成,因此提交计算作业需要在头结点上拥有帐号,需要使用集群的学生需要给我发一个申请邮件,同时cc给自己的导师,在导师批准后相应的帐号会被建立。
2.建立job脚本文件Torque管理系统不能直接提交二进制可执行文件,需要编写一个文本的脚本文件,来描述相关参数情况。
一个示例脚本文件myjob1.pbs如下:#PBS -N myjob1#PBS -o /home/username/myjob1.out#PBS -e /home/username/myjob1.err#PBS -l nodes=1:gpus=1:S#PBS -r ycd $PBS_O_WORKDIRecho Time is `date`echo Directory is $PWDecho This job runs on following nodes:cat $PBS_NODEFILEcat $PBS_GPUFILE./my_proc脚本文件中定义的参数默认是以#PBS开头的。
其中:-N 定义的是job名称,可以随意。
-o 定义程序运行的标准输出文件,如程序中printf打印信息,相当于stdout;-e 定义程序运行时的错误输出文件,相当于stderr。
-l 定义了申请的结点数和gpus数量。
nodes=1代表一个结点,一般申请一个结点,除非采用mpi并行作业;gpus=1定义了申请的GPU数量,根据应用实际使用的gpu数量来确定,S表示job类型,后面有详细描述。
队列系统的默认job请求时间是一周,如果运行的job时间估计会超过,则可以使用下面的参数:#PBS -l nodes=1:gpus=1:S,walltime=300:00:00表示请求300小时的job时间。
-r 表示job立即执行。
my_proc是用户的可执行程序。
需要通过scp或winscp 复制到自己的home目录。
如果程序运行过程中需要读取数据文件和生成数据文件,也需要在运行前后上传和下传。
后面的cat和echo信息是打印出时间、路径、运行节点及GPU分配情况等信息,便于调试。
3.提交作业:qsub$qsub myjob1.pbsmyjob1.pbs 是前一步骤生成的脚本文件。
相应可执行文件和数据文件也必须就位。
4.查看作业:qstat -n上图中165是jobid 运行状态有以下几种状态:C - Job 已经运行结束E - Job 运行结束后退出H - Job 被挂起Q - job 被排队, 可被手动启动或路由R - job 在运行中.T - job 被移动W - job 等待其执行时间到来 (-a 选项设置job启动时间) 其中-n参数可以列出运行job 的结点。
其他常用命令:1)挂起作业:qholdQhold命令可以挂起作业,被挂起的作业将暂时停止执行,可以让其余的作业优先得到资源运行,被挂起的作业在qstat中显示为H状态,下面的命令将挂起id为165的job。
$qhold 1652)取消挂起:qrls被挂起的作业可以重新被运行,如下面的命令将重新运行id为165的job$qrls 1653)终止作业:qdel如果用户想放弃一个作业的执行,可以使用qdel命令,下面的命令将终止id为165的job。
$qdel 1654)查看结点pbsnodes$pbsnodes5)查看空闲结点pbsnodes -l free$pbsnodes –l free5.关于集群环境的说明应同学要求,集群的每一个结点都安装了caffe深度学习的环境。
包括Gcc4.8.5,cmake 3.1.3,python 2.7.5, blas3.4.2,numpy 1.9.1,opencv3.0.0。
头结点torqueServer没有编译环境,也没有GPU卡,如果需要测试自己的代码是否能在集群环境下运行,可以先写一个简单程序在第7结点上试运行:$ssh Gpu107$./myproc.sh #在这里运行你自己的测试程序。
另外,/opt/下面有下载好的caffe-master.zip,可以复制到自己目录下:(以下步骤可以在Gpu107上完成)$cp /opt/caffe-master.zip ~/.a)解压:$unzip caffe-master.zipb)配置并修改config文件$cp Makefile.config.example Makefile.config$vi Makefile.config 修改如下参数BLAS := atlasBLAS_LIB := /usr/lib64/atlasPYTHON_INCLUDE:=/usr/include/python2.7/usr/lib/python2.7/dist-packages/numpy/core/include PYTHON_LIB := /usr/lib64c)编译$make all –j12$make test –j 12$make runtestd)获取数据$ sh data/mnist/get_mnist.she)重建lmdb$ sh examples/mnist/create_mnist.shf)训练数据$ sh examples/mnist/train_lenet.sh也可以直接复制已经解压编译好并下载了数据的文件夹(复制过程中有权限错误,忽略不会影响后序过程),这样可以免去a-d)步骤的编译和数据下载,直接进行e|f),如下:$cp /opt/caffe-master ~/. -R$ sh examples/mnist/create_mnist.sh #重建lmdb$ sh examples/mnist/train_lenet.sh #训练6.关于GPU集群的存储问题用户登录pbs头节点(192.168.16.240)后默认的路径是/home/$USER,但/home下的总空间只有1T,主要用于存放代码等重要文档,同学们在运行代码过程中用到的数据文件尽量不要放在/home下,目前可以用于存放数据的mount点有/data、/data1、/data2、/data3、/data4、/data5、/data6、/data7,每个mount点约1.5T空间(使用df –h查看)。
同学们可以在/data$i($i=1..7)下建立自己的用户名为子目录,对于一些公共测试数据,可以不放在用户子目录下,而直接放在/datai下,供大家使用,避免存放大量重复的数据。
尤其是同一导师的学生,尽量减少重复下载和存储测试数据。
/data$i($i=1..7)是挂接在Gpu10$i结点上的存储,/data 挂接在头结点本地。
因此如果有大量数据需要读写并且对IO 速度有要求的应用,可以考虑把数据存放于某个mount点,比如/data3,然后提交job时使用参数#PBS -l nodes=Gpu103:gpus=1则可以使job运行在Gpu103结点。
这样数据和代码运行于同一节点,IO会避开nfs网络操作。
但指定节点操作削弱了pbs系统的排队功能,可能会导致任务失败。
因此除非有特殊要求,一般不建议这么做。
7.关于GPU集群多核心使用情况使用GPU多核心进行运算,可以让job缩短完成时间,避免过长的等待时间,从而充分发挥GPU的集群优势。
但经过测试表明,如果对显存没有特别大的要求,使用单核心的效率还是比多核心要高,因此大家应根据实际情况决定申请job类型。
另使用多核心需要注意以下几点:1)在申请脚本文件里加入资源申请参数以及打印相应分配的gpu情况,便于调试:#PBS -l nodes=1:gpus=2:Decho This job runs on following nodes and gpus:cat $PBS_NODEFILEcat $PBS_GPUFILE以上是申请一个结点2个GPU核心的参数。
2)在运行的程序脚本中加入调用多GPU参数,例如caffe 中需要加入-gpu=all这样的参数:$caffe train -solver solver.txt -gpu=all如果不加此参数,可能会导致请求的gpu数和实际使用的gpu数不一致,影响排队系统的工作。
3)提交job后可以使用chk_gpu查看占用的GPU情况,使用chk_gpuused <节点名> 查看结点GPU使用率和显存使用情况,节点名为Gpu101(或101)等。
4)如果发现请求的gpu数和实际使用的gpu数不一致的job将被清除。
5)(本节内容自2016.12.9后已经调整,不再启用)由于多个GPU核心是不同的CPU控制,因此在不同的CPU 控制的GPU核心之间是socket连接的,不是PCIe桥接或PCI内部交换的,而caffe等软件目前可能不支持socket连接的多GPU核心运算。
为了解决这个问题,目前做如下规定:(a)使用单核的job必须加参数S,如:#PBS -l nodes=1:gpus=1:S(b)使用双核的job必须加参数D,如:#PBS -l nodes=1:gpus=2:D(c)使用>=3核的job必须加参数M,如:#PBS -l nodes=1:gpus=6:M可以采用命令chk_gpu 来查看各个结点已经使用的GPU 核心详细情况。
由于服务器两CPU管理的GPU并不平均,0-1核心是一个CPU管理,2-7核心是另一个CPU管理。
因此,为了防止job 跨不同CPU管理的核心,作以下要求:对于S、D类型的job 可以随时提交队列进行排队;对于M类型的job (仅5,6,7结点支持)不能轻易排队,必须要看chk_gpu 显示的detail 情况,来决定提交2:M还是6:M类型job。
具体申请原则规定如下:a)S、D 类型job可以随时提交排队;b)对M类型节点,如果有0,1位GPU空闲,则可提交2:M类型job;如果有3~7位GPU空闲,则可提交6:M类型job;如果0~7位GPU都空闲,则必须先提交2:M类型job,再提交6:M类型job,次序不可颠倒。
b)如果有6:M类型job排队,则M型节点2~7位GPU原则上是不允许提交 2:M型job的,如果是暂时占用,那么当6:M 所需要的资源满足时,暂时占用的job即使没有完成,也会被删除。
更新日志:2016.12.9增加了新的结点Gpu108和Gpu109,每个结点8块K80卡,16个GPU核心。