<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=OpenMP</id>
	<title>OpenMP - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=OpenMP"/>
	<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=OpenMP&amp;action=history"/>
	<updated>2026-06-04T16:57:22Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://monobook.org/w/index.php?title=OpenMP&amp;diff=20472&amp;oldid=prev</id>
		<title>2024年4月10日 (水) 02:45にAdministratorによる</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=OpenMP&amp;diff=20472&amp;oldid=prev"/>
		<updated>2024-04-10T02:45:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2024年4月10日 (水) 02:45時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;1行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;OpenMPとは、数行の&lt;/del&gt;[[おまじない]]を書いて[[コンパイルオプション]]を追加するだけで、&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;OpenMP&#039;&#039;&#039;とは、数行の&lt;/ins&gt;[[おまじない]]を書いて[[コンパイルオプション]]を追加するだけで、&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;多くの処理対象に対し同じような処理をする処理を早く終わらせることができるようになる[[定数倍高速化]]ツールである。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;多くの処理対象に対し同じような処理をする処理を早く終わらせることができるようになる[[定数倍高速化]]ツールである。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key monobook-mw_:diff:1.41:old-3371:rev-20472:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://monobook.org/w/index.php?title=OpenMP&amp;diff=3371&amp;oldid=prev</id>
		<title>imported&gt;MikeCAT: 作成</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=OpenMP&amp;diff=3371&amp;oldid=prev"/>
		<updated>2013-08-21T12:33:43Z</updated>

		<summary type="html">&lt;p&gt;作成&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;OpenMPとは、数行の[[おまじない]]を書いて[[コンパイルオプション]]を追加するだけで、&lt;br /&gt;
多くの処理対象に対し同じような処理をする処理を早く終わらせることができるようになる[[定数倍高速化]]ツールである。&lt;br /&gt;
&lt;br /&gt;
処理に使う[[コンピュータ]]の性能や使用する対象の[[ソースコード]]にもよるが、&lt;br /&gt;
使用しない場合に比べて大体処理時間を86～22%にできる。&lt;br /&gt;
ただし、使用しない場合より実行中の[[CPU]]使用率が高くなる。&lt;br /&gt;
また、[[高速化]]効果が得られず、逆に遅くなってしまう[[環境]]もあるので注意が必要である。&lt;br /&gt;
&lt;br /&gt;
==使用方法==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int get_flag(unsigned char* buf,int index) {&lt;br /&gt;
	return (buf[index&amp;gt;&amp;gt;3] &amp;amp; (1&amp;lt;&amp;lt;(7-(index&amp;amp;7))));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void set_flag(unsigned char* buf,int index,int flag) {&lt;br /&gt;
	if(flag) {&lt;br /&gt;
		buf[index&amp;gt;&amp;gt;3]|=1&amp;lt;&amp;lt;(7-(index&amp;amp;7));&lt;br /&gt;
	} else {&lt;br /&gt;
		buf[index&amp;gt;&amp;gt;3]&amp;amp;=~(1&amp;lt;&amp;lt;(7-(index&amp;amp;7)));&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(int argc,char* argv[]) {&lt;br /&gt;
	int calc_ryo=20;&lt;br /&gt;
	unsigned int calc_max;&lt;br /&gt;
	unsigned int calc2_max;&lt;br /&gt;
	unsigned char* calc_buffer;&lt;br /&gt;
	unsigned buffer_max;&lt;br /&gt;
	unsigned i,j;&lt;br /&gt;
	if(argc&amp;gt;1)sscanf(argv[1],&amp;quot;%d&amp;quot;,&amp;amp;calc_ryo);&lt;br /&gt;
	if(calc_ryo&amp;lt;0 || calc_ryo&amp;gt;31)calc_ryo=20;&lt;br /&gt;
	calc_max=1u&amp;lt;&amp;lt;calc_ryo;&lt;br /&gt;
	calc2_max=1u&amp;lt;&amp;lt;((calc_ryo+1)/2);&lt;br /&gt;
	buffer_max=calc_max&amp;gt;&amp;gt;3;&lt;br /&gt;
	calc_buffer=malloc(buffer_max);&lt;br /&gt;
	if(calc_buffer==NULL)return 1;&lt;br /&gt;
	printf(&amp;quot;max: %u\n&amp;quot;,calc_max);&lt;br /&gt;
	for(i=0;i&amp;lt;buffer_max;i++)calc_buffer[i]=0xFF;&lt;br /&gt;
	set_flag(calc_buffer,0,0);&lt;br /&gt;
	set_flag(calc_buffer,1,0);&lt;br /&gt;
	for(i=2;i&amp;lt;=calc2_max;i++) {&lt;br /&gt;
		if(get_flag(calc_buffer,i)) {&lt;br /&gt;
			#ifdef _OPENMP&lt;br /&gt;
			#pragma omp parallel for&lt;br /&gt;
			#endif&lt;br /&gt;
			for(j=i+i;j&amp;lt;calc_max;j+=i) {&lt;br /&gt;
				set_flag(calc_buffer,j,0);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	free(calc_buffer);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
例えばこのコードのように、多くの対象に同じような処理をしているfor文の前に&lt;br /&gt;
&amp;lt;pre&amp;gt;#pragma omp parallel for&amp;lt;/pre&amp;gt;&lt;br /&gt;
というおまじないを書く。そして、&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;gt;gcc -O2 -fopenmp -o prime.exe prime.c -static&amp;lt;/pre&amp;gt;&lt;br /&gt;
のように、コンパイルオプションに-fopenmpを追加する。&lt;br /&gt;
&lt;br /&gt;
このことによりOpenMPが有効化され、実行時間が比較的短くなることが期待される。&lt;br /&gt;
&lt;br /&gt;
===注意点===&lt;br /&gt;
OpenMPは、多くの対象に、&amp;lt;strong&amp;gt;互いに関係ない&amp;lt;/strong&amp;gt;同じような処理をしている場合の高速化に有効である。&lt;br /&gt;
&lt;br /&gt;
処理が互いに関係ある場合、例えば値の合計を取るなどの場合は、特殊な書き方が必要である。&lt;br /&gt;
&lt;br /&gt;
==関連項目==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[OpenMPI]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[OpenCL]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;MikeCAT</name></author>
	</entry>
</feed>