<?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[Parallele Abarbeitung einer for schleife]]></title><description><![CDATA[<p dir="auto">Hallo zusammen,</p>
<p dir="auto">Ich arbeite an einer Anwendung in der ich ein dreidimensionales array 7x7x7 an Objekten aus einer selbst gebauten Klasse habe. In der Klasse habe ich eine clear() - Funktion eingebaut, mit der ich sämtliche Werte eines Objekts dieser Klasse zurücksetzen kann (alle strings="", int=0 usw).<br />
Weiterhin habe ich eine Funktion gebaut, in der ich alle im array befindlichen Objekte zurücksetzen kann. Diese Funktion besteht im wesentlichen aus 3 for-schleifen:</p>
<pre><code>clearall(){

for(int i=0; i&lt;7; i++){
for(int j=0; j&lt;7; j++){
for(int k=0; k&lt;7; k++){
    Arrayname[i][j][k].clear();
}}}

}
</code></pre>
<p dir="auto">Das Problem ist, dass der gesamte Durchlauf relative lange ist. Ich habe mich gefragt, ob es irgendwie möglich ist, die einzelnen Objekte des Arrays parallel abzuarbeiten. Da sie unabhängig voneinander sind, sollte das gehen. Nach der for-verschachtelung soll es natürlich erst weitergehen, wenn alle "clear()" durchgeführt wurden.<br />
Ich bin nach längerer  Recherche auf die Klassen QThread und QtConcurrent gestoßen. Leider bin ich mit dieser Doku etwas überfordert und einfache Beispiele, die ich auf meinen Fall übertragen kann, finde ich nicht. Ich schätze, QtConcurrrent ist das richtige für mich, allerdings gibt es dort auch gefühlt 1000 verschiedene Funktionen. Kann mir jemand sagen, was das Richtige für mein Problem ist und wie es ie Funktion anwenden kann?</p>
<p dir="auto">Vielen Dank!</p>
]]></description><link>https://forum.qt.io/topic/130663/parallele-abarbeitung-einer-for-schleife</link><generator>RSS for Node</generator><lastBuildDate>Tue, 10 Mar 2026 09:29:40 GMT</lastBuildDate><atom:link href="https://forum.qt.io/topic/130663.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Sep 2021 17:57:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Parallele Abarbeitung einer for schleife on Thu, 30 Sep 2021 04:24:48 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/joecfd">@<bdi>JoeCFD</bdi></a> Sicher ist es möglich. Warum sollte das nicht möglich sein? Pointer können auch wie Arrays benutzt werden: ptr[index]. Einfach für jeden thread einen bereich des Array definieren: begin/end und dann in diesem Bereich iterieren:</p>
<pre><code>void doWork(int begin, int end, ArrayDef *ptr)
{
    for (int cc=begin; cc &lt; end ; cc++ ) {
        ptr[cc].clear();
       }
}
</code></pre>
]]></description><link>https://forum.qt.io/post/682785</link><guid isPermaLink="true">https://forum.qt.io/post/682785</guid><dc:creator><![CDATA[jsulm]]></dc:creator><pubDate>Thu, 30 Sep 2021 04:24:48 GMT</pubDate></item><item><title><![CDATA[Reply to Parallele Abarbeitung einer for schleife on Wed, 29 Sep 2021 18:26:54 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/jsulm">@<bdi>jsulm</bdi></a> Bei sehr großen Arrays könnte man mit dem Ansatz von <a class="plugin-mentions-user plugin-mentions-a" href="/user/mrjj">@<bdi>mrjj</bdi></a> die Arbeit auf mehrere Threads verteilen solange kein UI betroffen ist.<br />
nicht moeglich wegen ptr++;</p>
]]></description><link>https://forum.qt.io/post/682766</link><guid isPermaLink="true">https://forum.qt.io/post/682766</guid><dc:creator><![CDATA[JoeCFD]]></dc:creator><pubDate>Wed, 29 Sep 2021 18:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to Parallele Abarbeitung einer for schleife on Wed, 29 Sep 2021 05:31:09 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/freakonaleash">@<bdi>Freakonaleash</bdi></a> said in <a href="/post/682522">Parallele Abarbeitung einer for schleife</a>:</p>
<blockquote>
<p dir="auto">Dort werden viele strings auf "" gesetzt und sogar nochmal schleifen durchlaufen.</p>
</blockquote>
<p dir="auto">Dann bringt es wenig diese 3 Schleifen zu optimieren, da die Anzahl der clear() Aufrufe gleich bleibt und dort die meiste Arbeit stattfindet. Bei sehr großen Arrays könnte man mit dem Ansatz von <a class="plugin-mentions-user plugin-mentions-a" href="/user/mrjj">@<bdi>mrjj</bdi></a> die Arbeit auf mehrere Threads verteilen solange kein UI betroffen ist.</p>
]]></description><link>https://forum.qt.io/post/682583</link><guid isPermaLink="true">https://forum.qt.io/post/682583</guid><dc:creator><![CDATA[jsulm]]></dc:creator><pubDate>Wed, 29 Sep 2021 05:31:09 GMT</pubDate></item><item><title><![CDATA[Reply to Parallele Abarbeitung einer for schleife on Tue, 28 Sep 2021 18:44:35 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/freakonaleash">@<bdi>Freakonaleash</bdi></a><br />
Hi<br />
Normalerweise kann das Abrollen von Schleifen die Geschwindigkeit erhöhen, aber<br />
ich bin mir in diesem Fall nicht sicher.<br />
Es könnte sein, dass das eigentliche reset() der zeitaufwändigste Teil ist, wie Sie sagen.</p>
]]></description><link>https://forum.qt.io/post/682525</link><guid isPermaLink="true">https://forum.qt.io/post/682525</guid><dc:creator><![CDATA[mrjj]]></dc:creator><pubDate>Tue, 28 Sep 2021 18:44:35 GMT</pubDate></item><item><title><![CDATA[Reply to Parallele Abarbeitung einer for schleife on Tue, 28 Sep 2021 18:37:35 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/joecfd">@<bdi>JoeCFD</bdi></a> danke! Werde ich mal testen.</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mrjj">@<bdi>mrjj</bdi></a> : interessanter Ansatz. Hätte nicht gedacht, dass es dadurch schneller wird. Bzgl "7x7x7 ist nicht so viel": die clear() - Funktion habe ich selbst implementiert. Dort werden viele strings auf "" gesetzt und sogar nochmal schleifen durchlaufen. Ich denke, es "summiert" sich dadurch....</p>
]]></description><link>https://forum.qt.io/post/682522</link><guid isPermaLink="true">https://forum.qt.io/post/682522</guid><dc:creator><![CDATA[Freakonaleash]]></dc:creator><pubDate>Tue, 28 Sep 2021 18:37:35 GMT</pubDate></item><item><title><![CDATA[Reply to Parallele Abarbeitung einer for schleife on Tue, 28 Sep 2021 18:33:03 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/freakonaleash">@<bdi>Freakonaleash</bdi></a> OpenMP ist verfuegbar and gratis auf WIndows und Linux<br />
<a href="https://www.dartmouth.edu/~rc/classes/intro_openmp/compile_run.html" target="_blank" rel="noopener noreferrer nofollow ugc">https://www.dartmouth.edu/~rc/classes/intro_openmp/compile_run.html</a></p>
]]></description><link>https://forum.qt.io/post/682520</link><guid isPermaLink="true">https://forum.qt.io/post/682520</guid><dc:creator><![CDATA[JoeCFD]]></dc:creator><pubDate>Tue, 28 Sep 2021 18:33:03 GMT</pubDate></item><item><title><![CDATA[Reply to Parallele Abarbeitung einer for schleife on Tue, 28 Sep 2021 18:29:26 GMT]]></title><description><![CDATA[<p dir="auto">Hi<br />
ist Arrayname ein normales c-Array, so dass Sie wie folgt vorgehen könnten</p>
<pre><code> ArrayDef Arrayname[7][7][7];
 ArrayDef *ptr =  &amp;Arrayname[0][0][0];

   for (int cc=0; cc &lt; 7*7*7 ; cc++ ) {
    ptr-&gt;clear();
    ptr++;
   }

</code></pre>
<p dir="auto">Aber für eine 7x7x7 Schleife scheint es nicht nötig zu sein, da sie sehr schnell sein sollte?</p>
]]></description><link>https://forum.qt.io/post/682519</link><guid isPermaLink="true">https://forum.qt.io/post/682519</guid><dc:creator><![CDATA[mrjj]]></dc:creator><pubDate>Tue, 28 Sep 2021 18:29:26 GMT</pubDate></item><item><title><![CDATA[Reply to Parallele Abarbeitung einer for schleife on Tue, 28 Sep 2021 18:20:46 GMT]]></title><description><![CDATA[<p dir="auto">Danke, habe mich gerade bzgl. OpenMP informiert. Scheint das zu sein, was ich brauchen könnte.<br />
Funktioniert das mit jedem Compiler? Auch mit dem mingw? Dazu konnte ich noch nichts finden.</p>
]]></description><link>https://forum.qt.io/post/682517</link><guid isPermaLink="true">https://forum.qt.io/post/682517</guid><dc:creator><![CDATA[Freakonaleash]]></dc:creator><pubDate>Tue, 28 Sep 2021 18:20:46 GMT</pubDate></item><item><title><![CDATA[Reply to Parallele Abarbeitung einer for schleife on Tue, 28 Sep 2021 18:13:45 GMT]]></title><description><![CDATA[<p dir="auto">Es is einfacher, OpenMP to benutzen.<br />
7<em>7</em>7 Array ist nicht arg viel. I glaube nicht, es lohnt sich, so was an einer GUI Anwendung zu beschleunigen.</p>
]]></description><link>https://forum.qt.io/post/682514</link><guid isPermaLink="true">https://forum.qt.io/post/682514</guid><dc:creator><![CDATA[JoeCFD]]></dc:creator><pubDate>Tue, 28 Sep 2021 18:13:45 GMT</pubDate></item></channel></rss>