尧江明 的个人资料江明的空间照片日志列表更多 ![]() | 帮助 |
|
|
10月14日 Linux脚本编写Linux的shell scripting 是一种自动完成多种类型任务的方法,从夜间备份到简单的命令行应用。几乎任何程序都可以通过shell script完成。你甚至可以在脚本内部完成简单的条件检查。shell script的基本格式如下: #!/bin/sh 注意文件是以#!/bin/sh开始的。这把操作系统指向解释脚本的程序。绝大部分系统有/bing/sh,因为这是根用户使用的标准shell。你可以在绝大部分系统中使用/bing/bash。 实例: 通过vi example 建立 example脚本程序
#!/bin/sh ./run
rm dic.dat
cp dic01.dat dic.dat cp dic.out dic01.out 在linux命令模式下输入 sh example,则执行先run命令,然后将dic01.dat 拷贝到dic.dat 文件,...
虽然在shell脚本中可以使用任意的unix命令,但是还是有一些相对更常用的命令。这些命令通常是用来进行文件和文字操作的。 常用命令语法及功能 echo "some text": 将文字内容打印在屏幕上 ls: 文件列表 wc –l filewc -w filewc -c file: 计算文件行数计算文件中的单词数计算文件中的字符数 cp sourcefile destfile: 文件拷贝 mv oldname newname : 重命名文件或移动文件 rm file: 删除文件 grep 'pattern' file: 在文件内搜索字符串比如:grep 'searchstring' file.txt cut -b colnum file: 指定欲显示的文件内容范围,并将它们输出到标准输出设备比如:输出每行第5个到第9个字符cut -b5-9 file.txt千万不要和cat命令混淆,这是两个完全不同的命令 cat file.txt: 输出文件内容到标准输出设备(屏幕)上 file somefile: 得到文件类型 read var: 提示用户输入,并将输入赋值给变量 sort file.txt: 对file.txt文件中的行进行排序 uniq: 删除文本文件中出现的行列比如: sort file.txt | uniq expr: 进行数学运算Example: add 2 and 3expr 2 "+" 3 find: 搜索文件比如:根据文件名搜索find . -name filename -print tee: 将数据输出到标准输出设备(屏幕) 和文件比如:somecommand | tee outfile basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux dirname file: 返回文件所在路径比如:dirname /bin/tux将返回 /bin head file: 打印文本文件开头几行 tail file : 打印文本文件末尾几行 8月8日 Linux 常用命令问答LINUX下常用的压缩方法查找文件:find 目录/ -name 文件名 如在目录3DAMP_071120_parallel中查找文件dic+06730.wel, find ./3DAMP_071120_parallel/ -name dic+06730.wel 结果显示:./3DAMP_071120_parallel/Mg/dic+06730.wel .tar 如何tar压缩一个目录压缩? 实例:tar zcf dir.tar.gz /path/dir 将目录dir压缩成dir.tar.gz.tar
解包: tar xvf FileName.tar 打包: tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) a) 如何从另一个服务器传输文件到本地服务器?从远程拷贝
scp user@host:/path/to/files local_file_name 实例:scp jmyao@162.105.147.88:./TriRMF_PC/dicwel.tar.gz dic.tar.gz
将162.105.147.88服务器上的文件:./TriRMF_PC/dicwel.tar.gz 传到本地服务器
工作目录下,取名为dic.tar.gz.
b) 如何将本地服务器上的文件传输到另一个服务器?拷贝到远程
scp local_file_name user@host:/path/to/files 实例:scp Axial_RMF_meson_exchange+PC.tar.gz jmyao@162.105.147.88:
将本地服务器 工作目录下的文件 Axial_RMF_meson_exchange+PC.tar.gz
传到162.105.147.88服务器上工作目录下. 7月27日 谈谈并行计算的实现-OpenMP的使用由于工作的需要,这一个星期以来一直在学习 OpenMP的使用。在此,将一些心得与体会简记如下。
一个星期之前,我对于并行计算是一无所知,也不知道 OpenMP 为何物。不知道没关系,我们有 Google, 所以我也不是不知所措。
显然,这样搜索出来的资料,有用的,没有的混杂在一起。在此之间,我发现大部分的介绍都引用这样一个网页:
进去,发现是 OpenMP的主页。上面有很多介绍,指南OpenMP Tutorial ,以及各种相关的会议。
虽然相关介绍的文件很多,但是对于我来说都不切实际,毕竟我没有那么多时间来一一看完,于是我又找到
了一个网站:
这个网站上非常系统而又不失简单易懂地介绍了 OpenMP. 这种资料比较适合我,于是
我一口气快速的看完,花了我一整天的时间。更觉得不错的是,网站后面还附有了Exercise ,
这几个例子已经成为各个网站介绍 OpenMP 都不可缺少的一部分。
第一个例子是 Hello World example code:程序内容如下:
C******************************************************************************
C FILE: omp_hello.f
C DESCRIPTION:
C OpenMP Example - Hello World - Fortran Version
C In this simple example, the master thread forks a parallel region.
C All threads in the team obtain their unique thread number and print it.
C The master thread only prints the total number of threads. Two OpenMP
C library routines are used to obtain the number of threads and each
C thread's number.
C AUTHOR: Blaise Barney 5/99
C LAST REVISED:
C******************************************************************************
PROGRAM HELLO
INTEGER NTHREADS, TID, OMP_GET_NUM_THREADS,
+ OMP_GET_THREAD_NUM
C Fork a team of threads giving them their own copies of variables
!$OMP PARALLEL PRIVATE(NTHREADS, TID)
C Obtain thread number
TID = OMP_GET_THREAD_NUM()
PRINT *, 'Hello World from thread = ', TID
C Only master thread does this
IF (TID .EQ. 0) THEN
NTHREADS = OMP_GET_NUM_THREADS()
PRINT *, 'Number of threads = ', NTHREADS
END IF
C All threads join master thread and disband
!$OMP END PARALLEL
END
C****************************************************************************** 如果你熟悉 Fortran的话,那么你就会发现,OpenMP 并行部分只是在原来的程序上加入了一些 Directives:比如说, 在这个例子,!$OMP 是并行部分的提示语句(sentinel), 并行计算部分被包括在 parallel 之间:
下面再来谈谈变量类型:在这个例子里面,在parallel后面出现PRIVATE(NTHREADS, TID),他代表变量NTHREADS和TID
是私有变量,也就是说,这两个变量在各个线程中互不影响,互相独立。与之相反的是Shared 变量,
!$OMP PARALLEL SHARED(M1, M2)
代表变量 M1,M2 对于各个线程是公用的,类似 Common 中的变量。
因此,在用 OpenMP 对矩阵相乘实现并行计算的时候,通常将矩阵指标 i,j,k定义为PRIVATE,而矩阵 A,B,C, 定义为 Shared。
下面谈谈如何编译,若输入 ifort -openmp -o hello omp_hello.f 则可以生成一个hello可执行文件,再设定线程数目为4, export OMP_NUM_THREADS=4 最后执行, ./hello 即可显示; Hello World from thread = 0 最后要感谢 Tamara 的指导和帮助。
|
|
|