<?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, preprocessor, pragma frage]]></title><description><![CDATA[<p>ja ich weiss, ganz dummer titel <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>
<p>ich habe folgendes problem, ich benutzte in meinem projekt<br />
openmp, und da die ganze sache ziemlich zeitkritisch ist, habe ich nun<br />
folgendes problem :</p>
<p>ich habe zB ein klasse</p>
<pre><code class="language-cpp">class mmlp
{
public : 

void calc()
 {
 #pragma omp parallel for
 for(int i=0; i &lt; static_cast&lt;int&gt;(m_mlps.size()); i++)
  {
  m_mlps[i].calc();
  }
 }

private :
std::vector&lt;mlp&gt; m_mlps;
}
</code></pre>
<p>das problem ist nun, das die klasse mlp ebendfalls openmp benutzt,<br />
was dann unsinnig ist, weil es soviele cpus in keinem rechner gibt</p>
<p>die frage ist :</p>
<p>wie schalte ich openmp in der nested Klasse(funktion) ab, wenn openmp<br />
in der drüber schon benutzt wird.<br />
Das geht zwar zur Laufzeit mit openmp anweisungen, aber ich würde<br />
gerne schon zur compile-zeit den overhead der aufrufe an die lib sparen.</p>
<p>Hat jemand eine bessere idee, als mit bool-function-templates-specilization<br />
( 2 versionen, einmal mit openmp, einmal ohne)?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202050/openmp-preprocessor-pragma-frage</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 14:09:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202050.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Jan 2008 06:39:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to openmp, preprocessor, pragma frage on Mon, 07 Jan 2008 06:39:56 GMT]]></title><description><![CDATA[<p>ja ich weiss, ganz dummer titel <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>
<p>ich habe folgendes problem, ich benutzte in meinem projekt<br />
openmp, und da die ganze sache ziemlich zeitkritisch ist, habe ich nun<br />
folgendes problem :</p>
<p>ich habe zB ein klasse</p>
<pre><code class="language-cpp">class mmlp
{
public : 

void calc()
 {
 #pragma omp parallel for
 for(int i=0; i &lt; static_cast&lt;int&gt;(m_mlps.size()); i++)
  {
  m_mlps[i].calc();
  }
 }

private :
std::vector&lt;mlp&gt; m_mlps;
}
</code></pre>
<p>das problem ist nun, das die klasse mlp ebendfalls openmp benutzt,<br />
was dann unsinnig ist, weil es soviele cpus in keinem rechner gibt</p>
<p>die frage ist :</p>
<p>wie schalte ich openmp in der nested Klasse(funktion) ab, wenn openmp<br />
in der drüber schon benutzt wird.<br />
Das geht zwar zur Laufzeit mit openmp anweisungen, aber ich würde<br />
gerne schon zur compile-zeit den overhead der aufrufe an die lib sparen.</p>
<p>Hat jemand eine bessere idee, als mit bool-function-templates-specilization<br />
( 2 versionen, einmal mit openmp, einmal ohne)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1432201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1432201</guid><dc:creator><![CDATA[Treb]]></dc:creator><pubDate>Mon, 07 Jan 2008 06:39:56 GMT</pubDate></item><item><title><![CDATA[Reply to openmp, preprocessor, pragma frage on Wed, 09 Jan 2008 14:56:11 GMT]]></title><description><![CDATA[<p>da keiner geantwortet hat, versuch ich es mal:<br />
soweit ich weiß, sollte openmp zwei geschachtelte parallels gar nicht per default doppelt parallelisieren. laut doku muss man das einstellen für &quot;nested loops&quot;. aber ob das in deinem fall auch als nested gilt, weiß ich nicht. hast du geprüft, ob es doppelt parallel abläuft?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433714</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 09 Jan 2008 14:56:11 GMT</pubDate></item><item><title><![CDATA[Reply to openmp, preprocessor, pragma frage on Thu, 10 Jan 2008 08:48:17 GMT]]></title><description><![CDATA[<p>genau das &quot;zur laufzeit&quot; stört mich ja,</p>
<p>das einstellen, ob nested oder nicht, ist meiner meinung nach<br />
ein aufruf an die openmp-lib<br />
(weil es eine simple function in omp.h ist, und kein pragma)</p>
<p>ich habe zB matrix-multiplikation parallelisiert,<br />
in den mlps werden viele matrix-multiplikationen durchgeführt</p>
<p>die klasse mmlp ist dann ein verbund von mlps, welche alle parallel<br />
ablaufen, somit sind alle aufrufe an openmp innerhalb von den einzelnen<br />
mlps für die katz (verschwendete rechnenzeit)</p>
<p>ich sehe eben als lösung nur :<br />
jede methode welche potentiell openmp benutzt, wird über einen<br />
template-bool-parameter spezialisiert, und dann schaltet die aufrufende<br />
methode, openmp in den aufgerufenen methoden via template-parameter ab,<br />
und das abschalten kann ich dann ja durchreichen</p>
<p>dann müsste ich aber alle openmp-benutzenden methoden doppelt schreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434136</guid><dc:creator><![CDATA[Treb]]></dc:creator><pubDate>Thu, 10 Jan 2008 08:48:17 GMT</pubDate></item><item><title><![CDATA[Reply to openmp, preprocessor, pragma frage on Thu, 10 Jan 2008 13:36:51 GMT]]></title><description><![CDATA[<p>es geht mir eher darum, dass laut dokumentation und dem, an was ich mich noch an eine übung an der uni erinnern kann, openmp nested loops per default nicht doppelt oder mehrfach parallelisiert. das &quot;nachschauen&quot;, ob es überhaupt doppelt parallel ausgeführt wird, ist eher für die kontrolle gedacht, ob openmp deine beiden aufrufe als nested ansieht und deshalb nicht doppelt parallell macht. also mehr zu debugging-zwecken. sobald du herausgefunden hast, dass es nicht doppelt parallel abläuft, kannst du den aufruf wieder entfernen und das problem als gelöst ansehen. zumindest für diese beiden parallels.<br />
außerdem: was hast du gegen aufrufe zur openmp bibliothek? in deinem programm sind durch die pragams sicher genug aufrufe dorthin schon implizit enthalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434280</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 10 Jan 2008 13:36:51 GMT</pubDate></item></channel></rss>