<?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[omp ordered und array]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine for-Schleife ueber eine int-Variable, die ich mit</p>
<pre><code class="language-cpp">#pragma omp parallel for ordered
</code></pre>
<p>parallelisieren kann, da die eigentlichen Berechnungen unabhaengig voneinander sind. Nur das jeweilige Ergebnis speichere ich als Objekt ein einem std::vector. Um Speicherprobleme bei der Parallelisierung zu verhinden, musste ich das &quot;vec.push_back(object)&quot; mit</p>
<pre><code class="language-cpp">#pragma omp ordered
</code></pre>
<p>einbetten.</p>
<p>Wenn ich den Platz fuer den vector vorher anfordere, koennte ich natuerlich per index darauf zugreifen und so das</p>
<pre><code class="language-cpp">#pragma omp ordered
</code></pre>
<p>vermeiden, da es keine zeitgleichen Zugriffe auf den gleichen Speicherbereich geben wuerde.</p>
<p>Meine Frage: Lohnt sich dieser Weg, oder ist ein Compiler (bei mir gnu gcc) schlau genug, dieses 'ordered' entsprechen zu handhaben?</p>
<p>P.S.: Dies sind meine ersten Gehversuche mit openmp, kann sein, dass es zu meiner Frage einen ganz anderen, besseren Zugang gibt, der mir nur noch nicht bekannt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278862/omp-ordered-und-array</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 23:17:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278862.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Dec 2010 11:57:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to omp ordered und array on Tue, 14 Dec 2010 11:57:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine for-Schleife ueber eine int-Variable, die ich mit</p>
<pre><code class="language-cpp">#pragma omp parallel for ordered
</code></pre>
<p>parallelisieren kann, da die eigentlichen Berechnungen unabhaengig voneinander sind. Nur das jeweilige Ergebnis speichere ich als Objekt ein einem std::vector. Um Speicherprobleme bei der Parallelisierung zu verhinden, musste ich das &quot;vec.push_back(object)&quot; mit</p>
<pre><code class="language-cpp">#pragma omp ordered
</code></pre>
<p>einbetten.</p>
<p>Wenn ich den Platz fuer den vector vorher anfordere, koennte ich natuerlich per index darauf zugreifen und so das</p>
<pre><code class="language-cpp">#pragma omp ordered
</code></pre>
<p>vermeiden, da es keine zeitgleichen Zugriffe auf den gleichen Speicherbereich geben wuerde.</p>
<p>Meine Frage: Lohnt sich dieser Weg, oder ist ein Compiler (bei mir gnu gcc) schlau genug, dieses 'ordered' entsprechen zu handhaben?</p>
<p>P.S.: Dies sind meine ersten Gehversuche mit openmp, kann sein, dass es zu meiner Frage einen ganz anderen, besseren Zugang gibt, der mir nur noch nicht bekannt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994304</guid><dc:creator><![CDATA[tim_g]]></dc:creator><pubDate>Tue, 14 Dec 2010 11:57:37 GMT</pubDate></item><item><title><![CDATA[Reply to omp ordered und array on Tue, 14 Dec 2010 12:12:04 GMT]]></title><description><![CDATA[<p>Wieso ordered? Ich habs so verstanden</p>
<pre><code class="language-cpp">int main() 
{
    const size_t num = 100;
    std::vector&lt;int&gt; results(num);

    #pragma omp for
    for (size_t i = 0; i &lt; num; ++i) 
    {
        results[i] = i*i;
    }

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1994315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994315</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Tue, 14 Dec 2010 12:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to omp ordered und array on Tue, 14 Dec 2010 12:16:05 GMT]]></title><description><![CDATA[<p>tim_g schrieb:</p>
<blockquote>
<p>Meine Frage: Lohnt sich dieser Weg,</p>
</blockquote>
<p>Na klar, genau so etwas wie omp ordered will man ja vermeiden! Und die Nachteile hier sind 0.</p>
<blockquote>
<p>oder ist ein Compiler (bei mir gnu gcc) schlau genug, dieses 'ordered' entsprechen zu handhaben?</p>
</blockquote>
<p>Wie sollte er? Es gibt ja einen Grund warum du für das push_back ein omp ordered brauchst. Da kann der Compiler auch nichts dran machen. Das Programmverhalten ist definiertermaßen ein ganz anderes wenn du die Elemente vorher anlegst anstatt sie mit push_back anzuhängen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994320</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 14 Dec 2010 12:16:05 GMT</pubDate></item><item><title><![CDATA[Reply to omp ordered und array on Tue, 14 Dec 2010 12:53:49 GMT]]></title><description><![CDATA[<p>Vielen Dank! Hab's mittlerweile auch mal ausprobiert, und der Unterschied ist tatsaechlich enorm und deutlich sichtbar!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994354</guid><dc:creator><![CDATA[tim_g]]></dc:creator><pubDate>Tue, 14 Dec 2010 12:53:49 GMT</pubDate></item></channel></rss>