神 威 太 湖 之 光 系 统 快 速 使 用 指 南 国 家 超 级 计 算 无 锡 中 心 2016 年 8 月 15 日
1. 系 统 简 介 神 威 太 湖 之 光 计 算 机 系 统 是 由 国 家 并 行 计 算 机 工 程 技 术 研 究 中 心 在 国 家 863 计 划 支 持 下 研 制 的 新 一 代 超 级 计 算 机 系 统 根 据 2016 年 6 月 20 日 国 际 TOP500 排 名 公 布 的 最 新 数 据, 全 系 统 峰 值 运 算 速 度 为 每 秒 12.54 亿 亿 次, 持 续 运 算 速 度 为 每 秒 9.3 亿 亿 次, 均 位 居 世 界 第 一 性 能 功 耗 比 每 瓦 60.5 亿 次, 与 其 他 相 同 量 级 计 算 机 相 比 节 能 60% 以 上 神 威 太 湖 之 光 是 世 界 上 首 台 峰 值 运 算 性 能 超 过 十 亿 亿 次 量 级 的 超 级 计 算 机, 也 是 我 国 第 一 台 全 部 采 用 国 产 处 理 器 构 建 的 世 界 第 一 的 超 级 计 算 机 神 威 太 湖 之 光 超 级 计 算 机 采 用 了 由 国 家 核 高 基 重 大 专 项 支 持 的 申 威 26010 众 核 处 理 器, 该 处 理 器 由 国 家 高 性 能 集 成 电 路 设 计 中 心 采 用 自 主 核 心 技 术 成 功 研 制, 采 用 64 位 自 主 申 威 指 令 系 统,260 核, 核 心 工 作 频 率 1.45GHz, 峰 值 性 能 每 秒 超 过 3 万 次 浮 点 结 果, 性 能 指 标 世 界 领 先 1.1. 用 户 可 用 资 源 1.1.1. 国 产 高 速 计 算 系 统 : 申 威 26010 处 理 器 个 数 ( 计 算 节 点 数 ):40960 申 威 26010 处 理 器 核 组 数 :163840( 基 本 收 费 单 位 ) 每 个 计 算 节 点 32GB 内 存, 每 个 核 组 可 使 用 8GB 内 存 峰 值 性 能 125PFops, 适 合 有 源 代 码 的 科 学 与 工 程 计 算 1.1.2. 商 用 辅 助 计 算 系 统 : 980 台 普 通 计 算 节 点, 每 个 计 算 节 点 24 核 心 128GB 内 存 32 台 胖 节 点, 每 个 节 点 8 路 16 核 心 1TB 内 存 峰 值 性 能 1PFops, 提 供 工 业 设 计 等 商 用 软 件 计 算 服 务 - 1 -
1.1.3. 通 信 网 络 带 宽 : 双 向 14GB/s 国 产 高 速 计 算 系 统 :14GB/s 商 用 普 通 计 算 节 点 :14GB/s 商 用 胖 节 点 :28GB/s 1.1.4. 存 储 磁 盘 空 间 : 国 产 高 速 计 算 系 统 :10PB 商 用 辅 助 计 算 系 统 :5PB + 10PB 云 存 储 系 统 :5PB 1.2. 申 威 26010 众 核 处 理 器 DDR3 DDR3 imc 0 1 imc (8 8) (8 8) PCIe 3.0 (8 8) (8 8) imc 2 3 imc DDR3 DDR3 申 威 众 核 处 理 器 采 用 片 上 融 合 的 异 构 体 系 结 构, 由 4 个 核 组 构 成, 每 个 核 组 包 括 1 个 主 核 ( 运 算 控 制 核 心 ) 和 64 个 从 核 ( 核 心 阵 列 ) 整 芯 片 共 260 个 计 算 核 心 主 核 主 频 为 1.45GHz, 每 核 组 内 存 8GB,L1 CACHE 大 小 为 32KB,L2 CACHE( 数 据 CACHE 和 指 令 CACHE 混 合 ) 大 小 为 256KB 从 核 主 频 为 1.45GHz, 可 以 通 过 gd/gst 直 接 离 散 访 问 主 存, 也 可 以 通 过 DMA 方 式 批 量 访 问 主 存, 从 核 阵 列 之 间 可 以 采 用 寄 存 器 通 信 方 式 进 行 通 信 从 核 局 部 - 2 -
存 储 空 间 大 小 为 64KB, 指 令 存 储 空 间 为 16KB 1.3. 语 言 环 境 神 威 太 湖 之 光 系 统 语 言 环 境 主 要 包 括 四 个 组 成 部 分, 如 下 图 所 示 基 础 编 程 语 言 C C++ Fortran 并 行 编 程 语 言 / 接 口 MPI 3.0 OpenMP 3.1 OpenACC 2.0 加 速 线 程 库 用 户 使 用 环 境 并 行 开 发 环 境 SWACC 编 译 系 统 MPI 支 撑 环 境 基 础 编 程 环 境 / 工 具 基 础 编 译 系 统 C 基 础 函 数 库 基 础 数 学 库 性 能 优 化 工 具 FORTRAN C++ 高 性 能 扩 展 数 学 函 数 库 自 动 向 量 化 / 并 行 化 1) 基 础 编 程 语 言 提 供 主 流 的 基 础 编 程 语 言 支 持, 包 括 :C 语 言, 支 持 C99 标 准 C++ 语 言, 支 持 C++03 标 准, 并 提 供 支 持 C++11 标 准 的 SWGCC 编 译 环 境 ( 从 核 不 支 持 C++) Fortran 语 言, 支 持 Fortran2003 标 准 中 主 要 的 功 能, 满 足 实 际 课 题 需 求 2) 并 行 编 程 语 言 / 接 口 提 供 与 国 际 接 轨 的 并 行 编 程 标 准 支 持, 包 括 MPI3.0 OpenMP3.1 Pthreads OpenACC2.0, 支 持 消 息 并 行 模 型 共 享 编 程 模 型 加 速 编 程 模 型, 满 足 科 学 计 算 课 题 移 植 和 开 发 的 多 样 性 需 要 同 时 提 供 自 主 设 计 的 加 速 线 程 库 编 程 接 口, 满 足 部 分 追 求 极 致 性 能 的 课 题 开 发 需 求 3) 用 户 使 用 环 境 提 供 并 行 开 发 环 境, 以 图 形 界 面 的 方 式 提 供 编 辑 编 译 调 试 性 能 监 测 于 一 体 的 使 用 环 境 同 时 支 持 以 字 符 界 面 的 方 式 使 用 Sunway OpenACC 编 译 系 统 MPI 支 撑 环 境 等 完 成 基 本 的 开 发 过 程, 满 足 不 同 用 户 的 使 用 习 惯 - 3 -
4) 基 础 编 程 环 境 基 础 编 程 环 境 是 所 有 上 层 语 言 及 工 具 的 基 础, 提 供 基 础 语 言 主 从 异 构 编 程 基 础 函 数 库 自 动 向 量 化 / 并 行 化 等 支 持, 提 供 丰 富 高 效 的 编 译 优 化 功 能 1.4. 用 户 使 用 模 式 系 统 所 提 供 的 主 要 的 用 户 使 用 模 式 共 两 种 : 1) 核 组 私 有 模 式 : 神 威 太 湖 之 光 上 主 要 使 用 的 模 式 2) 全 片 共 享 模 式 : 满 足 部 分 课 题 的 大 内 存 需 求 每 种 模 式 中 可 支 持 多 种 具 体 的 使 用 方 式, 具 体 如 下 表 所 示 ( 注 L1: 第 一 级 并 行 ;L2: 第 二 级 并 行 ;L3: 第 三 级 并 行 ) 序 号 分 类 使 用 方 式 应 用 场 景 纯 主 核 应 用, 每 个 主 核 运 行 一 L1: 4 个 MPI 进 程 核 组 私 有 个 MPI 进 程 1 模 式 L1: 4 个 MPI 进 程 主 要 的 使 用 方 式 ; 主 核 和 从 核 L2: 4 个 从 核 组 (OpenACC/Athread) 组 一 对 一 使 用 纯 主 核 应 用,MPI 私 有 空 间 内 L1: 1/2 个 MPI 进 程 存 需 求 大 ; 全 片 或 2 个 核 组 的 内 存 供 1 个 MPI 进 程 使 用 L1: 1 个 MPI 进 程 L2: 4 个 线 程 (OMP/Pthreads) 纯 主 核 应 用, 两 级 并 行 纯 主 核 应 用, 两 级 并 行 ; L1: 2 个 MPI MPI 进 程 私 有 空 间 内 存 需 求 L2: 2 个 线 程 (OMP/Pthreads) 大 2 MPI 私 有 空 间 内 存 需 求 大, 使 全 片 共 享 L1: 1/2 个 MPI 进 程 用 从 核 ; 模 式 L2: 1/2 个 核 组 (OpenACC/Athread) 全 片 的 内 存 或 2 个 核 组 的 内 存 供 1 个 MPI 进 程 使 用 L1: 1/2 个 MPI L2: OMP/pthreads L3: Athread 三 级 并 行 课 题 满 足 少 部 分 课 题 大 规 模 扩 展 效 率 和 大 内 存 需 求 模 式 2 的 上 述 用 法 中 均 包 含 一 种 MPI 的 master 使 用 模 式, master 模 式 即 0 号 进 程 独 占 一 个 节 点 ( 内 存 需 求 大 ), 其 他 节 点 为 正 常 使 用 - 4 -
神威 太湖之光 计算机系统快速使用指南 2. 并行模式 2.1. 主从加速并行 图 2-1 主从加速并行示意图 大部分课题采用的两级并行方式 根据实际应用课题的计算核心进行众核加 速 主核主要完成不可众核并行部分的计算以及通信 在从核进行任务计算时 主核等待 2.2. 主从协同并行 图 2-2 主从协同并行示意图 主核和从核作为对等的个体进行并行计算 根据各自计算能力进行负载分配 共同完成核心段的计算 如果课题对 LDM 需求不高 在 LDM 范围内从核可以 - 5 -
神威 太湖之光 计算机系统快速使用指南 完成整个核心的计算 则该方式可以减少访存开销 并能够获得较好的并行效果 2.3. 主从异步并行 图 2-3 主从异步并行示意图 在从核进行加速计算的同时 主核完成其他计算 通信或 I/O 等操作 提高 主从协作的并行效率 2.4. 主从动态并行 图 2-4 主从动态并行示意图 主核负责任务分配 从核负责取得新计算任务 完成计算 写回计算结果 该方法适合从核计算任务的计算时间不固定情况 可以考虑采用两级主从并行方 式进行大规模并行计算 第一级是进程级的主从并行 第二级为异构众核处理器 核组内部的主从并行 - 6 -
3. 众 核 并 行 实 例 ( 编 译 提 交 运 行 ) 3.1. 使 用 加 速 编 程 库 3.1.1. Fortran 示 例 差 在 本 小 节 中, 将 给 出 一 个 小 算 例 针 对 两 个 数 组 赋 值 并 求 解 对 应 元 素 的 方 program main impicit none rea,dimension(imin:imax,jmin:jmax):: a,b,c integer :: i,j,k!init part do j= jmin,jmax do i= imin,imax a(i,j)=i+j-0.8888 b(i,j)=i+j+7.7777 end do end do!excute do j= jmin,jmax do i= imin,imax c(i,j)=a(i,j)*b(i,j)- b(i,j)*b(i,j) end do end do end 该 段 代 码 众 核 并 行 后 将 分 为 两 个 部 分, 即 主 核 代 码 和 从 核 代 码 主 核 代 码 如 下 : program main impicit none integer:: i,j rea,dimension(imin:imax,jmin:jmax)::a,b,c - 7 -
integer,externa :: save_fun common /shared_g1/ a,b,c! 指 定 从 核 函 数 名! 共 享 数 组 end do j= jmin,jmax do i= imin,imax a(i,j)=i+j-0.8888 b(i,j)=i+j+7.7777 end do end do ca athread_init() ca athread_spawn(save_fun, 1) ca athread_join() ca athread_hat()! 初 始 化 从 核! 从 核 并 行 任 务 开 始! 等 待 从 核 任 务 结 束! 结 束 从 核 从 核 部 分 代 码 如 下 : subroutine fun impicit none rea,dimension(imin:imax,jmin:jmax)::a,b,c common /shared_g1/ a,b,c! 共 享 变 量 integer,dimension(imin:imax):: a_save,b_save,c_save! 丛 核 局 存 变 量 申 请 integer i,j integer savecore_id,repy!$omp threadprivate (/oca_g1/)! 从 核 编 译 引 导 语 句 ca get_myid(savecore_id)! 获 得 从 核 逻 辑 id do j= jmin,jmax if(mod(j,corenum)+1.eq.savecore_id)then! 从 核 计 算 任 务 绑 定 repy=0 ca athread_get(0,a(imin,j),a_save(imin), (imax-imin+1)*4,repy,0,0,0)! 读 入 数 据 ca athread_get(0,b(imin,j),b_save(imin), (imax-imin+1)*4,repy,0,0,0) do whie (repy.ne.2) end do do i= imin,imax c_save(i)=a_save(i)*a_save(i)+b_save(i)*b_save(i) end do - 8 -
repy=0 ca athread_put(0,c_save(imin),c(imin,j), (imax-imin+1)*4,repy,0,0)! 写 回 数 据 do whie (repy.ne.1) end do end if end do return end 主 从 核 分 开 编 译 : sw5f90 -save -c save.f90 sw5f90 -host c master.f90 sw5f90 -O3 -hybrid *.o -o test 从 核 代 码 用 sw5f90 -save 编 译, 主 核 代 码 用 使 用 sw5f90 -host 编 译, 使 用 sw5f90 -hybrid 进 行 链 接 生 成 最 终 的 可 执 行 文 件 提 交 作 业 命 令 如 下 : bsub -I -b -q queue_name -n 1 -cgsp 64 -share_size 4096 -host_stack 128./test 其 中 : -I 选 项 表 示 提 交 交 互 式 作 业, 使 作 业 输 出 在 作 业 提 交 窗 口 ; -b 表 示 从 核 函 数 栈 变 量 放 在 从 核 局 部 存 储 上, 该 选 项 为 获 取 加 速 性 能 必 须 的 提 交 选 项 ; -q 向 指 定 的 队 列 中 提 交 作 业 ; -n 指 定 需 要 的 所 有 主 核 数 ; -cgsp 指 定 每 个 核 组 内 需 要 的 从 核 个 数, 指 定 时 该 参 数 必 须 <=64; -share_size 指 定 核 组 共 享 空 间 大 小, 一 般 最 大 可 以 用 到 7600MB; -host_stack 指 定 主 核 栈 空 间 大 小, 默 认 为 8M, 一 般 设 置 为 128MB 以 上 从 上 面 的 典 型 众 核 代 码 可 以 看 出, 众 核 并 行 时 需 要 将 核 心 计 算 相 关 的 数 据 通 - 9 -
过 common 进 行 共 享 主 核 程 序 中 首 先 初 始 化 加 速 线 程 库, 然 后 调 用 需 要 执 行 的 从 核 程 序 的 接 口, 等 待 从 核 计 算 结 束, 最 后 结 束 加 速 线 程 库 从 核 程 序 中 主 要 实 现 共 享 数 据 的 读 入 计 算 和 回 写 对 主 从 核 而 言, 共 享 存 储 空 间 都 是 可 见 的, 这 也 意 味 着 主 从 核 都 可 以 直 接 访 问 和 修 改 共 享 存 储 空 间 的 数 据 采 用 Fortran 编 写 程 序 时, 数 据 共 享 通 常 采 用 common 方 式 实 现, 因 此 一 定 要 保 持 相 应 commnon 名 字 和 数 组 大 小 的 一 致 性 通 过 common 的 方 式 实 现 数 据 的 共 享 数 组 时, 对 数 组 的 大 小 是 有 要 求 的 即 数 组 的 大 小 必 须 是 固 定 的 对 于 动 态 大 小 的 数 组, 可 直 接 common 共 享 数 组 指 针, 或 者 common 指 向 该 数 组 的 Cray 指 针 下 面 给 出 三 种 common 例 子 n=10;m=10 rea v(n,m) common/fun_v / v rea,pointer v(:,:) common/fun_v / v rea v_host(n,m) pointer(v_p,v_host) common/fun_v / v_p v_p=oc(v(1,1)) 三 种 common 方 式 的 DMA 通 信 性 能 存 在 差 异, 实 验 结 果 表 明, 数 组 指 针 的 DMA 性 能 最 差,Cray 指 针 次 之, 静 态 数 组 最 优 3.1.2. C 示 例 主 核 代 码 如 下 : #incude <stdib.h> #incude <stdio.h> #incude <athread.h> #incude <sys/types.h> #incude <sys/stat.h> #incude <fcnt.h> extern SLAVE_FUN(func)(); static inine unsigned ong rpcc() { - 10 -
unsigned ong time; asm("rtc %0": "=r" (time) : ); return time; } #define J 64 #define I 1000 doube a[j][i],b[j][i],c[j][i],cc[j][i]; doube check[j]; unsigned ong counter[j]; int main(void) { int i,j; doube checksum; doube checksum2; unsigned ong st,ed; printf("!!!!!!!!!! BEGIN INIT!!!!!!!!!!\n");ffush(NULL); for(j=0;j<j;j++) for(i=0;i<i;i++){ a[j][i]=(i+j+0.5); b[j][i]=(i+j+1.0); } st=rpcc(); for(j=0;j<j;j++) for(i=0;i<i;i++){ cc[j][i]=(a[j][i])/(b[j][i]); } ed=rpcc(); printf("the host counter=%d\n",ed-st); checksum=0.0; checksum2=0.0; athread_init(); st=rpcc(); - 11 -
athread_spawn(func,0);//ffush(null); athread_join(); ed=rpcc(); printf("the manycore counter=%d\n",ed-st); printf("!!!!!!!!!! END JOIN!!!!!!!!!\n");ffush(NULL); for(j=0;j<j;j++) for(i=0;i<i;i++){ checksum=checksum+c[j][i]; checksum2=checksum2+cc[j][i]; } printf("the master vaue is %f!\n",checksum2); printf("the manycore vaue is %f!\n",checksum); athread_hat(); printf("!!!!!!!!!! END HALT!!!!!!!!!\n");ffush(NULL); } 从 核 代 码 如 下 : #incude <stdio.h> #incude <math.h> #incude <string.h> #incude "save.h" #define J 64 #define I 1000 thread_oca voatie unsigned ong get_repy,put_repy; thread_oca voatie unsigned ong start,end; thread_oca int my_id; thread_oca doube a_save[i],b_save[i],c_save[i]; extern doube a[j][i],b[j][i],c[j][i]; extern unsigned ong counter[64]; void func() { - 12 -
int i,j; my_id = athread_get_id(-1); get_repy = 0; athread_get(pe_mode,&a[my_id][0],&a_save[0],i*8,&get_repy,0,0,0); athread_get(pe_mode,&b[my_id][0],&b_save[0],i*8,&get_repy,0,0,0); whie(get_repy!=2); for(i=0;i<i;i++){ c_save[i]=a_save[i]/b_save[i]; } put_repy=0; athread_put(pe_mode,&c_save[0],&c[my_id][0],i*8,&put_repy,0,0); whie(put_repy!=1); } 编 译 链 接 过 程 : sw5cc -host -c master.c sw5cc -save -c save.c sw5cc -hybrid master.o save.o -o test 提 交 选 项 同 Fortran 示 例, 在 此 不 再 赘 述 3.2. 使 用 OpenACC 下 面 介 绍 如 何 使 用 OpenACC 将 上 面 的 程 序 移 植 到 众 核 平 台 program main impicit none rea,dimension(1:512,1:64):: a, b, c integer :: i,j!init part do j= 1,64 do i= 1,512 a(i,j)=i+j-0.8888-13 -
b(i,j)=i+j+7.7777 end do end do!excute!$acc PARALLEL LOOP COPYIN(a, b) COPYOUT(c) LOCAL(i) do j= 1,64 do i= 1,512 c(i,j)=a(i,j)*b(i,j)- b(i,j)*b(i,j) do end do!$acc END PARALLEL LOOP end program 将 需 要 使 用 众 核 加 速 执 行 的 执 行 (execute) 部 分 的 循 环 的 前 后 使 用 OpenACC 加 速 编 译 指 示 进 行 标 注, 如 代 码 中 加 粗 部 分 所 示, 其 中 PARALLEL 表 明 该 部 分 代 码 是 需 要 加 速 执 行 的 并 行 代 码 ;LOOP 表 示 下 面 紧 跟 着 的 j 循 环 需 要 在 加 速 线 程 间 进 行 并 行 划 分 ;COPYIN(a,b) 表 明 a b 数 组 需 要 拷 贝 到 LDM, 因 为 a b 数 组 是 只 读, 不 需 要 更 新 回 主 存 ;COPYOUT(c) 表 明 c 数 组 在 计 算 结 束 后 需 要 拷 贝 回 主 存 ;LOCAL(i) 表 明 变 量 i 是 加 速 线 程 私 有 的 并 且 放 入 LDM 中 使 用 swafort 进 行 编 译, 运 行 方 法 与 3.1 中 类 似 该 程 序 的 执 行 效 果 是, 如 果 以 64 个 加 速 线 程 运 行, 则 每 个 线 程 会 执 行 64 个 j 循 环 中 的 一 个, 相 应 的 会 将 a b c 数 组 对 应 的 数 据 在 LDM 中 申 请 空 间, 并 执 行 对 应 的 数 据 拷 贝 和 计 算 操 作 初 始 化 部 分 的 代 码 也 可 以 参 照 该 方 法 进 行 移 植 详 细 用 法 请 参 见 OpenACC 用 户 手 册 3.3. 全 片 共 享 模 式 示 例 全 片 共 享 模 式 支 持 主 从 混 合 编 译 的 课 题, 在 混 合 链 接 时 需 要 使 用 选 项 -ashare 根 据 用 户 的 需 求, 全 片 共 享 模 式 分 为 master 模 式 和 非 master 模 式, 应 用 程 序 运 行 时, 作 业 管 理 根 据 选 项 给 用 户 应 用 程 序 分 配 内 存 - 14 -
3.3.1. 全 片 共 享 master 模 式 如 果 用 户 应 用 程 序 在 实 际 运 行 时, 主 进 程 ( 一 般 规 定 为 0 进 程 ) 的 内 存 需 求 较 大 ( 大 于 7500M), 其 他 进 程 的 内 存 需 求 相 对 较 小 ( 小 于 7500M), 这 种 情 况 下, 建 议 选 择 使 用 master 模 式 提 交 作 业, 下 面 通 过 实 例 进 行 说 明 #incude <stdio.h> #incude <stdib.h> #incude <unistd.h> #incude "mpi.h" #define DIM_I 1024 #define DIM_J 1024 #define DIM_K 256 int main(int argc, char *argv[]) { unsigned ong *a,*b,*c,*d; unsigned ong sum_tota,size1; int myid, numprocs,i; extern void save_func(); MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); sum_tota=0; if(myid==0){ size1=dim_i*dim_j*dim_k; a=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); b=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); c=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); d=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); for(i=0;i<size1;i++){ a[i] = 1; b[i] = 2; c[i] = 3; d[i] = 4; sum_tota = sum_tota + a[i] + b[i]/2 + c[i]/3 + d[i]/4; } - 15 -
sum_tota = sum_tota/4; if(sum_tota==size1){ size1=4*8*size1/(1024*1024); printf("process %d Memery size : %dmb and sum = %d \n",myid,size1,sum_tota); } } ese{ size1=dim_i*dim_j; a=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); b=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); c=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); d=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); for(i=0;i<size1;i++){ a[i] = 1; b[i] = 2; c[i] = 3; d[i] = 4; sum_tota = sum_tota + a[i] + b[i]/2 + c[i]/3 + d[i]/4; } sum_tota = sum_tota/4; if (sum_tota==size1){ size1=4*8*size1/(1024*1024); printf("process %d Memery size : %dmb and sum = %d \n",myid,size1,sum_tota); } } MPI_Finaize(); } 在 程 序 中, 数 组 数 据 类 型 为 ong, 在 实 际 运 行 时,0 进 程 需 要 的 总 内 存 需 求 是 8G, 其 他 进 程 内 存 需 求 较 小 用 户 在 提 交 程 序 时, 为 了 满 足 内 存 需 求,0 进 程 需 要 使 用 全 片 共 享 模 式, 而 其 他 进 程 内 存 需 求 小, 建 议 使 用 master 模 式 提 交 作 业 : bsub -b -I -pr -q q_sw_yyz -n 5 -cgsp 64 -amaster -host_stack0 256 -cross_size0 10000 -host_stack 256 -cross_size 2500./a.out 上 述 提 交 命 令 行,-amaster 说 明 程 序 需 要 使 用 master 全 片 共 享 模 式, -cross_size0 指 定 0 进 程 所 需 内 存 大 小,-cross_size 指 定 其 他 进 程 所 需 内 存 大 小 - 16 -
3.3.2. 全 片 共 享 非 master 模 式 #incude <stdio.h> #incude <stdib.h> #incude <unistd.h> #incude "mpi.h" #define DIM_I 1024 #define DIM_J 1024 #define DIM_K 256 int main(int argc, char *argv[]) { unsigned ong *a,*b,*c,*d; unsigned ong sum_tota,size1; int myid, numprocs,i; extern void save_func(); MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); sum_tota=0; size1=dim_i*dim_j*dim_k; a=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); b=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); c=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); d=(unsigned ong*)maoc(size1*sizeof(unsigned ong)); for(i=0;i<size1;i++){ a[i] = 1; b[i] = 2; c[i] = 3; d[i] = 4; sum_tota = sum_tota + a[i] + b[i]/2 + c[i]/3 + d[i]/4; } sum_tota = sum_tota/4; if(sum_tota==size1){ size1=4*8*size1/(1024*1024); printf("process %d Memery size : %dmb and sum = %d \n",myid,size1,sum_tota); } - 17 -
MPI_Finaize(); } 程 序 中 主 要 数 组 的 数 据 类 型 为 ong, 每 个 进 程 的 内 存 需 求 是 8G 用 户 在 提 交 程 序 时, 为 了 满 足 内 存 需 求, 每 个 进 程 都 需 要 使 用 全 片 共 享 模 式, 建 议 使 用 非 master 模 式 提 交 作 业 : bsub -b -I -pr -q q_sw_yyz -n 5 -np 1 -cgsp 64 -sw3runarg "-a 1" -host_stack 256 -cross_size 10000./a.out 上 述 提 交 命 令 行, 通 过 -sw3runarg "-a 1" -np 1 实 现 全 片 共 享,-cross_size 指 定 进 程 所 需 内 存 大 小 - 18 -
4. 编 译 环 境 4.1. 国 产 高 速 计 算 系 统 4.1.1. 基 础 编 译 器 1) 编 译 命 令 : 语 言 / 目 标 核 心 运 算 控 制 核 心 运 算 核 心 混 合 链 接 C sw5cc -host sw5cc -save sw5cc -hybrid C++ sw5cc -host 不 支 持 sw5cc -hybrid Fortran sw5f90 -host sw5f90 -save sw5f90 -hybrid 2) 常 用 编 译 选 项 : 选 项 作 用 -c 为 每 个 源 文 件 生 成 一 个 中 间 目 标 文 件, 但 是 不 进 行 链 接 -g 为 之 后 的 调 试 生 成 调 试 符 号 信 息 -I<dir> 为 预 处 理 头 文 件 添 加 查 找 < 路 径 > -<ibrary> 在 链 接 阶 段 指 定 需 要 链 的 库 文 件 -L<dir> 为 链 接 阶 段 添 加 查 找 < 路 径 > -m 在 链 接 阶 段 使 用 ibm 数 学 库, 在 C 程 序 中 若 使 用 了 exp og sin 及 cos 等 函 数 则 需 要 调 用 该 库 -o <fiename> 指 定 生 成 的 可 执 行 ( 库 ) 文 件 的 名 字 -O1~-O3 -pg -msimd 生 成 高 级 优 化 的 可 执 行 代 码 为 gprof 分 析 程 序 生 成 反 馈 信 息 打 开 simd 功 能 模 块 - 19 -
-OPT: 浮 点 异 常 处 理 (Fortran) IEEE_arch=1 -mieee -convert big_endian -freeform -fixedform 浮 点 异 常 处 理 (C++) 按 照 大 端 读 写 文 件 (Fortran) Fortran 自 由 书 写 格 式 Fortran 固 定 书 写 格 式 3)C 程 序 编 译 链 接 过 程 : sw5cc -host -c master.c sw5cc -save -c save.c sw5cc -hybrid master.o save.o -o test 4)Fortran 编 译 链 接 过 程 : sw5f90 -host -c master.f90 sw5f90 -save -c save.f90 sw5f90 -hybrid master.o save.o -o test 4.1.2. OpenACC 编 译 器 1) 编 译 命 令 : FORTRAN 编 译 器 :swafort[ 选 项 ] 文 件 名 FORTRAN 编 译 指 示 格 式 : 添 加!$acc 编 译 指 示 名 [ 子 语 [[,] 子 语 ]...] C 语 言 编 译 器 :swacc[ 选 项 ] 文 件 名 C 语 言 编 译 指 示 格 式 : 添 加 #pragma acc 编 译 指 示 名 [ 子 句 [ [,] 子 句 ]...] 2) 编 译 选 项 : 编 译 选 项 - --(h hep) -SCFags 说 明 显 示 帮 助 指 定 的 选 项 将 被 传 递 到 编 译 device 程 序 的 串 行 编 译 器, 若 同 时 传 递 多 个 选 项 需 使 用 逗 号 进 行 分 割, 中 间 不 能 有 空 格, 例 如 : swafort -SCFags -extend_source,-o3 heo.c - 20 -
-HCFags -LFags -priv -priv:ignore_ca -arrayanayse -dmanayse -preinine -preinine:a -dmareuse -autoswap -v -version -Minfo -keep -dumpcommand 指 定 的 选 项 将 被 传 递 到 host 程 序 的 基 础 编 译 器, 若 同 时 传 递 多 个 选 项 需 使 用 逗 号 进 行 分 割, 中 间 不 能 有 空 格 指 定 的 选 项 将 被 传 递 到 链 接 器, 若 同 时 传 递 多 个 选 项 需 使 用 逗 号 进 行 分 割, 中 间 不 能 有 空 格 辅 助 选 项 : 对 加 速 区 进 行 私 有 化 变 量 分 析, 给 出 变 量 的 读 写 属 性, 遇 到 无 法 识 别 的 函 数 调 用 则 分 析 终 止 辅 助 选 项 : 对 加 速 区 进 行 私 有 化 变 量 分 析, 给 出 变 量 的 读 写 属 性, 忽 略 加 速 区 内 可 能 存 在 的 函 数 调 用 的 影 响 辅 助 选 项 : 数 组 访 问 模 式 分 析, 可 以 给 出 可 copy 的 数 组 的 建 议 辅 助 选 项 : 设 备 内 存 使 用 情 况 分 析, 编 译 之 后 在 运 行 时 会 反 馈 各 加 速 计 算 区 内 对 设 备 内 存 的 使 用 情 况 及 相 关 建 议 辅 助 选 项 : 对 含 有 #inine 指 示 的 函 数 调 用 语 句 中 的 函 数 进 行 内 联, 不 对 其 他 的 加 速 指 示 进 行 处 理, 主 要 用 于 辅 助 函 数 内 联 辅 助 选 项 : 在 -preinine 的 基 础 上, 对 同 一 个 函 数 内 的 所 有 同 名 的 被 调 用 函 数 进 行 内 联 针 对 data copy 指 示, 自 动 进 行 数 据 重 用 优 化 自 动 对 适 合 的 数 组 进 行 转 置 处 理 和 优 化 显 示 编 译 器 和 运 行 时 库 的 版 本 号 显 示 编 译 器 关 于 程 序 的 分 析 信 息 保 留 编 译 的 中 间 文 件 将 对 中 间 文 件 的 编 译 命 令 输 出 到 dumpfie 中 [dumpfie] 4.1.3. MPI 1) 编 译 命 令 : FORTRAN 编 译 器 :mpif90 [ 选 项 ] 文 件 名 C 语 言 编 译 器 :mpicc [ 选 项 ] 文 件 名 C++ 语 言 编 译 器 :mpicc [ 选 项 ] 文 件 名 2) 常 用 编 译 选 项 : 参 考 4.1.1 节 基 础 编 译 器 选 项 - 21 -
4.2. 商 用 辅 助 计 算 系 统 (X86 集 群 ) 4.2.1. inte 基 础 编 译 器 1) 编 译 命 令 : FORTRAN 编 译 器 :ifort [ 选 项 ] 文 件 名 C 语 言 编 译 器 : icc [ 选 项 ] 文 件 名 C++ 语 言 编 译 :icpc [ 选 项 ] 文 件 名 2) 编 译 选 项 : 编 译 选 项 说 明 -O1 最 大 优 化 速 度, 但 是 关 闭 一 些 会 增 大 文 件 大 小 而 对 速 度 提 升 很 小 的 选 项 -O2 最 大 优 化 速 度 ( 默 认 ) -O3 最 大 优 化 速 度, 并 打 开 更 多 激 进 的 但 不 是 对 所 有 程 序 都 能 提 高 性 能 的 选 项 -O 同 -O2 -Os 打 开 优 化 选 项, 但 是 关 闭 一 些 会 增 大 文 件 大 小 而 对 速 度 提 升 很 小 的 选 项 -O0 关 闭 优 化 选 项 -fast -Ofast 等 同 打 开 -xhost -O3 -ipo -no-prec-div -static 等 同 打 开 -O3 -no-prec-div optimizations -fno-aias 不 采 用 代 码 混 淆 ( 用 于 保 护 代 码, 防 反 编 译 ) -fno-fnaias -noib-inine 不 采 用 内 部 函 数 混 淆, 只 混 淆 外 部 调 用 禁 用 固 有 函 数 在 内 部 扩 展 -ftz 将 非 正 常 数 值 置 为 0 -fp-mode precise -convert big_endian -assume byterec -mcmode=arge -free -fixed 保 证 数 值 不 变 优 化 按 照 大 端 读 写 文 件 确 定 文 件 读 写 按 照 字 节 或 长 字 单 位 编 译 所 需 内 存 大 于 2GB 时 使 用 该 选 项 Fortran 自 由 书 写 格 式 Fortran 固 定 书 写 格 式 - 22 -
4.2.2. inte 并 行 编 译 器 1) 编 译 命 令 : FORTRAN 编 译 器 :mpiifort [ 选 项 ] 文 件 名 C 语 言 编 译 器 :mpiicc [ 选 项 ] 文 件 名 C++ 语 言 编 译 器 :mpiicpc [ 选 项 ] 文 件 名 2) 编 译 选 项 : 参 考 4.2.1 节 inte 基 础 编 译 器 的 编 译 选 项 5. 作 业 管 理 5.1. 基 本 概 念 5.1.1. 作 业 与 作 业 ID 作 业 : 是 用 户 编 写 的 经 过 编 译 后 并 在 主 机 上 运 行 的 用 户 可 执 行 程 序 或 脚 本 用 户 作 业 程 序 的 编 写 可 以 使 用 MPI OpenMP 等 各 种 编 程 语 言 和 环 境, 最 终 以 可 执 行 程 序 的 形 式 存 在, 并 以 作 业 的 形 式 被 提 交 到 主 机 中 运 行 任 何 作 业 都 必 须 提 交 到 某 个 指 定 的 队 列 中 调 度 运 行 ; 作 业 ID: 每 道 作 业 有 唯 一 的 作 业 ID( 整 数,JOBID), 这 也 是 作 业 的 唯 一 性 标 识 计 算 节 点 号 (nodeid): 是 计 算 节 点 的 编 号, 就 是 每 个 操 作 系 统 核 心 ( 一 个 IP 地 址 ) 所 在 CPU 的 编 号 5.1.2. 作 业 队 列 作 业 队 列 : 分 配 给 是 指 定 用 户 的 计 算 资 源, 用 户 在 作 业 提 交 时 要 指 定 作 业 队 列 名 作 业 队 列 由 管 理 员 创 建 和 管 理 由 用 户 使 用 作 业 流 程 : 所 有 用 户 运 行 课 题 以 作 业 的 形 式 提 交 到 指 定 的 队 列 中, 系 统 为 每 道 作 业 分 配 唯 一 的 作 业 ID, 作 业 在 队 列 中 排 队, 接 受 作 业 管 理 系 统 - 23 -
的 自 动 调 度 运 行 运 行 时, 根 据 作 业 服 务 环 境 的 队 列 属 性 允 许 普 通 用 户 对 作 业 进 行 人 机 交 互 控 制, 或 者 由 系 统 自 动 批 处 理 5.1.3. 作 业 类 型 1) 串 行 作 业 : 采 用 C Fortran 等 语 言 编 写 的 单 进 程 串 行 应 用 程 序 或 者 she 程 序 ; 2) 并 行 作 业 : 采 用 MPI OpenACC 等 编 程 环 境 编 写 的 多 任 务 并 行 应 用 程 序 5.1.4. 作 业 运 行 模 式 作 业 服 务 提 供 两 种 作 业 运 行 模 式 : 交 互 作 业 批 式 作 业, 由 用 户 提 交 作 业 时 决 定 1) 交 互 作 业 : 用 户 在 作 业 提 交 命 令 bsub 命 令 中 指 定 -I 参 数 选 择 交 互 作 业 服 务 模 式 作 业 提 交 后, 作 业 运 行 信 息 在 终 端 窗 口 中 实 时 输 出, 允 许 用 户 进 行 各 种 人 机 交 互 控 制 这 种 运 行 模 式 适 合 于 在 服 务 队 列 中 进 行 课 题 调 试 时 使 用 一 旦 提 交 窗 口 被 意 外 关 闭, 作 业 将 自 动 转 为 脱 机 状 态, 不 会 终 止, 用 户 可 以 通 过 作 业 联 机 命 令 (bonine) 重 新 在 终 端 窗 口 接 收 作 业 的 实 时 输 出 交 互 运 行 模 式 下, 如 果 系 统 发 现 当 前 队 列 中 的 空 闲 资 源 不 能 满 足 该 作 业 的 资 源 需 求, 作 业 提 交 时 将 自 动 报 错 退 出 2) 批 式 作 业 : 用 户 在 作 业 提 交 命 令 bsub 命 令 中 不 指 定 -I 参 数 提 交 批 式 作 业 批 作 业 提 交 方 式 后, 系 统 根 据 计 算 资 源 和 负 载 情 况 自 动 运 行, 并 将 结 果 输 出 文 件 保 存 在 文 件 系 统 中 这 种 作 业 的 特 点 是 作 业 提 交 运 行 后, 提 交 窗 口 可 以 关 闭, 作 业 运 行 不 受 任 何 影 响 作 业 一 旦 开 始 运 行, 作 业 的 标 准 输 出 和 错 误 输 出 都 将 被 自 动 重 定 向, 如 果 提 交 时 指 定 了 输 出 定 向 的 文 件, 则 将 输 出 到 对 应 的 文 件 中, 否 则 系 统 将 进 行 缓 存 作 业 运 行 过 程 中, 可 以 通 过 相 应 的 命 令 查 询 作 业 输 出 批 作 业 运 行 模 式 下, 即 使 当 前 队 列 中 的 空 闲 资 源 不 能 满 足 本 作 业 的 需 求, 作 业 将 排 队 等 待 由 于 交 互 作 业 在 实 时 终 端 窗 口 的 输 入 或 操 作 都 会 对 作 业 产 生 影 响, 所 以 相 比 之 下 批 式 - 24 -
作 业 更 适 合 业 务 课 题 的 运 行, 建 议 所 有 业 务 运 行 的 课 题 都 使 用 批 作 业 模 式 提 交 5.1.5. 作 业 运 行 状 态 PEND: 作 业 等 待 分 配 计 算 资 源 ; STARTING: 作 业 正 在 启 动 运 行 是 作 业 已 经 分 配 资 源 后 到 作 业 正 式 启 动 完 成 开 始 运 行 之 间 的 过 渡 状 态 ; RUN: 作 业 正 在 运 行 作 业 已 经 完 成 调 度 并 分 派, 作 业 占 用 的 系 统 资 源, 正 在 运 行 中 ; DONE: 作 业 正 常 完 成 并 退 出 ; EXIT: 作 业 异 常 完 成 并 退 出 ; CKPT: 作 业 正 在 系 统 级 全 透 明 保 留, 一 旦 保 留 完 成, 作 业 回 复 到 运 行 状 态 ; 5.2. 队 列 命 名 规 则 1) 国 产 高 速 计 算 系 统 :q_sw_xxxx 2) 商 用 辅 助 计 算 系 统 :q_x86_xxxx 3) 国 产 高 速 计 算 系 统 缺 省 队 列 :q_sw_expr 该 队 列 命 名 为 q_sw_expr, 主 要 用 于 用 户 程 序 的 开 发 移 植 调 试 与 优 化 使 用, 只 要 用 户 有 系 统 账 号, 就 可 以 使 用 该 队 列 资 源, 而 且 免 费, 但 有 一 定 的 限 制 : 每 个 任 务 的 并 行 规 模 不 能 超 过 16 个 核 组 每 个 任 务 的 计 算 墙 钟 时 间 不 能 超 过 1 小 时 当 用 户 完 成 程 序 的 移 植 和 优 化 后, 根 据 对 计 算 资 源 的 估 算, 再 申 请 必 要 的 计 算 资 源 进 行 课 题 的 计 算 5.3. 作 业 提 交 (bsub) 功 能 向 系 统 中 提 交 作 业 命 令 格 式 Usage: bsub [-h][-v] bsub [-f sub_script] - 25 -
-asy] bsub MEM / MIX [-I] [-p] //ist job's nodename and spe_map [-q queue_name] [-n num_procs [-master] -N num_nodes] [-np node_mpes] [-mpecg mpe_cgs] [-cgsp spe_in_cg -min_cgsp min_spe_in_cg -rtp spe_rtp [-excu -shared -cpuexcu] [-js job_proj] [-fs_proj fs_proj] [-J jobname] [-jobtype job_type] // avaiabe type: COMM / I/O / COMP / [-mpmd] [-node nodeist] [-o outfie] [-k ckpt-period-minutes] [-cross] [-switchnode nodenum_in_switch] [-midnode nodenum_in_mid] [-cabnode nodenum_in_cab] [-heath heath_eve] [-b] [-parse] [-PARSE <a master save>] [-quick] [-m vaue] [-share_size size] [-priv_size size] [-cross_size size] [-ro_size size] [-pe_stack size] [-host_stack size] [command [argument...]] - 26 -
参 数 说 明 -h 显 示 帮 助 信 息 -I 提 交 交 互 式 作 业, 使 作 业 输 出 在 作 业 提 交 窗 口, 无 该 选 项 时 为 批 式 作 业 -q 向 指 定 的 队 列 中 提 交 作 业, 必 选 项 -p 在 作 业 输 出 中 打 印 作 业 分 配 的 节 点 列 表 及 位 图 -excu -shared -cpuexcu 指 定 使 用 CG 独 占 /CG 共 享 /CPU 独 占 模 式 -n 指 定 需 要 的 所 有 主 核 数 -N 指 定 需 要 的 节 点 个 数 -np 指 定 每 节 点 内 使 用 的 主 核 数 -cgsp 指 定 每 个 CG 内 需 要 的 从 核 个 数, 指 定 时 该 参 数 必 须 <=64 -asy 指 定 使 用 非 对 称 资 源, 表 示 各 个 CG 内 使 用 的 从 核 的 个 数 可 以 不 同 -js 指 定 作 业 对 应 的 课 题 代 号 -fs_proj 指 定 作 业 使 用 的 局 部 文 件 代 号 -node 指 定 运 行 作 业 的 节 点 (CG 列 表 ) -cross 要 求 分 配 全 片 CPU(4CG 的 CPU) -heath 指 定 分 配 资 源 的 健 康 度 级 别 -o 将 作 业 的 stdout 和 stderr 的 输 出 定 向 到 指 定 文 件, 可 选 项 -switchnode 指 定 每 个 switch 中 分 配 的 节 点 数 -midnode 指 定 每 个 中 板 中 分 配 的 节 点 数 -cabnode 指 定 每 个 机 舱 中 分 配 的 节 点 数 -b 指 定 从 核 栈 位 于 局 存 -share_size 指 定 核 组 共 享 空 间 大 小 -priv_size 指 定 每 个 核 上 私 有 空 间 大 小 -cross_size 指 定 交 叉 段 大 小 -ro_size 指 定 只 读 空 间 大 小 -m vaue 提 供 从 核 自 陷 模 式 的 控 制, 指 定 -m 2 时, 将 浮 点 控 制 状 态 寄 存 器 fpcr 的 最 后 两 位 设 为 01, 允 许 除 不 精 确 结 果 之 外 的 所 有 浮 点 算 术 异 常 自 陷, 相 当 于 编 译 器 使 用 -OPT:IEEE_arith=2 选 项 ; 指 定 -m 1 时, 将 fcpr 最 后 两 位 设 为 00, 允 许 所 有 浮 点 算 术 异 常 自 陷, 相 当 于 编 译 器 使 用 -OPT:IEEE_arith=1 选 项 ; 其 他 所 有 值 将 不 对 默 认 的 fpcr 进 行 修 改 -pe_stack 指 定 从 核 栈 空 间 大 小, 默 认 为 64K -host_stack 指 定 主 核 栈 空 间 大 小, 默 认 为 8M 使 用 范 例 向 队 列 queue 中 提 交 互 式 作 业 myjob, 该 作 业 共 使 用 1 个 节 点, 四 个 主 核 : bsub I q queue N 1 np 4./myjob 作 业 提 交 成 功 后, 将 显 示 一 行 包 含 jobid 的 提 示 信 息, 其 中 包 括 作 业 id 号, - 27 -
如 Job <102> is submitted to queue <queue>, 此 时,jobid 就 是 102, 它 是 全 局 唯 一 的 一 旦 作 业 提 交 成 功, 用 户 对 作 业 的 各 种 操 作 就 可 以 通 过 这 个 jobid 来 实 现 的 使 用 缺 省 队 列 q_sw_expr 可 以 不 使 用 -q 参 数, 如 : bsub I N 1 np 4./myjob 注 意 事 项 1) -I 参 数 与 -o 参 数 通 常 不 建 议 放 在 一 起 使 用 因 为 使 用 -o 参 数 就 无 法 在 屏 幕 输 出 上 看 见 程 序 的 打 印 2) 每 道 作 业 提 交 成 功 后, 都 会 有 一 个 jobid, 这 是 本 作 业 可 以 区 别 于 其 他 作 业 的 唯 一 特 征 系 统 将 保 证 jobid 的 唯 一 性 作 业 生 命 周 期 中, 对 作 业 的 任 何 操 作 都 需 要 以 jobid 为 参 数 3) 本 命 令 的 各 种 参 数 都 需 要 在 用 户 程 序 之 前 4) 用 户 在 SN 上 使 用 5.4. 作 业 终 止 (bki) 功 能 终 止 作 业 命 令 格 式 bki [-h] [-J jobname] [-u user] [-q queue] [-f] [jobid] 参 数 说 明 -h 帮 助 信 息 -u 操 作 指 定 用 户 提 交 的 作 业 -q 操 作 指 定 队 列 内 的 作 业 -J 操 作 指 定 作 业 名 称 的 作 业 -f 当 终 止 批 量 作 业 时 不 需 要 确 认 jobid 表 示 作 业 id 标 识 符 说 明 : 当 jobid 指 定 时, 忽 略 -u q 选 项 使 用 范 例 bki 1234 终 止 队 列 中 作 业 id 号 为 1234 的 作 业 bki q q1 终 止 队 列 q1 内 的 本 用 户 所 有 的 作 业 - 28 -
注 意 事 项 1) 使 用 -u 参 数 时, 管 理 员 可 以 指 定 所 有 用 户, 普 通 用 户 只 能 指 定 本 用 户 2) 对 于 普 通 用 户 来 说, 即 使 使 用 -q 参 数, 也 只 能 操 作 本 用 户 在 指 定 队 列 中 的 作 业 3) 在 SN 上 使 用 5.5. 作 业 状 态 查 询 (bjobs) 功 能 命 令 格 式 参 数 说 明 查 询 队 列 中 作 业 的 状 态 信 息 bjobs [-h] [-] [-w] [-a -d -e -p -r] [-q queue_name] [-u user_name -u a] [jobid] -q 指 定 要 查 询 的 队 列 - 长 格 式 显 示 作 业 详 细 信 息 -w 全 长 度 显 示, 当 列 值 的 长 度 超 过 列 宽 时, 不 按 列 宽 进 行 截 取 -a 显 示 一 段 时 间 内 的 所 有 作 业 -u 显 示 指 定 用 户 的 作 业,a 是 特 殊 的 关 键 字, 可 显 示 所 有 用 户 的 作 业 信 息 -d 显 示 最 近 正 常 完 成 的 作 业 -e 显 示 最 近 异 常 退 出 的 作 业 -p 显 示 处 于 pend 状 态 的 作 业 -r 显 示 正 在 运 行 的 作 业 jobid 作 业 id 号 使 用 范 例 bjobs 1234 查 询 id 号 为 1234 的 作 业 的 作 业 运 行 状 态 信 息 注 意 事 项 1)-u 参 数 只 面 向 管 理 员 开 放 2) 普 通 用 户 只 能 查 看 属 于 本 用 户 的 作 业 的 信 息 3) 对 于 处 于 调 度 状 态 (pend) 的 作 业, 如 果 作 业 长 时 间 处 理 pend 状 态, 可 以 用 bjobs jobid 来 查 看 作 业 不 能 调 度 运 行 的 原 因 4) 用 户 在 SN 上 使 用 - 29 -
5.6. 作 业 输 出 查 询 (bpeek) 功 能 命 令 格 式 参 数 说 明 查 询 作 业 的 stdout 和 stderr 输 出 信 息 bpeek [-h] [-f] jobid -h 显 示 帮 助 信 息 -f 持 续 显 示 作 业 的 输 出 信 息, 类 似 于 tai 的 -f 选 项 jobid 指 定 作 业 的 id 号 使 用 范 例 bpeek 1234 显 示 id 号 为 1234 的 作 业 的 输 出 信 息 注 意 事 项 1) 本 命 令 只 能 用 于 查 询 属 于 本 用 户 的 已 经 运 行 的 作 业 的 输 出 信 息 2) 用 户 在 SN 上 使 用 5.7. 作 业 联 机 (bonine) 功 能 当 提 交 的 交 互 作 业 窗 口 关 闭 后, 可 在 新 窗 口 中 通 过 该 命 令 实 时 显 示 该 作 业 输 出 信 息, 进 行 联 机 操 作 命 令 格 式 bonine [-h] jobid 参 数 说 明 -h 显 示 帮 助 信 息 jobid 指 定 作 业 的 id 号 使 用 范 例 bonine 1234 对 作 业 id 号 为 1234 的 正 在 运 行 中 的 交 互 式 作 业 进 行 联 机 操 作 注 意 事 项 1) 只 能 普 通 用 户 操 作 本 用 户 的 作 业, 2) 操 作 的 对 象 只 能 是 本 用 户 的 正 在 运 行 状 态 的 交 互 作 业 否 则 都 是 无 效 的, 会 报 错 退 出 如 果 作 业 处 于 联 机 状 态, 则 作 业 输 出 不 再 发 送 至 原 实 时 输 出 终 端, 只 发 送 到 本 输 出 终 端 3) 对 作 业 联 机 后, 可 以 在 当 前 联 机 的 会 话 窗 口 看 到 作 业 的 实 时 输 出 信 息 4) 用 户 在 SN 上 使 用 - 30 -
- 31 -