<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>OpenMP and parallel programming</title>
    <link rel="alternate" type="text/html" href="http://www.openmp.net/blog/" />
    <link rel="self" type="application/atom+xml" href="http://www.openmp.net/blog/atom.xml" />
    <id>tag:www.openmp.net,2007-12-01:/blog//1</id>
    <updated>2008-01-11T05:51:40Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Publishing Platform 4.01</generator>

<entry>
    <title>c和c++ 使用openmp的对比</title>
    <link rel="alternate" type="text/html" href="http://www.openmp.net/blog/2008/01/cc-openmp.html" />
    <id>tag:www.openmp.net,2008:/blog//1.20</id>

    <published>2008-01-11T05:29:06Z</published>
    <updated>2008-01-11T05:51:40Z</updated>

    <summary><![CDATA[系统 : 2 x Xeon 5130 2.00GHz 1333MHz FSB (4 cores) - Woodcrest B2, 64-bit, dual-core, 65nm, L2: 4MBtestc.c:&nbsp;&nbsp;&nbsp; 1 #include &lt;omp.h&gt;&nbsp;&nbsp;&nbsp; 2 #include &lt;stdio.h&gt;&nbsp;&nbsp;&nbsp; 3 &nbsp;&nbsp;&nbsp; 4 int main()&nbsp;&nbsp;&nbsp; 5 {&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; int i = 0;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; int j...]]></summary>
    <author>
        <name>susnbsd</name>
        <uri>http://www.openmp.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.openmp.net/blog/">
        <![CDATA[<b>系统 : 2 x Xeon 5130 2.00GHz 1333MHz FSB (4 cores) - Woodcrest B2, 64-bit, dual-core, 65nm, L2: 4MB</b><br /><br />testc.c:<br />&nbsp;&nbsp;&nbsp; 1 #include &lt;omp.h&gt;<br />&nbsp;&nbsp;&nbsp; 2 #include &lt;stdio.h&gt;<br />&nbsp;&nbsp;&nbsp; 3 <br />&nbsp;&nbsp;&nbsp; 4 int main()<br />&nbsp;&nbsp;&nbsp; 5 {<br />&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp; int i = 0;<br />&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; int j = 0;<br />&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; fprintf(stderr,"omp max: %d\n",<b>omp_get_max_threads</b>());<br />&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp; <b>omp_set_num_threads</b>(4);<br />&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; 11 <b>#pragma omp parallel for</b><br />&nbsp;&nbsp; 12&nbsp;&nbsp;&nbsp;&nbsp; for(i = 0; i&lt; 10;i++)<br />&nbsp;&nbsp; 13&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp; 14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(stderr,"omp get: (%d) %d\n",i,<b>omp_get_num_threads</b>());<br />&nbsp;&nbsp; 15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (j = 0;j&lt;10000;j++)<br />&nbsp;&nbsp; 16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br />&nbsp;&nbsp; 17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(stderr,"%d\n",i);<br />&nbsp;&nbsp; 18&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br />&nbsp;&nbsp; 19&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br />&nbsp;&nbsp; 20 }&nbsp;&nbsp; <br /><br />testcpp.cpp<br />&nbsp;&nbsp;&nbsp; 1 #include &lt;omp.h&gt;<br />&nbsp;&nbsp;&nbsp; 2 #include &lt;iostream&gt;<br />&nbsp;&nbsp;&nbsp; 3 <br />&nbsp;&nbsp;&nbsp; 4 using namespace std;<br />&nbsp;&nbsp;&nbsp; 5 <br />&nbsp;&nbsp;&nbsp; 6 int main()<br />&nbsp;&nbsp;&nbsp; 7 {<br />&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp;&nbsp;&nbsp; int i = 0;<br />&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp; int j = 0;<br />&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp;&nbsp; cerr &lt;&lt; "omp max: " &lt;&lt; <b>omp_get_max_threads</b>() &lt;&lt; endl;<br />&nbsp;&nbsp; 11&nbsp;&nbsp;&nbsp;&nbsp; <b>omp_set_num_threads(</b>4);<br />&nbsp;&nbsp; 12 <br />&nbsp;&nbsp; 13 <b>#pragma omp parallel for</b><br />&nbsp;&nbsp; 14&nbsp;&nbsp;&nbsp;&nbsp; for(i = 0; i&lt; 10;i++)<br />&nbsp;&nbsp; 15&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp; 16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cerr &lt;&lt; "omp get: (" &lt;&lt; i &lt;&lt; ") " &lt;&lt;&nbsp; <b>omp_get_num_threads</b>() &lt;&lt; endl;<br />&nbsp;&nbsp; 17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (j = 0;j&lt;10000;j++)<br />&nbsp;&nbsp; 18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br />&nbsp;&nbsp; 19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cerr &lt;&lt; i &lt;&lt; endl;<br />&nbsp;&nbsp; 20&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp; 21 &nbsp;&nbsp;&nbsp; return 0;<br />&nbsp;&nbsp; 22 }<br /><br />Makefile:<br />&nbsp;&nbsp;&nbsp; 1 all:<br />&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp; g++42 -o testcpp testcpp.cpp -lgomp -lpthread -fopenmp<br />&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; gcc42 -o testc testc.c -lgomp -lpthread -fopenmp<br /><br />两段程序几乎一样,除了对信息的输出对于结果的现实却相差很远:<br />[~workspace]$ time ./testc<br />omp max: 4<br />omp get: (3) 4<br />omp get: (0) 4<br />omp get: (6) 4<br />omp get: (9) 4<br />0<br />3<br />6<br />omp get: (1) 4<br />omp get: (4) 4<br />9<br />omp get: (7) 4<br />1<br />omp get: (2) 4<br />4<br />2<br />7<br />omp get: (5) 4<br />omp get: (8) 4<br />8<br />5<br /><br />real&nbsp;&nbsp;&nbsp; 0m0.003s<br />user&nbsp;&nbsp;&nbsp; 0m0.003s<br />sys&nbsp;&nbsp;&nbsp;&nbsp; 0m0.001s<br /><br />而:<br />[~workspace]$ time ./testcpp<br />omp max: 4<br />omp get: (omp get: (omp get: (omp get: (0693) ) ) ) 4444<br /><br /><br /><br />06<br /><br />omp get: (9omp get: (317<br /><br />) ) 4omp get: (4<br />4<br />) 14<br /><br />7<br />omp get: (42omp get: (<br />) 8omp get: (4) 5<br />4) <br />42<br /><br />8<br />5<br /><br />real&nbsp;&nbsp;&nbsp; 0m0.008s<br />user&nbsp;&nbsp;&nbsp; 0m0.004s<br />sys&nbsp;&nbsp;&nbsp;&nbsp; 0m0.007s<br /><br /><br />看来openmp对c的支持要更规矩一些。<br /><br /><br /><br /><br /><br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>OpenMP 与 游戏</title>
    <link rel="alternate" type="text/html" href="http://www.openmp.net/blog/2007/12/openmp-1.html" />
    <id>tag:www.openmp.net,2007:/blog//1.18</id>

    <published>2007-12-06T09:53:55Z</published>
    <updated>2007-12-06T12:10:12Z</updated>

    <summary>OpenMP并行库在多核机的大量计算中尤其是序列无关的循环计算中显示出极大的性能提升。看到05年xbox的说明中已经支持了OpenMP. OpenMP大量使用在图形的渲染和着色上。MSDN 上有一篇文章介绍关于在OpenMP支持Xbox的文章 :Coding For Multiple Cores on Xbox 360 and Microsoft Windows这里有一片文章介绍OpenMP在游戏中渲染地形的使用:Multi-Threaded Terrain Smoothing也许当未来出现多核手机的时候OpenMP可以简化手机的线程处理, 看电池的好坏了...Parallel computing is the wave of the future…and always will be....</summary>
    <author>
        <name>susnbsd</name>
        <uri>http://www.openmp.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.openmp.net/blog/">
        <![CDATA[<p>OpenMP并行库在多核机的大量计算中尤其是序列无关的循环计算中显示出极大的性能提升。看到05年xbox的说明中已经支持了OpenMP. OpenMP大量使用在图形的渲染和着色上。<br /><br /><span class="caps">MSDN </span>上有一篇文章介绍关于在OpenMP支持Xbox的文章 :<br /><br /><a href="http://msdn2.microsoft.com/en-us/library/bb204834.aspx">Coding For Multiple Cores on Xbox 360 and Microsoft Windows</a><br /><br />这里有一片文章介绍OpenMP在游戏中渲染地形的使用:<br /><br /><a href="http://gamasutra.com/features/20060531/gruen_02.shtml"><font style="font-size: 1em;" size="+2">Multi-Threaded Terrain Smoothing</font></a><br /><br />也许当未来出现多核手机的时候OpenMP可以简化手机的线程处理, 看电池的好坏了...<br /><br /><font style="font-size: 1.5625em;"><b>Parallel computing is the wave of the future…and always will be.</b></font><br /><br /><br /><br /> </p> ]]>
        
    </content>
</entry>

<entry>
    <title>openMP Vendors</title>
    <link rel="alternate" type="text/html" href="http://www.openmp.net/blog/2007/12/openmp-vendors-1.html" />
    <id>tag:www.openmp.net,2007:/blog//1.17</id>

    <published>2007-12-05T06:10:20Z</published>
    <updated>2007-12-06T12:09:25Z</updated>

    <summary>AMDCrayFujitsu/LaheyHPIBMIntelMicrosoftNECThe Portland Group, Inc.SGISun MicrosystemsTotalview TechnologiesVast from Crescent Bay Software...</summary>
    <author>
        <name>susnbsd</name>
        <uri>http://www.openmp.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.openmp.net/blog/">
        <![CDATA[AMD<br />Cray<br />Fujitsu/Lahey<br />HP<br />IBM<br />Intel<br />Microsoft<br />NEC<br />The Portland Group, Inc.<br />SGI<br />Sun Microsystems<br />Totalview Technologies<br />Vast from Crescent Bay Software ]]>
        
    </content>
</entry>

<entry>
    <title>gcc 4.2 支持openMP</title>
    <link rel="alternate" type="text/html" href="http://www.openmp.net/blog/2007/12/gcc-42-openmp-1.html" />
    <id>tag:www.openmp.net,2007:/blog//1.16</id>

    <published>2007-12-01T15:55:43Z</published>
    <updated>2007-12-06T12:05:23Z</updated>

    <summary><![CDATA[gcc 4.2支持 openMP, 可以尝试在 multi processor 环境下编写简单的MP程序.更新说明: http://gcc.gnu.org/gcc-4.2/changes.htmlgomp:&nbsp; http://gcc.gnu.org/projects/gomp/The GOMP project is developing an implementation of OpenMP for the C, C++, and Fortran 95 compilers in the GNU Compiler Collection. As part of the GNU Project, GOMP will simplify parallel...]]></summary>
    <author>
        <name>susnbsd</name>
        <uri>http://www.openmp.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.openmp.net/blog/">
        <![CDATA[gcc 4.2支持 openMP, 可以尝试在 multi processor 环境下编写简单的MP程序.<br /><br />更新说明: <a href="http://gcc.gnu.org/gcc-4.2/changes.html">http://gcc.gnu.org/gcc-4.2/changes.html</a><br />gomp:&nbsp; <a href="http://gcc.gnu.org/projects/gomp/">http://gcc.gnu.org/projects/gomp/</a><br /><br />The GOMP project is developing an implementation of
<a href="http://www.openmp.org/drupal/">OpenMP</a>
for the C, C++, and <a href="http://gcc.gnu.org/fortran/">Fortran
95</a> compilers in the <a href="http://gcc.gnu.org/">GNU
Compiler Collection</a>. As part of the <a href="http://gcc.gnu.org/">GNU Project</a>, GOMP will 
simplify parallel programming for all GNU system variants. This
effort operates in an open environment to attract developers and
ensure applicability across multiple architectures and
applications....<br />  ]]>
        
    </content>
</entry>

<entry>
    <title>openMP 3.0 API</title>
    <link rel="alternate" type="text/html" href="http://www.openmp.net/blog/2007/12/openmp-30-api-1.html" />
    <id>tag:www.openmp.net,2007:/blog//1.15</id>

    <published>2007-12-01T15:10:43Z</published>
    <updated>2007-12-06T12:06:00Z</updated>

    <summary><![CDATA[come from www.openmp.org&nbsp;&nbsp; API documents...]]></summary>
    <author>
        <name>susnbsd</name>
        <uri>http://www.openmp.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.openmp.net/blog/">
        <![CDATA[come from <a href="http://www.openmp.org/">www.openmp.org</a>&nbsp;&nbsp; <span class="mt-enclosure mt-enclosure-file"><br /><a href="http://www.openmp.net/blog/2007/12/01/spec30_draft.pdf">API documents</a></span> ]]>
        
    </content>
</entry>

<entry>
    <title>The Birth of OpenMP 3.0</title>
    <link rel="alternate" type="text/html" href="http://www.openmp.net/blog/2007/12/the-birth-of-openmp-30-1.html" />
    <id>tag:www.openmp.net,2007:/blog//1.14</id>

    <published>2007-12-01T14:50:33Z</published>
    <updated>2007-12-06T12:06:40Z</updated>

    <summary> The first entry: The Birth of OpenMP 3.0come from the openMP official website www.openmp.org...</summary>
    <author>
        <name>susnbsd</name>
        <uri>http://www.openmp.net/</uri>
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://www.openmp.net/blog/">
        <![CDATA[<br />
The first entry: <a href="http://www.openmp.org/blog/wp-content/uploads/2007/11/omp30.pdf">The Birth of OpenMP 3.0</a><br /><br />come from the openMP official website <a href="http://www.openmp.org/">www.openmp.org</a><br />  ]]>
        
    </content>
</entry>

</feed>
