<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://jmyao1983.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fjmyao1983.spaces.live.com%2fcategory%2f%e8%ae%a1%e7%ae%97%e6%9c%ba%e4%b8%8e%2bInternet%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>江明的空间: 计算机与 Internet</title><description /><link>http://jmyao1983.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=cat%25E8%25AE%25A1%25E7%25AE%2597%25E6%259C%25BA%25E4%25B8%258E%2bInternet</link><language>en-US</language><pubDate>Sat, 19 Jul 2008 15:24:22 GMT</pubDate><lastBuildDate>Sat, 19 Jul 2008 15:24:22 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://jmyao1983.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>8558010103915648103</live:id><live:alias>jmyao1983</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Linux脚本编写</title><link>http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!249.entry</link><description>&lt;div&gt;
&lt;div style="display:block;width:93.69%;height:874px"&gt;
&lt;p&gt;Linux的shell scripting 是一种自动完成多种类型任务的方法，从夜间备份到简单的命令行应用。几乎任何程序都可以通过shell script完成。你甚至可以在脚本内部完成简单的条件检查。shell script的基本格式如下： 
&lt;p&gt;#!/bin/sh&lt;br&gt;...&lt;br&gt;这里是你的命令&lt;br&gt;... 
&lt;p&gt;注意文件是以#!/bin/sh开始的。这把操作系统指向解释脚本的程序。绝大部分系统有/bing/sh，因为这是根用户使用的标准shell。你可以在绝大部分系统中使用/bing/bash。 
&lt;div&gt;实例: 通过vi example 建立 example脚本程序&lt;br&gt;#!/bin/sh&lt;/div&gt;
&lt;div&gt;./run&lt;/div&gt;
&lt;div&gt;rm dic.dat&lt;br&gt;cp dic01.dat dic.dat&lt;br&gt;cp dic.out dic01.out &lt;/div&gt;
&lt;div&gt;在linux命令模式下输入 sh example，则执行先run命令，然后将dic01.dat 拷贝到dic.dat 文件,...&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;虽然在shell脚本中可以使用任意的unix命令，但是还是有一些相对更常用的命令。这些命令通常是用来进行文件和文字操作的。 &lt;br&gt;常用命令语法及功能 &lt;br&gt;　　echo &amp;quot;some text&amp;quot;: 将文字内容打印在屏幕上 &lt;br&gt;　　ls: 文件列表 &lt;br&gt;　　wc –l filewc -w filewc -c file: 计算文件行数计算文件中的单词数计算文件中的字符数 &lt;br&gt;　　cp sourcefile destfile: 文件拷贝 &lt;br&gt;　　mv oldname newname : 重命名文件或移动文件 &lt;br&gt;　　rm file: 删除文件 &lt;br&gt;　　grep 'pattern' file: 在文件内搜索字符串比如：grep 'searchstring' file.txt &lt;br&gt;　　cut -b colnum file: 指定欲显示的文件内容范围，并将它们输出到标准输出设备比如：输出每行第5个到第9个字符cut -b5-9 file.txt千万不要和cat命令混淆，这是两个完全不同的命令 &lt;br&gt;　　cat file.txt: 输出文件内容到标准输出设备（屏幕）上 &lt;br&gt;　　file somefile: 得到文件类型 &lt;br&gt;　　read var: 提示用户输入，并将输入赋值给变量 &lt;br&gt;　　sort file.txt: 对file.txt文件中的行进行排序 &lt;br&gt;　　uniq: 删除文本文件中出现的行列比如： sort file.txt | uniq &lt;br&gt;　　expr: 进行数学运算Example: add 2 and 3expr 2 &amp;quot;+&amp;quot; 3 &lt;br&gt;　　find: 搜索文件比如：根据文件名搜索find . -name filename -print &lt;br&gt;　　tee: 将数据输出到标准输出设备(屏幕) 和文件比如：somecommand | tee outfile &lt;br&gt;　　basename file: 返回不包含路径的文件名比如： basename /bin/tux将返回 tux &lt;br&gt;　　dirname file: 返回文件所在路径比如：dirname /bin/tux将返回 /bin &lt;br&gt;　　head file: 打印文本文件开头几行 &lt;br&gt;　　tail file : 打印文本文件末尾几行 &lt;/div&gt;&lt;/div&gt;
&lt;div style="display:none"&gt;&lt;br&gt;&lt;br&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=8558010103915648103&amp;page=RSS%3a+Linux%e8%84%9a%e6%9c%ac%e7%bc%96%e5%86%99&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=jmyao1983.spaces.live.com&amp;amp;GT1=jmyao1983"&gt;</description><comments>http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!249.entry#comment</comments><guid isPermaLink="true">http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!249.entry</guid><pubDate>Sun, 14 Oct 2007 06:34:25 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://jmyao1983.spaces.live.com/blog/cns!76C428D8E4189467!249/comments/feed.rss</wfw:commentRss><wfw:comment>http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!249.entry#comment</wfw:comment><dcterms:modified>2007-10-14T06:38:11Z</dcterms:modified></item><item><title>Linux 常用命令问答</title><link>http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!243.entry</link><description>&lt;h4&gt;&lt;font size=5&gt;LINUX下常用的压缩方法 &lt;/font&gt;&lt;/h4&gt;
&lt;p&gt;查找文件：find 目录/ -name 文件名
&lt;p&gt;如在目录3DAMP_071120_parallel中查找文件dic+06730.wel，
&lt;p&gt;find ./3DAMP_071120_parallel/ -name dic+06730.wel
&lt;p&gt;结果显示：./3DAMP_071120_parallel/Mg/dic+06730.wel
&lt;p&gt;.tar&lt;br&gt;解包：tar xvf FileName.tar&lt;br&gt;打包：tar cvf FileName.tar DirName&lt;br&gt;（注：tar是打包，不是压缩！）&lt;br&gt;---------------------------------------------&lt;br&gt;.gz&lt;br&gt;解压1：gunzip FileName.gz&lt;br&gt;解压2：gzip -d FileName.gz&lt;br&gt;压缩：gzip FileName&lt;br&gt;.tar.gz 和 .tgz&lt;br&gt;解压：tar zxvf FileName.tar.gz&lt;br&gt;压缩：tar zcvf FileName.tar.gz DirName&lt;br&gt;
&lt;p&gt;如何tar压缩一个目录压缩？ 
&lt;div&gt;实例：tar zcf dir.tar.gz /path/dir 将目录dir压缩成dir.tar.gz.tar&lt;br&gt;解包： tar xvf FileName.tar&lt;br&gt;打包： tar cvf FileName.tar DirName&lt;br&gt;（注：tar是打包，不是压缩！）&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;a href="http://tag.csdn.net/Article/78b10540-36d9-4860-b3e4-13435077d5d8.html" target="_blank"&gt;&lt;u&gt;&lt;font size=5&gt;&lt;font color="#0000cc"&gt;采用&lt;/font&gt;&lt;font color="#cc0033"&gt;scp命令&lt;/font&gt;&lt;font color="#0000cc"&gt;在Linux系统之间copy文件&lt;/font&gt;&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&lt;font size=3&gt;a) 如何从另一个服务器传输文件到本地服务器？&lt;/font&gt;&lt;/strong&gt;&lt;span&gt;从远程拷贝&lt;br&gt;      scp user@host:/path/to/files local_file_name&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;实例：&lt;strong&gt;scp&lt;/strong&gt; &lt;a href="mailto:scjmyao@162.105.147.88:./TriRMF_PC/dicwel.tar.gz"&gt;jmyao@162.105.147.88:./TriRMF_PC/dicwel.tar.gz&lt;/a&gt; dic.tar.gz&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;将&lt;font color="#b72a13"&gt;162.105.147.88服务器上的文件:./TriRMF_PC/dicwel.tar.gz 传到本地服务器&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#b72a13"&gt;工作目录下，取名为&lt;/font&gt;&lt;font color="#000000"&gt;dic.tar.gz.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font size=3&gt;&lt;strong&gt;b) 如何将本地服务器上的文件传输到另一个服务器？&lt;/strong&gt;&lt;font size=2&gt;拷贝到远程&lt;/font&gt;&lt;br&gt;&lt;font size=2&gt;     scp local_file_name user@host:/path/to/files &lt;/font&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;实例：&lt;strong&gt;scp&lt;/strong&gt; Axial_RMF_meson_exchange+PC.tar.gz &lt;a href="mailto:jmyao@162.105.147.88"&gt;jmyao@162.105.147.88&lt;/a&gt;:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;div&gt;将&lt;font color="#b72a13"&gt;本地服务器&lt;/font&gt; &lt;font color="#b72a13"&gt;工作目录下的文件 &lt;/font&gt;&lt;font color="#000000"&gt;Axial_RMF_meson_exchange+PC.tar.gz &lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#b72a13"&gt;传到162.105.147.88服务器上&lt;/font&gt;&lt;font color="#b72a13"&gt;工作目录下&lt;/font&gt;&lt;font color="#000000"&gt;.&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=8558010103915648103&amp;page=RSS%3a+Linux+%e5%b8%b8%e7%94%a8%e5%91%bd%e4%bb%a4%e9%97%ae%e7%ad%94&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=jmyao1983.spaces.live.com&amp;amp;GT1=jmyao1983"&gt;</description><comments>http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!243.entry#comment</comments><guid isPermaLink="true">http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!243.entry</guid><pubDate>Wed, 08 Aug 2007 11:20:12 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://jmyao1983.spaces.live.com/blog/cns!76C428D8E4189467!243/comments/feed.rss</wfw:commentRss><wfw:comment>http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!243.entry#comment</wfw:comment><dcterms:modified>2008-06-18T09:55:05Z</dcterms:modified></item><item><title>谈谈并行计算的实现-OpenMP的使用</title><link>http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!239.entry</link><description>&lt;div&gt;由于工作的需要，这一个星期以来一直在学习 OpenMP的使用。在此，将一些心得与体会简记如下。&lt;/div&gt;
&lt;div&gt;一个星期之前，我对于并行计算是一无所知，也不知道 OpenMP 为何物。不知道没关系，我们有 Google, 所以我也不是不知所措。&lt;/div&gt;
&lt;div&gt;显然，这样搜索出来的资料，有用的，没有的混杂在一起。在此之间，我发现大部分的介绍都引用这样一个网页：&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.openmp.org/drupal/"&gt;http://www.openmp.org/drupal/&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;进去，发现是 OpenMP的主页。上面有很多介绍，指南&lt;font face=Arial&gt;&lt;strong&gt;OpenMP Tutorial&lt;/strong&gt; &lt;/font&gt;，以及各种相关的会议。&lt;/div&gt;
&lt;div&gt;虽然相关介绍的文件很多，但是对于我来说都不切实际，毕竟我没有那么多时间来一一看完，于是我又找到&lt;/div&gt;
&lt;div&gt;了一个网站：&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.llnl.gov/computing/tutorials/openMP/"&gt;http://www.llnl.gov/computing/tutorials/openMP/&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;这个网站上非常系统而又不失简单易懂地介绍了 OpenMP. 这种资料比较适合我，于是&lt;/div&gt;
&lt;div&gt;我一口气快速的看完，花了我一整天的时间。更觉得不错的是，网站后面还附有了&lt;a href="http://jmyao1983.spaces.live.com/mmm2007-07-17_18.59/exercise.html"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;Exercise&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; ，&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.llnl.gov/computing/tutorials/openMP/exercise.html"&gt;http://www.llnl.gov/computing/tutorials/openMP/exercise.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;这几个例子已经成为各个网站介绍 OpenMP 都不可缺少的一部分。&lt;/div&gt;
&lt;div&gt;第一个例子是 Hello World example code：程序内容如下：&lt;/div&gt;
&lt;div&gt;&lt;pre&gt;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
&lt;/pre&gt;&lt;pre&gt;C******************************************************************************&lt;/pre&gt;&lt;pre&gt;如果你熟悉 Fortran的话，那么你就会发现，OpenMP 并行部分只是在原来的程序上加入了一些 Directives:比如说，&lt;/pre&gt;&lt;pre&gt;在这个例子，!$OMP 是并行部分的提示语句(sentinel), 并行计算部分被包括在 parallel 之间：&lt;/pre&gt;&lt;pre&gt;&lt;pre&gt;!$OMP PARALLEL &lt;i&gt;[clause ...] &lt;/i&gt;
               IF &lt;i&gt;(scalar_logical_expression) &lt;/i&gt;
               PRIVATE &lt;i&gt;(list) &lt;/i&gt;
               SHARED &lt;i&gt;(list) &lt;/i&gt;
               DEFAULT (PRIVATE | SHARED | NONE) 
               FIRSTPRIVATE &lt;i&gt;(list) &lt;/i&gt;
               REDUCTION &lt;i&gt;(operator: list) &lt;/i&gt;
               COPYIN &lt;i&gt;(list) &lt;/i&gt;
               NUM_THREADS &lt;i&gt;(scalar-integer-expression)&lt;/i&gt;

   &lt;i&gt;block&lt;/i&gt;

!$OMP END PARALLEL&lt;/pre&gt;&lt;pre&gt;程序执行到 PARALLEL directive的时候，会将parallel之间的代码复制用于其它线程执行，从而实现并行计算。&lt;/pre&gt;&lt;pre&gt;可以采用&lt;strong&gt;OMP_NUM_THREADS&lt;/strong&gt; 来设定线程数目。所有线程执行完parallel之间的程序后又会合并成一个线程。  &lt;/pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;下面再来谈谈变量类型：在这个例子里面，在parallel后面出现PRIVATE(NTHREADS, TID)，他代表变量NTHREADS和TID&lt;/div&gt;
&lt;div&gt;是私有变量，也就是说，这两个变量在各个线程中互不影响，互相独立。与之相反的是Shared 变量,&lt;/div&gt;
&lt;div&gt;&lt;font color="#ff0000"&gt;!$OMP PARALLEL &lt;font color="#000000"&gt;SHARED&lt;/font&gt;(M1, M2)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#ff0000"&gt;代表变量 M1,M2 对于各个&lt;font color="#000000"&gt;线程&lt;/font&gt;是公用的，类似 Common 中的变量。&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#ff0000"&gt;因此，在用 OpenMP 对矩阵相乘实现并行计算的时候，通常将矩阵指标 i,j,k定义为&lt;/font&gt;&lt;font color="#000000"&gt;PRIVATE,而矩阵 A,B,C, 定义为 Shared。&lt;/font&gt;&lt;/div&gt;
&lt;p&gt;&lt;font color="#000000"&gt;下面谈谈如何编译，若输入&lt;/font&gt; 
&lt;p&gt;&lt;font color="#000000"&gt;ifort -openmp -o hello omp_hello.f&lt;/font&gt; 
&lt;p&gt;&lt;font color="#000000"&gt;则可以生成一个hello可执行文件，再设定线程数目为4，&lt;/font&gt; 
&lt;p&gt;&lt;font color="#000000"&gt;export OMP_NUM_THREADS=4&lt;/font&gt; 
&lt;p&gt;&lt;font color="#000000"&gt;最后执行，&lt;/font&gt; 
&lt;p&gt;&lt;font color="#000000"&gt;./hello&lt;/font&gt; 
&lt;p&gt;&lt;font color="#000000"&gt;即可显示;&lt;/font&gt; 
&lt;p&gt;&lt;font color="#000000"&gt; Hello World from thread =            0&lt;br&gt; Hello World from thread =            1&lt;br&gt; Number of threads =            4&lt;br&gt; Hello World from thread =            2&lt;br&gt; Hello World from thread =            3&lt;br&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/font&gt;
&lt;div&gt;最后要感谢 Tamara 的指导和帮助。&lt;br&gt; &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=8558010103915648103&amp;page=RSS%3a+%e8%b0%88%e8%b0%88%e5%b9%b6%e8%a1%8c%e8%ae%a1%e7%ae%97%e7%9a%84%e5%ae%9e%e7%8e%b0-OpenMP%e7%9a%84%e4%bd%bf%e7%94%a8&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=jmyao1983.spaces.live.com&amp;amp;GT1=jmyao1983"&gt;</description><comments>http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!239.entry#comment</comments><guid isPermaLink="true">http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!239.entry</guid><pubDate>Fri, 27 Jul 2007 13:54:22 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://jmyao1983.spaces.live.com/blog/cns!76C428D8E4189467!239/comments/feed.rss</wfw:commentRss><wfw:comment>http://jmyao1983.spaces.live.com/Blog/cns!76C428D8E4189467!239.entry#comment</wfw:comment><dcterms:modified>2007-07-27T14:14:48Z</dcterms:modified></item></channel></rss>