科学计算环境.pdf
科学计算环境初步 李震宇 (USTC) Outline 硬件与操作系统 常用软件 文本编辑:vim、emacs 图形图像:gimp、gnuplot 作业管理系统 编程与软件 编程语言 (脚本:bash、python;编译:Fortran) 编译工具 (make) 数学库 软件包 VASP编译 http://staff.ustc.edu.cn/~zyli/teaching.html 计算机基本组成 A computer is a general purpose device that can be programmed to carry out a finite set of arithmetic or logical operations (from wikipedia). central processing unit (CPU) memory (RAM and ROM) peripheral devices CPU与摩尔定律 复杂指令集CISC (x86, Pentium、Core、Xeon) 精简指令集RISC (PowerPC、SPARC、MIPS、Alpha) 显式并行指令计算EPIC (ia64, Itanium) 超级计算机 从大型机到集群系统 在科学计算中应用广泛 能效,FLOPS/Watt Year Supercomputer 2008 IBM Roadrunner Peak speed Location 1.026 PFLOPS Los Alamos, USA 1.105 PFLOPS 2009 Cray Jaguar 1.759 PFLOPS Oak Ridge, USA 2010 Tianhe-IA 2.566 PFLOPS Tianjin, China 2011 Fujitsu K computer 10.51 PFLOPS Kobe, Japan 2012 Cray Titan 17.59 PFLOPS Oak Ridge, USA 2013 NUDT Tianhe-2 33.86 PFLOPS Guangzhou, China Blue Gene/P 操作系统 进程管理 (Processing management) 内存管理 (Memory management) 文件系统 (File system) 网络通信 (Networking) 安全机制 (Security) 用户界面 (User interface) 驱动程序 (Device drivers) 常见操作系统 Windows Mac OS Mach内核:System vX.X, Mac OS 8, Mac OS 9 Darwin内核(BSD UNIX based):Mac OS X UNIX AIX, HP/UX, Solaris, FreeBSD, OpenBSD, NetBSD, … GNU/Linux GNU’s Not UNIX (Richard Stallman) GNU GPL版权许可下的内核(Linus Torvalds) Debian, Ubuntu, Fedora, Red hat, SUSE, … Tux Linux操作系统常用命令 Bash (Bourne-Again SHell) 文件:pwd, cd, ls, find, cp, scp, ln, mkdir, mv, rm, touch, tar, chgrp, chmod, chown, df, du, mount 文本:cat, less, more, tail, diff, grep, awk, sed, vi 作业:bg, fg, kill, nohup, sudo, source, ps, top, whereis, which, man 用户:passwd, export, quota, su, who 其他:expr, set, ping, traceroute, ssh 输入输出重定向与管道:>, >>, n>&m,<, | XWindow系统 X窗口系统是一种以位图方式显示的软件窗口系统。 采用C/S的架构模型,具有“网络透明性”。 export DISPLAY=host:0 XFree86 X.org (X11R7.7) 桌面环境 KDE(Qt) GNOME(gtk+) Windows下的X server Cygwin/X、Xming X程序 xterm 常见网络互联方案 局域网:Ethernet over twisted pair (10BASE-T, 100BASE-TX, and 1000BASE-T) 节点间互联 Ethernet (10GBASE-X, 40GBASE-X, 100GBASE-X) Infiniband (aggregate links) SDR DDR QDR FDR-10 FDR EDR 1X 2 Gb/s 4 Gb/s 8 Gb/s 10.3125 Gb/s 13.64 Gb/s 25 Gb/s 4X 8 Gb/s 16 Gb/s 32 Gb/s 41.25 Gb/s 54.54 Gb/s 100 Gb/s 12X 24 Gb/s 48 Gb/s 96 Gb/s 123.75 Gb/s 163.64 Gb/s 300 Gb/s *actual data rate, not signaling rate **run ibhosts and ibstat for info Myrinet (Myrinet 2000, Myri 10G) 网络服务:telnet/rsh/ssh Telnet:TCP/IP协议族的一项,是Internet远端登录服 务的标准协议和主要方式,常使用23号端口。 rsh:以另外的用户身份甚至在另外的计算机上远程使 用shell SSH(Secure Shell):创建在应用层和传输层基础上的一 项安全协议,为计算机上的Shell提供安全高效的传输 和使用环境,常使用22号端口。 OpenSSH为其开放源代码实现。 ssh-keygen -t rsa cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys Windows客户端程序:putty 网络服务:ftp/scp FTP (File Transfer Protocol):TCP网络上文件传输协议。 匿名服务:anonymous 主动模式:客户端从一个任意的非特权端口N (N>1024)连接 到服务器的命令端口( 21),然后开始监听N+1端口,并发送 FTP命令“port N+1”。服务器从数据端口(20)连接到客户端 N+1端口。 被动模式:客户端打开任意两个端口(N > 1024和N+1)。从 端口N连接服务器的端口21,提交PASV命令。服务器开启 数据端口(P > 1024),并发送PORT P命令给客户端。客户端 发起从N+1到P的连接。 SCP (Secure copy):基于ssh协议的安全文件传输。 Windows客户端程序:WinSCP vim文本编辑 从vi发展出来的一个文本编辑器(Vi IMproved) VIM许可证协议,兼容GPL,包含一些慈善条款 模式 普通模式(启动默认模式) 插入模式(按a或i进入) 可视模式(操纵文本块) 命令行模式(“:”键执行命令, “/” 或“?”键搜索) 主要优点 简洁、高效、普及 让“QWERTY”键盘用户将手指保持在默认键位上,使编辑 时手指移动更少。 emacs文本编辑 源自Editor MACroS,宏编辑器 GNU Emacs和XEmacs 使用lisp作为扩展语言 模式:基于文本类型 主要优点:多功能、高可扩展性、高可定制性 编辑器之战 Emacs 是“一个伟大的操作系统, 只缺个体面的编辑器” “Escape Meta Alt Control Shift”或者“EMACS Makes Any Computer Slow” vi 有两个模式 :“不停地哔哔叫”和“搞砸一切”。 Gimp图像处理 GNU Image Manipulation Program:一款跨平台开放源 代码图像处理自由软件。 支持GNU/Linux、MS Windows、Mac OS X等平台。 能够实现多种图像处理方面的要求,包括照片润饰、 图像合成和创建图像 <<写给大家看的设计书>> Robin Williams 对齐、亲密性、重复、对比 Wilber gnuplot绘图 一个基于命令行的产生函数、数据和拟合的二维/三维 图的软件 (不是基于GPL发布)。 作业管理系统 作业排队提交、优先级管理、动态负载平衡、日志与 统计分析。。。 Portable Batch System (PBS) OpenPBS、Torque、PBS Pro qsub -N name -q queue -l nodes=4:ppn=12 job.pbs qstat, qdel, pbsnodes pbs_sched Maui IBM Platform LSF (Load Sharing Facility) bsub –n 8 –q queue < job.lsf bjobs, bhist, bkill, bqueues, bhosts 编程语言 脚本语言 解释执行,开发效率优先 自动批处理、Web编程、文字处理、“胶水”语言 bash, lisp, javascript, awk, sed, perl, python… 编译语言 编写、编译、链接、运行 (edit-compile-link-run) 运行效率优先 C, Basic, Pascal, Fortran 数据结构和算法 面向对象程序设计(Object-oriented programming) 类、对象、方法、封装、继承、多态(Polymorphism) Python语言 哲学:优雅、明确、简单,反对“总是有多种方法来 做同一件事情”(perl) 使用缩进(4个空格)来定义语句块 完全面向对象,函数、模块、数字、字符串都是对象。 Python 2.7 Python 3.0 Numpy、Scipy matplotlib、pylab (an alternative to MATLAB) C语言 最流行的计算机编程语言 接近 硬件底层,已取代汇编语言用来编写Linux内核 编译预处理(C preprocessor) #include

科学计算环境.pdf




