<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[#pragma omp]]></title><description><![CDATA[<p>Hey,</p>
<p>Ich wollte mal bisschen mit pragma omp rumprobieren doch es geht überhaupt nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Habe Visual Studio 2010 Professional (C++) und folgenden Code probiert:</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;omp.h&gt;

int main(int argc, char* argv[])
{
	#pragma omp parallel
	{
		printf(&quot;I am thread %d of %d.\n&quot;, omp_get_thread_num()+1, omp_get_num_threads());
	}
	return 0;
}
</code></pre>
<p>Es erfolgt lediglich eine Ausgabe. Kann ja eig. nicht sein das nur 1 Thread verfügbar ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/296926/pragma-omp</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 17:07:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296926.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Dec 2011 12:12:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 12:12:18 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>Ich wollte mal bisschen mit pragma omp rumprobieren doch es geht überhaupt nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<p>Habe Visual Studio 2010 Professional (C++) und folgenden Code probiert:</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;omp.h&gt;

int main(int argc, char* argv[])
{
	#pragma omp parallel
	{
		printf(&quot;I am thread %d of %d.\n&quot;, omp_get_thread_num()+1, omp_get_num_threads());
	}
	return 0;
}
</code></pre>
<p>Es erfolgt lediglich eine Ausgabe. Kann ja eig. nicht sein das nur 1 Thread verfügbar ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157222</guid><dc:creator><![CDATA[Chris Benoit*]]></dc:creator><pubDate>Thu, 15 Dec 2011 12:12:18 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 12:29:45 GMT]]></title><description><![CDATA[<p>Das kann durchaus sein, wenn OMP_NUM_THREADS entsprechend gesetzt ist oder OMP_NUM_THREADS nicht gesetzt ist und du nur einen Prozessorkern hast.</p>
<p>Du kannst die Zahl benutzter Threads mit omp_set_num_threads explizit setzen; Performancegewinne sind aber nicht zu erwarten, wenn du mehr Threads benutzt als du (virtuelle) Prozessoren hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157229</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 15 Dec 2011 12:29:45 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 12:31:42 GMT]]></title><description><![CDATA[<p>Ich kenne mich mit OMP zwar nicht aus, aber muss es um zu parallelisieren nicht auch was parallelisierbares geben, z.B. eine Schleife oder so? Was genau soll OMP denn hier an <strong>einer</strong> Ausgabe parallelisieren? Ich meine, OMP verändert doch nicht die Logik hinter dem Programmcode, und die besteht aus genau einer Ausgabe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157230</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 15 Dec 2011 12:31:42 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 12:44:05 GMT]]></title><description><![CDATA[<p>Wenn vier Threads verfügbar sind, wird der Kram auf diese Weise vier mal nebeneinander ausgeführt. Wie oft eine nackte parallel-Direktive sinnvoll ist, ist eine andere Frage.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157237</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 15 Dec 2011 12:44:05 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 12:50:48 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Wenn vier Threads verfügbar sind, wird der Kram auf diese Weise vier mal nebeneinander ausgeführt. Wie oft eine nackte parallel-Direktive sinnvoll ist, ist eine andere Frage.</p>
</blockquote>
<p>Würde mich arg verwundern. Führt er bei ner for-Schleife auch die komplette Schleife viermal nebeneinander aus? Sollte ja dann eigentlich ja jeder Thread nur Teile der Schleife ausführen, oder?</p>
<p>Versuch mal sowas:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;omp.h&gt;

int main(int argc, char* argv[])
{
    int i;
    #pragma omp parallel
    for (i = 0; i &lt; 10; ++i)
    {
        printf(&quot;%d: I am thread %d of %d.\n&quot;, i, omp_get_thread_num()+1, omp_get_num_threads());
    }
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2157242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157242</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 15 Dec 2011 12:50:48 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 13:00:05 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a>: Mit deinem Code kommt halt 10mal die Ausgabe Thread 1 of 1, es wiederholen sich also keine Anweisungen.<br />
Für for schleifen wird der Command in der Regel aber auch noch erweitert:<br />
#pragma omp parallel for</p>
<p>Bringt nur leider nix wenn es an sich nicht geht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>@seldon: Es stehen 4 CPU Kerne zur verfügung (CPU: i5 2500k).<br />
Daher komisch das nur 1 Thread angezeigt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157246</guid><dc:creator><![CDATA[Chris Benoit*]]></dc:creator><pubDate>Thu, 15 Dec 2011 13:00:05 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 13:01:17 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>seldon schrieb:</p>
<blockquote>
<p>Wenn vier Threads verfügbar sind, wird der Kram auf diese Weise vier mal nebeneinander ausgeführt. Wie oft eine nackte parallel-Direktive sinnvoll ist, ist eine andere Frage.</p>
</blockquote>
<p>Würde mich arg verwundern. Führt er bei ner for-Schleife auch die komplette Schleife viermal nebeneinander aus? Sollte ja dann eigentlich ja jeder Thread nur Teile der Schleife ausführen, oder?</p>
</blockquote>
<p>Doch, das ist schon richtig so. Die Ausgabe findet so oft statt, wie Threads verfügbar sind.<br />
Mögliche Ausgabe bei mir am Rechner mit 8 Threads:</p>
<pre><code>I am thread 1 of 8.
I am thread 3 of 8.
I am thread 7 of 8.
I am thread 4 of 8.
I am thread 8 of 8.
I am thread 2 of 8.
I am thread 6 of 8.
I am thread 5 of 8.
</code></pre>
<p>pumuckl schrieb:</p>
<blockquote>
<p>[<br />
Versuch mal sowas:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;omp.h&gt;

int main(int argc, char* argv[])
{
    int i;
    #pragma omp parallel
    for (i = 0; i &lt; 10; ++i)
    {
        printf(&quot;%d: I am thread %d of %d.\n&quot;, i, omp_get_thread_num()+1, omp_get_num_threads());
    }
    return 0;
}
</code></pre>
</blockquote>
<p>Dies hingegen macht ganz was anderes. Gleicher Rechner, mögliche Ausgabe:</p>
<pre><code>0: I am thread 6 of 8.
1: I am thread 6 of 8.
2: I am thread 6 of 8.
3: I am thread 6 of 8.
4: I am thread 6 of 8.
5: I am thread 6 of 8.
6: I am thread 6 of 8.
7: I am thread 6 of 8.
8: I am thread 6 of 8.
9: I am thread 6 of 8.
0: I am thread 1 of 8.
0: I am thread 7 of 8.
0: I am thread 5 of 8.
0: I am thread 8 of 8.
0: I am thread 2 of 8.
0: I am thread 4 of 8.
0: I am thread 3 of 8.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2157247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157247</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 15 Dec 2011 13:01:17 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 13:07:16 GMT]]></title><description><![CDATA[<p>Hm also bei dir geht es also <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Zufällig eine Idee warum es bei mir nicht gehen könnte/sollte? Hardwaretechnisch sollte ja alles gegeben sein.</p>
<p>Probier mal bei dem Code mit der for Schleife:<br />
#pragma omp parallel for<br />
(Wie ichs im Beitrag zuvor schon hatte). So soll man es zumindest laut Doku machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157250</guid><dc:creator><![CDATA[Chris Benoit*]]></dc:creator><pubDate>Thu, 15 Dec 2011 13:07:16 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 13:19:10 GMT]]></title><description><![CDATA[<p>Womöglich ist bei dieser Implementation OMP_DYNAMIC nicht von Haus aus gesetzt. Schreib mal</p>
<pre><code class="language-cpp">omp_set_dynamic(1);
</code></pre>
<p>davor und kuck, ob es dann geht. Ich meine mich zu erinnern, dass das Default-Verhalten in dieser Beziehung iplementationsdefiniert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157255</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 15 Dec 2011 13:19:10 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 13:26:10 GMT]]></title><description><![CDATA[<p>Hilft leider nicht wirklich.<br />
Hatte es so probiert:</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;omp.h&gt;

int main(int argc, char* argv[])
{

	omp_set_dynamic(1);
//	omp_set_num_threads(4);
    #pragma omp parallel
    {
        printf(&quot;I am thread %d of %d.\n&quot;, omp_get_thread_num()+1, omp_get_num_threads());
    }
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2157257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157257</guid><dc:creator><![CDATA[Chris Benoit*]]></dc:creator><pubDate>Thu, 15 Dec 2011 13:26:10 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 13:37:31 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Würde mich arg verwundern. Führt er bei ner for-Schleife auch die komplette Schleife viermal nebeneinander aus? Sollte ja dann eigentlich ja jeder Thread nur Teile der Schleife ausführen, oder?</p>
</blockquote>
<p>Ich glaube, dafür nutzt man dann <a href="http://msdn.microsoft.com/de-de/library/6z19s8e0.aspx" rel="nofollow">for (OpenMP)</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157264</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Thu, 15 Dec 2011 13:37:31 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 13:39:29 GMT]]></title><description><![CDATA[<p>Du hast OpenMP aber in den Projekteinstellungen angeschaltet, oder? (Konfigurationseigenschaften -&gt; C/C++ -&gt; Sprache -&gt; OpenMP-Unterstützung heißt das bei MSVC 2008, bei 2010 vermutlich ähnlich)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157266</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 15 Dec 2011 13:39:29 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 13:51:13 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>#pragma omp parallel for</p>
</blockquote>
<p>Jap, sorry. Bin da nicht so firm mit den ganzen Dingen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157274</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 15 Dec 2011 13:51:13 GMT</pubDate></item><item><title><![CDATA[Reply to #pragma omp on Thu, 15 Dec 2011 13:53:19 GMT]]></title><description><![CDATA[<p>@seldon: Jetzt schon :p<br />
Nun läufts auch! Wusste nicht das es dort so einen Punkt gibt (war lange mit VS 2005 unterwegs <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2157275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2157275</guid><dc:creator><![CDATA[Chris Benoit*]]></dc:creator><pubDate>Thu, 15 Dec 2011 13:53:19 GMT</pubDate></item></channel></rss>