<?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[[clock()] maschinenabhängig?]]></title><description><![CDATA[<p>Wir verwenden MPI für die parallele Berechnung von Strömungen.<br />
Hierbei habe ich folgende abstrahierte Vorgehensweise:</p>
<pre><code class="language-cpp">Master:
{
double  startTimeMPI = MPI::Wtime();
clock_t startTimeStd = clock();  //clock_t ist normalerweise vom Typ ein long

... //starte clienten (die ebenfalls die Zeit von Start bis Ende messen)

MPI::Barrier(); //sync Punkt

double  endTimeMPI = MPI::Wtime();
clock_t endTimeStd = clock();  

cout&lt;&lt;&quot;Master-MPI: &quot;&lt;&lt; endTimeMPI-startTimeMPI &lt;&lt;&quot;s&quot;&lt;&lt;endl;
cout&lt;&lt;&quot;Master-Std: &quot;&lt;&lt; (double)(endTimeStd-startTimeStd)/CLOCKS_PER_SEC&lt;&lt;&quot;s&quot;&lt;&lt;endl;

}
//////////////////////////////////////////////////////
Client:
{
double  startTimeMPI = MPI::Wtime();
clock_t startTimeStd = clock();  

... //berechne

MPI::Barrier(); //sync Punkt

double  endTimeMPI = MPI::Wtime();
clock_t endTimeStd = clock();  

cout&lt;&lt;&quot;Client-MPI: &quot;&lt;&lt; endTimeMPI-startTimeMPI &lt;&lt;&quot;s&quot;&lt;&lt;endl;
cout&lt;&lt;&quot;Client-Std: &quot;&lt;&lt; (double)(endTimeStd-startTimeStd)/CLOCKS_PER_SEC; &lt;&lt;&quot;s&quot;&lt;&lt;endl;
}
</code></pre>
<p>Gerechnet wird auf folgendem Systemen:<br />
A - Linux, AMD Opteron 2GHz, 16GB RAM<br />
B - Linux, AMD Opteron 1.4GHz, 2GB RAM</p>
<p>compiliert wurde der Code auf System A mit gcc 3.4.</p>
<p>Bildschirmausgabe sah ungefähr so aus:</p>
<pre><code>Client-MPI: 10s
Client-Std: 10s

Client-MPI: 12s
Client-Std: 12s

Master-MPI: 12s
Master-Std: 8s
</code></pre>
<p>Die Daten sind nur Bsp Daten. Nun habe ich die Vermutung, dass es darin liegt, dass der Code auf einem inhomogenen System läuft, und die clock()-Methode irgendwie abhängig vom Maschinen-Typ ist zumindest in der gcc Implemenierung.</p>
<p>Weiß da jemand was genaueres?<br />
Gibt es andereMöglichkeiten Std-mäßig die Zeit zu messen.<br />
time_t ist zu ungenau... Je genauer desto besser. 1/1000s Auflösung wär schon prima.<br />
Gerne auch boost (da schau ich gleich mal hin)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179052/clock-maschinenabhängig</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 01:45:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179052.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Apr 2007 06:44:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [clock()] maschinenabhängig? on Wed, 18 Apr 2007 06:44:46 GMT]]></title><description><![CDATA[<p>Wir verwenden MPI für die parallele Berechnung von Strömungen.<br />
Hierbei habe ich folgende abstrahierte Vorgehensweise:</p>
<pre><code class="language-cpp">Master:
{
double  startTimeMPI = MPI::Wtime();
clock_t startTimeStd = clock();  //clock_t ist normalerweise vom Typ ein long

... //starte clienten (die ebenfalls die Zeit von Start bis Ende messen)

MPI::Barrier(); //sync Punkt

double  endTimeMPI = MPI::Wtime();
clock_t endTimeStd = clock();  

cout&lt;&lt;&quot;Master-MPI: &quot;&lt;&lt; endTimeMPI-startTimeMPI &lt;&lt;&quot;s&quot;&lt;&lt;endl;
cout&lt;&lt;&quot;Master-Std: &quot;&lt;&lt; (double)(endTimeStd-startTimeStd)/CLOCKS_PER_SEC&lt;&lt;&quot;s&quot;&lt;&lt;endl;

}
//////////////////////////////////////////////////////
Client:
{
double  startTimeMPI = MPI::Wtime();
clock_t startTimeStd = clock();  

... //berechne

MPI::Barrier(); //sync Punkt

double  endTimeMPI = MPI::Wtime();
clock_t endTimeStd = clock();  

cout&lt;&lt;&quot;Client-MPI: &quot;&lt;&lt; endTimeMPI-startTimeMPI &lt;&lt;&quot;s&quot;&lt;&lt;endl;
cout&lt;&lt;&quot;Client-Std: &quot;&lt;&lt; (double)(endTimeStd-startTimeStd)/CLOCKS_PER_SEC; &lt;&lt;&quot;s&quot;&lt;&lt;endl;
}
</code></pre>
<p>Gerechnet wird auf folgendem Systemen:<br />
A - Linux, AMD Opteron 2GHz, 16GB RAM<br />
B - Linux, AMD Opteron 1.4GHz, 2GB RAM</p>
<p>compiliert wurde der Code auf System A mit gcc 3.4.</p>
<p>Bildschirmausgabe sah ungefähr so aus:</p>
<pre><code>Client-MPI: 10s
Client-Std: 10s

Client-MPI: 12s
Client-Std: 12s

Master-MPI: 12s
Master-Std: 8s
</code></pre>
<p>Die Daten sind nur Bsp Daten. Nun habe ich die Vermutung, dass es darin liegt, dass der Code auf einem inhomogenen System läuft, und die clock()-Methode irgendwie abhängig vom Maschinen-Typ ist zumindest in der gcc Implemenierung.</p>
<p>Weiß da jemand was genaueres?<br />
Gibt es andereMöglichkeiten Std-mäßig die Zeit zu messen.<br />
time_t ist zu ungenau... Je genauer desto besser. 1/1000s Auflösung wär schon prima.<br />
Gerne auch boost (da schau ich gleich mal hin)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1268120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1268120</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 18 Apr 2007 06:44:46 GMT</pubDate></item><item><title><![CDATA[Reply to [clock()] maschinenabhängig? on Wed, 18 Apr 2007 06:57:54 GMT]]></title><description><![CDATA[<p>Afaik misst clock() nur die Zeit, die dein Programm zur Verfügung hatte (d.h. wenn das Betriebssystem deinen Prozess unterbricht, wird auch der Zähler angehalten). Etwas genaueres gibt es im Standard nicht, aber bestimmt auf Systemebene (unter Windows würde mir QueryPerformanceCounter einfallen).</p>
<p>PS: Und die Tatsache, daß die Clock-Ticks systemabhängig sind, könnte auch mit eine Rolle spielen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Du verwendest den CLOCKS_PER_SEC Wert von System A, um Zeiten auf System B zu messen.</p>
<p>PPS: Du hast doch schon MPI::WTime() entdeckt - ich kenne die Funktion zwar nicht, aber was spricht dagegen, sie zu verwenden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1268124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1268124</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 18 Apr 2007 06:57:54 GMT</pubDate></item><item><title><![CDATA[Reply to [clock()] maschinenabhängig? on Wed, 18 Apr 2007 07:02:34 GMT]]></title><description><![CDATA[<p>CLOCKS_PER_SEC ist eine #define und auf 1000 gesetzt.</p>
<p>gegen MPI::Wtime() spricht die Tatsache, dass unser Zeitmesser allgemein funktionieren soll. Das Progeramm läuft auch komplettt ohne MPI...</p>
<p>systemabhängig wäre auch i.O. Kennt da jemand gute Alternativen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1268126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1268126</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 18 Apr 2007 07:02:34 GMT</pubDate></item><item><title><![CDATA[Reply to [clock()] maschinenabhängig? on Wed, 18 Apr 2007 07:08:53 GMT]]></title><description><![CDATA[<p>Uner Linux/BSD: <a href="http://www.hmug.org/man/2/gettimeofday.php" rel="nofollow">gettimeofday</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1268131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1268131</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 18 Apr 2007 07:08:53 GMT</pubDate></item><item><title><![CDATA[Reply to [clock()] maschinenabhängig? on Wed, 18 Apr 2007 07:13:53 GMT]]></title><description><![CDATA[<p>muffmolch schrieb:</p>
<blockquote>
<p>CLOCKS_PER_SEC ist eine #define und auf 1000 gesetzt.</p>
</blockquote>
<p>Auf System A, aber vermutlich nicht auf System B <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1268134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1268134</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 18 Apr 2007 07:13:53 GMT</pubDate></item><item><title><![CDATA[Reply to [clock()] maschinenabhängig? on Wed, 18 Apr 2007 07:32:21 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Auf System A, aber vermutlich nicht auf System B <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>vermutlich, hehe. Die 1000 bezog sich auch auf meinen Windows Rechner und dort zeigt mir Visual Assist das define brav an. Vermutlich steckt der Teufel in der Implentierung der clock() methode, aber ich habe davon echt keinen Plan. jedenfalls kann man sich ja so nicht uaf die Zeitmessung verlassen. Aber selbst der boost timer arbeit nach demselben prinzip...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1268144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1268144</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 18 Apr 2007 07:32:21 GMT</pubDate></item></channel></rss>