<?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[OpenMP - Frage]]></title><description><![CDATA[<p>Ich habe einen Quellcode vorliegen, den ich mittel OpenMP parallelisieren möchte.</p>
<p>Der Quellcode besteht aus einer while-Schleife, in der verschiedene for-Schleifen, welche verschachtelt sein können, ausgeführt werden.</p>
<p>Einige dieser for-Schleifen bieten sich zur Parallelisierung an.<br />
Um nicht bei jeder for-Schleife neue Threads zu erzeugen, möchte ich die<br />
Threads schon vor der While-Schleife kreiieren. Leider ist mein momentanes Zwischenergebnis nicht korrekt.</p>
<p>Ich habe hier einen minimalen Ausschnitt aus dem Programm:</p>
<pre><code>int i,j;

  #pragma omp parallel private(count)
  while (count &lt; target)
  {
    // Nicht parallelisierbare Schleife
    for (i = 1; i &lt; s; ++i)
    {
      // parallelisierbare Schleife
      #pragma omp for
      for(l = 0; l &lt; N; l++)
      {
        calculate something ...
      }
...
</code></pre>
<p>Kann man hier schon Fehler feststellen?</p>
<p>Wenn ich mich recht entsinne, wird die i-Schleife von allen Threads gleichzeitig bearbeitet. Geschieht dann aber die Abarbeitung der l-Schleife parallel mit Datenverteilung, so dass jeder Thread N/num_threads Iterationen durchführt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/326711/openmp-frage</link><generator>RSS for Node</generator><lastBuildDate>Sun, 31 May 2026 14:01:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326711.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Jul 2014 08:46:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to OpenMP - Frage on Thu, 03 Jul 2014 08:46:08 GMT]]></title><description><![CDATA[<p>Ich habe einen Quellcode vorliegen, den ich mittel OpenMP parallelisieren möchte.</p>
<p>Der Quellcode besteht aus einer while-Schleife, in der verschiedene for-Schleifen, welche verschachtelt sein können, ausgeführt werden.</p>
<p>Einige dieser for-Schleifen bieten sich zur Parallelisierung an.<br />
Um nicht bei jeder for-Schleife neue Threads zu erzeugen, möchte ich die<br />
Threads schon vor der While-Schleife kreiieren. Leider ist mein momentanes Zwischenergebnis nicht korrekt.</p>
<p>Ich habe hier einen minimalen Ausschnitt aus dem Programm:</p>
<pre><code>int i,j;

  #pragma omp parallel private(count)
  while (count &lt; target)
  {
    // Nicht parallelisierbare Schleife
    for (i = 1; i &lt; s; ++i)
    {
      // parallelisierbare Schleife
      #pragma omp for
      for(l = 0; l &lt; N; l++)
      {
        calculate something ...
      }
...
</code></pre>
<p>Kann man hier schon Fehler feststellen?</p>
<p>Wenn ich mich recht entsinne, wird die i-Schleife von allen Threads gleichzeitig bearbeitet. Geschieht dann aber die Abarbeitung der l-Schleife parallel mit Datenverteilung, so dass jeder Thread N/num_threads Iterationen durchführt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406777</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Thu, 03 Jul 2014 08:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to OpenMP - Frage on Thu, 03 Jul 2014 09:02:23 GMT]]></title><description><![CDATA[<p>&lt;Palantir=on&gt;</p>
<p>shisha schrieb:</p>
<blockquote>
<p>Kann man hier schon Fehler feststellen?</p>
</blockquote>
<p>Dein &quot;calculate Something&quot; ist so nicht parallelisierbar<br />
&lt;Palantir=off&gt;</p>
<p>Zeig doch mal mehr Code. So wird Dir hier kaum jemand helfen koennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406781</guid><dc:creator><![CDATA[Saruman]]></dc:creator><pubDate>Thu, 03 Jul 2014 09:02:23 GMT</pubDate></item><item><title><![CDATA[Reply to OpenMP - Frage on Thu, 03 Jul 2014 15:43:27 GMT]]></title><description><![CDATA[<p>Du parallelisierst schon die while-Schleife, was zu Fehlern führt.</p>
<p>Schreib wirklich nur vor die innerste for-Schleife das pragma omp parallel for. Und wenn du die Threads vor den Schleifen schon erzeugen willst mach das hier:</p>
<pre><code>#pragma omp parallel
    ;

while ()
{
    // ...
}
</code></pre>
<p>Aber auch das alles wird hinfällig, wenn deine calculateSomething Funktion nicht parallelisierbar ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406881</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 03 Jul 2014 15:43:27 GMT</pubDate></item></channel></rss>