<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Dev Blog &#187; C++</title>
	<atom:link href="http://www.software-dev-blog.de/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.software-dev-blog.de</link>
	<description>Multicore-Programmierung, Multithreading &#38; Co.</description>
	<lastBuildDate>Thu, 29 Jul 2010 15:50:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Parallelprogrammieren lernen mit Schach</title>
		<link>http://www.software-dev-blog.de/parallelprogrammieren-lernen-mit-schach/07/2010/</link>
		<comments>http://www.software-dev-blog.de/parallelprogrammieren-lernen-mit-schach/07/2010/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 14:42:11 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1411</guid>
		<description><![CDATA[Der werte Kollege Deilmann von Intel hat mir ein paar Internetlinks zukommen lassen, deren Inhalte sich mit dem Thema Parallelprogrammierung beschäftigen. Ein Beitrag hierzu ist auf den ersten Blick zwar ziemlich oberflächlich, bietet aber auf den zweiten Blick viele nützliche Infos zum Thema Multicore und Multithreading. In Form eines 34-seitigen pdfs wird nämlich das N-Queens-Problem [...]]]></description>
			<content:encoded><![CDATA[<p>Der werte Kollege <a href="http://www.software-dev-blog.de/infos-aus-erster-hand-zu-cilk/07/2010/">Deilmann von Intel</a> hat mir ein paar Internetlinks zukommen lassen, deren Inhalte sich mit dem Thema Parallelprogrammierung beschäftigen. <a href="http://software.intel.com/en-us/articles/solve-the-n-queens-problem-in-parallel/" target="_blank">Ein Beitrag hierzu</a> ist auf den ersten Blick zwar ziemlich oberflächlich, bietet aber auf den zweiten Blick viele nützliche Infos zum Thema Multicore und Multithreading. In Form eines 34-seitigen pdfs wird nämlich das N-Queens-Problem detailliert dargestellt und gezeigt, wie sich dieses per Parallelprogrammierung lösen lässt.</p>
<p>Zur Erinnerung: das sogenannte <a href="http://de.wikipedia.org/wiki/Damenproblem" target="_blank">&#8220;Damenproblem&#8221;</a> stammt aus der Mathematik und beschäftigt sich mit der Frage, wie viele Damen auf einem Schachbrett so aufgebaut werden können, dass sie sich gemäß der Schachregeln nicht gegenseitig schlagen können. Auf einem 8&#215;8-Schachbrett gibt es übrigens 12 eindeutige Lösungen.</p>
<p>Nur, wie lässt sich das für eine größere Zahl n berechnen, und wie geschieht das auf einem Parallelrechner möglichst schnell? Genau damit beschäftigt sich der pdf-Workshop, der sehr anschaulich und anhand vieler Codebeispiele mögliche Ansätze und Konzepte miteinander vergleicht und natürlich auch verrät, welche Lösung die beste ist, wenn man solche Probleme möglichst elegant und parallel lösen möchte.</p>
<p>Der <a href="http://software.intel.com/en-us/articles/solve-the-n-queens-problem-in-parallel/" target="_blank">Download ist kostenlos</a> und jedem Einsteiger in die Parallelprogrammierung sehr zu empfehlen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/parallelprogrammieren-lernen-mit-schach/07/2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aus seriell mach parallel: Intel Parallel Advisor Lite</title>
		<link>http://www.software-dev-blog.de/aus-seriell-mach-parallel-intel-parallel-advisor-lite/03/2010/</link>
		<comments>http://www.software-dev-blog.de/aus-seriell-mach-parallel-intel-parallel-advisor-lite/03/2010/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 12:38:50 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Optimieren]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1336</guid>
		<description><![CDATA[Kollege Preiss von Intel hat mal wieder fleißig geschrieben, und rausgekommen ist ein gedruckter Beitrag in der Elektronik Industrie, den es aber natürlich auch als PDF zum kostenlosen Download gibt. Thema des Artikels: Intel Parallel Advisor Lite, ein ziemlich mächtiges Tool zum Konvertieren von seriellem in parallelen Code. Der Advisor Lite ist übrigens Teil der [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.software-dev-blog.de/gdc09-so-funktioniert-intel-parallel-studio/08/2009/">Kollege Preiss</a> von Intel hat <a href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">mal</a> <a href="http://www.software-dev-blog.de/surftipp-parallel-studio-artikel-kostenlos-downloaden/06/2009/">wieder</a> fleißig geschrieben, und rausgekommen ist ein gedruckter Beitrag in der <em>Elektronik Industrie</em>, den es aber natürlich auch <a href="http://www.elektronik-industrie.de/ae/article/42006-Consulting-Entwicklungswerkzeug+für+parallele+Anwendungen?PHPSESSID=34d037602581dd4e999a6517b3f93fff">als PDF zum kostenlosen Download</a> gibt. Thema des Artikels: <a href="http://www.software-dev-blog.de/parallel-studio-das-leistet-der-parallel-advisor-lite/05/2009/">Intel Parallel Advisor Lite</a>, ein ziemlich mächtiges Tool zum Konvertieren von seriellem in parallelen Code. Der Advisor Lite ist übrigens Teil der Intel-Suite <a href="http://www.software-dev-blog.de/happy-birthday-parallel-studio/05/2009/">Parallel Studio</a>, ein Plug-In für Visual Studio 2005 und 2008.</p>
<p>In dem ausführlichen Beitrag wird gezeigt, wie das Intel-Tool dabei helfen kann, serielle Codeabschnitte zu parallelisieren. Ach ja: Das betrifft ausschließlich C++-Programmierer. Toll an Advisor Lite ist sein schrittweises Herantasten an den möglichen Multithread-Code: Anstatt alles auf einmal umzustellen, erlaubt das Tool ein sukzessives Optimieren des seriellen Quellcodes. Hierzu setzt es vorhandene Debugger-Tools ein, mit denen der parallelisierte Quellcode sofort getestet und mögliche Fehler identifiziert und eliminiert werden können. Dazu zählen unter anderem Data-Sharing-Probleme, die sich beim Synchronisieren von Threads ergeben können.</p>
<p>Interessant an Edmunds Artikel ist übrigens die Vorgehensweise des Advisor Lite:</p>
<ol>
<li>Leistungsengpässe (Hotspots) identifizieren</li>
<li>Annotationen in den seriellen Quellcode einfügen (eine Art von C-/C++-Makros)</li>
<li>die  annotierten Quellcodes verifizieren</li>
<li>parallele Datenzugriffe untersuchen</li>
<li>Datenkonflikte auflösen, die unter Schritt 4 aufgespürt wurden</li>
<li>Quellcodeänderungen testen</li>
</ol>
<p>Ach ja: Wer noch nicht wissen sollte, was Annotationen sind: Sogar hierzu hält Edmund die passenden Antworten parat. Also alles in allem eine wirklich gelungene Abhandlung in Sachen Parallel Advisor Lite. <a title="Hier gibt's den Artikel als PDF" href="http://www.elektronik-industrie.de/ae/article/42006-Consulting-Entwicklungswerkzeug+f%C3%BCr+parallele+Anwendungen?PHPSESSID=34d037602581dd4e999a6517b3f93fff" target="_blank">Und, worauf wartet ihr noch?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/aus-seriell-mach-parallel-intel-parallel-advisor-lite/03/2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GDC09: Wie Programmierer von Dualen Zahlen profitieren</title>
		<link>http://www.software-dev-blog.de/gdc09-wie-programmierer-von-dualen-zahlen-profitieren/08/2009/</link>
		<comments>http://www.software-dev-blog.de/gdc09-wie-programmierer-von-dualen-zahlen-profitieren/08/2009/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 13:52:27 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Visual Computing]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[GDC09]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Tipp]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1145</guid>
		<description><![CDATA[Vor einer Woche hatte ich angekündigt, dass wir uns die Session &#8220;Dual Numbers: Simple Math, Easy C++ Coding and Lots of Tricks&#8221; ansehen werden. Und genau das haben wir heute getan. Nur so viel: Tough stuff!
Damit wir hier nix Falsches erzählen, konnten wir Gino van den Bergen zu einem Interview überreden, damit er uns etwas [...]]]></description>
			<content:encoded><![CDATA[<p>Vor einer Woche hatte ich <a title=" Wichtige Techsessions der GDC09 auf einen Blick " href="http://www.software-dev-blog.de/wichtige-techsessions-der-gdc09-auf-einen-blick/08/2009/">angekündigt</a>, dass wir uns die Session &#8220;Dual Numbers: Simple Math, Easy C++ Coding and Lots of Tricks&#8221; ansehen werden. Und genau das haben wir heute getan. Nur so viel: Tough stuff!</p>
<p>Damit wir hier nix Falsches erzählen, konnten wir Gino van den Bergen zu einem Interview überreden, damit er uns etwas über Duale Zahlen erzählt: Worum es in seinem Vortrag ging, warum Spieleentwickler auf Duale Zahlen setzen sollten und was das Ganze mit Larrabee zu tun hat.</p>
<p>Nur soviel: Es geht um &#8220;Clean Code&#8221;, um die Vereinfachung der Differentialrechnung, und andere schöne Dinge, mit denen vor allem Spieleprogrammierer zu tun haben.</p>
<p>Und jetzt: Film ab!</p>
<p style="text-align: center;">
<p style="text-align: center;"><object width="464" height="261" data="http://www.youtube.com/v/RlcbyOdvRZA&amp;hl=de&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/RlcbyOdvRZA&amp;hl=de&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/gdc09-wie-programmierer-von-dualen-zahlen-profitieren/08/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC09: So funktioniert Intel Parallel Studio</title>
		<link>http://www.software-dev-blog.de/gdc09-so-funktioniert-intel-parallel-studio/08/2009/</link>
		<comments>http://www.software-dev-blog.de/gdc09-so-funktioniert-intel-parallel-studio/08/2009/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 14:52:06 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Visual Computing]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[GDC09]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1139</guid>
		<description><![CDATA[Am zweiten Tag der Game Developers Conference 2009 in Köln bot sich die Gelegenheit, Parallel Studio aus nächster Nähe zu betrachten. Edmund Preiss nahm sich nämlich die Zeit und weihte uns in die Geheimnisse der Entwickler-Suite ein. Ok, über Parallel Studio habe ich eigentlich schon alles gesagt und geschrieben, aber in gut vier Minuten bekommt [...]]]></description>
			<content:encoded><![CDATA[<p>Am zweiten Tag der <a title="Alle GDC09-Beiträge auf einen Blick" href="http://www.software-dev-blog.de/tag/gdc09/">Game Developers Conference 2009</a> in Köln bot sich die Gelegenheit, <a title="Happy Birthday, Parallel Studio!" href="http://www.software-dev-blog.de/happy-birthday-parallel-studio/05/2009/">Parallel Studio</a> aus nächster Nähe zu betrachten. Edmund Preiss nahm sich nämlich die Zeit und weihte uns in die Geheimnisse der Entwickler-Suite ein. Ok, über Parallel Studio habe ich eigentlich schon alles gesagt und geschrieben, aber in gut vier Minuten bekommt ihr per Video sämtliche Infos auf einen Blick. Daher: Film ab!</p>
<p><object width="464" height="261" data="http://www.youtube.com/v/BfArU1Ee9_0&amp;hl=de&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/BfArU1Ee9_0&amp;hl=de&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/gdc09-so-funktioniert-intel-parallel-studio/08/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Von Intel TBB 2.1 auf Version 2.2 unfallfrei umsteigen</title>
		<link>http://www.software-dev-blog.de/von-intel-tbb-21-auf-version-22-unfallfrei-umsteigen/08/2009/</link>
		<comments>http://www.software-dev-blog.de/von-intel-tbb-21-auf-version-22-unfallfrei-umsteigen/08/2009/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 12:16:26 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[TBB]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1115</guid>
		<description><![CDATA[Erst am Dienstag hat Intel seine neueste Version der Threading Building Blocks vorgestellt. Und gerade mal einen Tag später hat Terry Wilmarth von Intel ein Rezept online gestellt, mit dessen Hilfe der Umstieg von 2.1 auf 2.2 halbwegs unfallfrei gelingen sollte. Zu den wichtigsten Empfehlungen zählen:

Da die parallel arbeitenden Warteschlangen mit der Version 2.2 sowohl [...]]]></description>
			<content:encoded><![CDATA[<p>Erst am Dienstag hat Intel seine <a title="Mehr Infos zu Intel TBB 2.2" href="http://www.software-dev-blog.de/neue-version-der-intel-threading-building-blocks/08/2009/">neueste Version der Threading Building Blocks</a> vorgestellt. Und gerade mal einen Tag später hat Terry Wilmarth von Intel <a title="Der Umstieg von Intel TBB 2.1 auf Version 2.2" href="http://software.intel.com/en-us/blogs/2009/08/05/transitioning-from-intel-tbb-21-to-22/" target="_blank">ein Rezept online gestellt</a>, mit dessen Hilfe der Umstieg von 2.1 auf 2.2 halbwegs unfallfrei gelingen sollte. Zu den wichtigsten Empfehlungen zählen:</p>
<ul>
<li>Da die parallel arbeitenden Warteschlangen mit der Version 2.2 sowohl begrenzt (bounded) als auch unbegrenzt (unbounded) arbeiten, sollten Programmierer möglichst die begrenzten Warteschlangen benutzen.</li>
</ul>
<ul>
<li>Da sich die Rückgabewerte der Vektor-Funktionen <em>grow_by</em>, <em>grow_to_at_least </em>und<em> push_back</em> geändert haben, ist der Funktionsaufruf ein wenig einfacher geworden. So wird aus <em><strong>std::copy(begin, end, x.begin()+x.grow_by(end-begin));</strong></em> jetzt <em><strong>std::copy(begin, end, x.grow_by(end-begin));</strong></em></li>
</ul>
<ul>
<li>In Intel TBB 2.2 ist <em><strong>auto_partitioner()</strong></em> als Standard gesetzt und löst damit <strong><em>simple_partitioner()</em> </strong>ab.</li>
</ul>
<ul>
<li>Der Begriff der Task-Tiefe spielt in TBB 2.2 keine Rolle mehr. Daher sind <em><strong>depth_type</strong></em> und die Methoden <em><strong>depth()</strong></em>, <em><strong>set_depth()</strong></em> und <em><strong>add_to_depth()</strong></em>.</li>
</ul>
<p>Mehr Infos und weitere Codebeispiele sind <a title="Mehr Beispiele und Infos zum Umstieg von Intel TBB 2.1 auf 2.2" href="http://software.intel.com/en-us/blogs/2009/08/05/transitioning-from-intel-tbb-21-to-22/" target="_blank">im angegebenen Blogbeitrag</a> erhältlich.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/von-intel-tbb-21-auf-version-22-unfallfrei-umsteigen/08/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neue Version der Intel Threading Building Blocks</title>
		<link>http://www.software-dev-blog.de/neue-version-der-intel-threading-building-blocks/08/2009/</link>
		<comments>http://www.software-dev-blog.de/neue-version-der-intel-threading-building-blocks/08/2009/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 16:00:51 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[TBB]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1112</guid>
		<description><![CDATA[Intel hat heute anlässlich der Siggraph 2009 die neueste Version 2.2 seiner C++-Bibliothek Threading Building Blocks vorgestellt. Die wesentlichen Verbesserungen im Vergleich zur Vorgängerversion 2.1 sind zwei Dinge: Lambda-Funktionen gemäß des künftigen C++0x-Standards werden jetzt vollständig unterstützt, und das Lizenzmodell wurde erheblich vereinfacht.
Das soll vor allem Software-Entwicklern die Möglichkeit geben, Intel TBB bei der Programmierung [...]]]></description>
			<content:encoded><![CDATA[<p>Intel hat heute anlässlich der <a title="Intel @ Siggraph 2009" href="http://software.intel.com/en-us/articles/intel-software-network-at-siggraph-2009/" target="_blank">Siggraph 2009</a> die neueste Version 2.2 seiner C++-Bibliothek <a title="Mehr Infos zu Intel TBB" href="http://www.software-dev-blog.de/mit-intel-threading-building-blocks-parallel-programmieren/12/2008/">Threading Building Blocks</a> vorgestellt. Die wesentlichen Verbesserungen im Vergleich zur Vorgängerversion 2.1 sind zwei Dinge: Lambda-Funktionen gemäß des <a title="Heise Developer Online über C++0x" href="http://www.heise.de/newsticker/C-0x-fruehestens-2010-und-ohne-Concepts--/meldung/142523" target="_blank">künftigen C++0x-Standards</a> werden jetzt vollständig unterstützt, und das Lizenzmodell wurde erheblich vereinfacht.</p>
<p>Das soll vor allem Software-Entwicklern die Möglichkeit geben, Intel TBB bei der Programmierung und Optimierung von Multithread-Sourcecode von Anfang an einsetzen zu können. So umfasst beispielsweise die Unreal Engine von Epic Games ab sofort eine kommerzielle Lizenz der Intel TBB, Autodesk stellt in Maya Intel TBB standardmäßig zur Verfügung.</p>
<p>Neben diesen Neuerungen gibt es weitere Dinge, die hinsichtlich mehr Leistung optimiert wurden:</p>
<ul>
<li>Der Taks-Scheduler wurde erheblich überarbeitet, sodass optimierte Anwendungen auf Multicore-Plattformen besser skalieren. Dazu gehören eine automatische Initialisierung bei paralleler Ausführung bestimmter Codeabschnitte und das Zusammenfassen mehrerer Tasks zu einer Gruppe.</li>
</ul>
<ul>
<li>Der Memory Allocator wurde ebenfalls verbessert, was den standardmäßigen Allocator des Betriebssystems ersetzen kann. Folge: bessere Skalierbarkeit der vorhandenen Speicherressourcen und weniger Datenkollisionen.</li>
</ul>
<ul>
<li>Darüber hinaus gibt es neue und verbesserte Konstrukte. Neu sind <em><strong>parallel_invoke</strong></em> and <em><strong>parallel_for_each, </strong></em>mit deren Hilfe sich parallele Konstrukte noch einfacher erstellen lassen. Zudem wurde das Erstellen der häufig benutzten parallel_for-Konstrukts vereinfacht.</li>
</ul>
<p>Ach ja: Für ein besseres Verständnis, was es mit den optimierten Lambda-Funktionen auf sich hat, empfehle ich zwei Blogposts (<a title="&quot;Hello Lambdas&quot; C++ 0x, a quick guide to Lambdas in C++" href="http://software.intel.com/en-us/blogs/2009/08/03/hello-lambdas-c-0x-a-quick-guide-to-lambdas-in-c/" target="_blank">Nummer 1</a> und <a title="parallel_for is easier with lambdas, Intel Threading Building Blocks" href="http://software.intel.com/en-us/blogs/2009/08/03/parallel_for-is-easier-with-lambdas-intel-threading-building-blocks/" target="_blank">Nummer 2</a>) des Kollegen Reinders, in denen er sehr anschaulich erklärt, was es bringt und was sich dadurch ändert.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/neue-version-der-intel-threading-building-blocks/08/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cilk: parallele Programmierung mit intelligenten Ansätzen</title>
		<link>http://www.software-dev-blog.de/cilk-parallele-programmierung-mit-intelligenten-ansatzen/08/2009/</link>
		<comments>http://www.software-dev-blog.de/cilk-parallele-programmierung-mit-intelligenten-ansatzen/08/2009/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 16:08:11 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Kooperation]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1111</guid>
		<description><![CDATA[Ein Besuch der Intel-Software-Blogs brachte mich auf einen Beitrag, den Parallel-Guru James Reinders unter der Überschrift &#8220;Cilk + Intel&#8221; vor kurzem veröffentlicht hat. Cilk? Noch nie gehört. Na, dann mal flugs in Wikipedia eingetippt. Dabei kam folgender Einstiegssatz zum Vorschein:
Cilk is a general-purpose programming language designed for multithreaded parallel computing.
Hey, dachte ich, das ist doch [...]]]></description>
			<content:encoded><![CDATA[<p>Ein Besuch der Intel-Software-Blogs brachte mich <a title="Blogpost auf software.intel.com zu Cilk &amp; Intel" href="http://software.intel.com/en-us/blogs/2009/07/31/cilk-intel/" target="_blank">auf einen Beitrag</a>, den Parallel-Guru <a title="James Reinders auf der Intel Software Konferenz 2009" href="http://www.software-dev-blog.de/isc09-parallele-programmierung-fur-den-mainstream/04/2009/">James Reinders</a> unter der Überschrift &#8220;Cilk + Intel&#8221; vor kurzem veröffentlicht hat. Cilk? Noch nie gehört. Na, dann mal flugs in Wikipedia eingetippt. Dabei kam folgender Einstiegssatz zum Vorschein:</p>
<blockquote><p>Cilk is a general-purpose programming language designed for multithreaded parallel computing.</p></blockquote>
<p>Hey, dachte ich, das ist doch ein prima Thema für mein Blog. Also, dann schnell mal geguckt, was Cilk und Intel gemein haben (neben der Absicht, die parallele Programmierung unter C/C++ zu vereinfachen:</p>
<blockquote><p>If you&#8217;ve visited <a href="http://cilk.com/">cilk.com</a> today, you see that the Cilk engineering team has joined Intel.</p></blockquote>
<p>Das heißt also, Intel und Cilk machen jetzt gemeinsame Sache?! Sieht ganz danach aus. Denn wie sagt James zusammenfassend:</p>
<blockquote><p>Cilk technology will complement other methods we have had great success with &#8211; including <a title="Workshop: Parallel programmieren mit OpenMP" href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">OpenMP</a> and <a title="Mit Intel Threading Building Blocks parallel programmieren" href="http://www.software-dev-blog.de/mit-intel-threading-building-blocks-parallel-programmieren/12/2008/">Intel Threading Building Blocks</a>.</p></blockquote>
<p>Aha, das bedeutet, dass Cilk++ eine prima Ergänzung zu den Intel-Tools wie <a title="Happy Birthday, Parallel Studio!" href="http://www.software-dev-blog.de/happy-birthday-parallel-studio/05/2009/">Parallel Studio</a> oder Intel TBB  bedeutet? Soll wohl so sein. Doch was steckt hinter Cilk++ und was sind die Merkmale dieser Programmiersprache?</p>
<p><span id="more-1111"></span>Nun, ähnlich wie bei OpenMP gibt es sogenannte Keywords (bei OpenMP heißen diese &#8220;Pragmas&#8221;), mit deren Hilfe sich ein seriell programmierter Quellcodeabschnitt in ein parallel ablaufendes Konstrukt verwandelt. Ein beliebtes und oft verwendetes Beispiel ist die rekursive Berechnung von Fibonacci-Zahlen, mit deren Hilfe der Mathematiker 1202 n. Chr. das Wachstum einer Kaninchenpopulation beschreiben wollte:</p>
<p>cilk int fib (int n)<br />
02 {<br />
03     if (n &lt; 2) return n;<br />
04     else<br />
05     {<br />
06        int x, y;<br />
07<br />
08        x = <em><strong>spawn</strong></em> fib (n-1);<br />
09        y = spawn fib (n-2);<br />
10<br />
11        <em><strong>sync</strong></em>;<br />
12<br />
13        return (x+y);<br />
14     }<br />
15 }</p>
<p>Die entscheidenden Schlüsselwörter lauten <strong><em>spawn</em></strong> (Zeile 8 und 9) und <em><strong>sync</strong></em> (Zeile 11). Dies Keywords sorgen dafür, dass die Funktion parallel auf zwei oder mehreren Prozessorkernen ausgeführt wird. Den Rest übernimmt die Runtime von Cilk++, die sich um das Erstellen von Threads kümmert, um das Synchronisieren derselben und um das richtige Beenden der parallel laufenden Threads. Dies ist auch der große Unterschied zu OpenMP.</p>
<p>Darüber hinaus verfügt Cilk++ über zwei weitere Keywords: <em><strong>inlet</strong></em> und <em><strong>abort</strong></em>. Inlets sind einfache Funktionen innerhalb einer Cilk-Prozedur, die den Rückgabewert einer parallelisierten Funktion übergeben. Der Witz an Inlets ist deren atomare Struktur: Soll heißen, dass diese Funktionen vom Scheduler nicht synchronisiert werden müssen, was die Fehleranfälligkeit einer derart parallelisierten Funktion minimiert. Abort beendet diese inlet-Funktionen.</p>
<p>Cilk gibt es übrigens schon ziemlich lange: Enstanden am ehrwürdigen MIT Laboratory for Computer Science, wurde es bereits 1994 zum ersten Mal erwähnt. Kein Wunder also, dass sich Intel der Dienste von Cilk Arts bedient und Cilk++ ins eigene Portfolio aufnehmen wird, um beispielsweise Parallel Studio weiter voranzubringen.</p>
<p>Ach ja: Wer mehr Insider-Wissen zu Cilk haben will. sollte auf jeden Fall deren <a title="Multicore-Blog von Cilk Arts" href="http://www.cilk.com/multicore-blog/" target="_blank">Multicore-Blog</a> besuchen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/cilk-parallele-programmierung-mit-intelligenten-ansatzen/08/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maxon-Multithreading: Darum ist Cinema 4D so performant</title>
		<link>http://www.software-dev-blog.de/maxon-multithreading-darum-ist-cinema-4d-so-performant/06/2009/</link>
		<comments>http://www.software-dev-blog.de/maxon-multithreading-darum-ist-cinema-4d-so-performant/06/2009/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 07:24:17 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Referenz]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1069</guid>
		<description><![CDATA[Maxon ist vor allem bei 3D-Designern ziemlich bekannt, denn mit Cinema 4D steht dieser Anwenderschar seit mehr als 15 20 Jahren ein Modeling- und Renderingtool zur Verfügung, mit dem sich hoch komplexe 3D-Gebilde erschaffen lassen. Aber auch Hardware-Redaktionen können mit dem Namen Maxon etwas anfangen: So kann man mit dem kostenlosen Benchmark-Tool CineBench die Rechen- [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Maxon-Webseite" href="http://www.maxon.net/index.php?id=190&amp;L=2" target="_blank">Maxon</a> ist vor allem bei 3D-Designern ziemlich bekannt, denn mit <em><a title="Mehr Infos zu Cinema 4D" href="http://www.maxon.net/index.php?id=18&amp;L=2" target="_blank">Cinema 4D</a></em> steht dieser Anwenderschar seit mehr als <span style="text-decoration: line-through;">15</span> 20 Jahren ein Modeling- und Renderingtool zur Verfügung, mit dem sich hoch komplexe 3D-Gebilde erschaffen lassen. Aber auch Hardware-Redaktionen können mit dem Namen Maxon etwas anfangen: So kann man mit dem kostenlosen Benchmark-Tool <em><a title="Mehr Infos und Download-Link zu CineBench" href="http://www.maxon.net/index.php?id=162&amp;L=2" target="_blank">CineBench</a></em> die Rechen- und Grafikleistung eines PCs oder Notebooks testen. Dabei ermittelt <em>CineBench</em> auch die Multicore-Fähigkeiten von Rechnern, indem automatisch alle verfügbaren Prozessorkerne ausgelastet werden. Ein prima Multithreading-Testtool also.</p>
<p>Um <em>Cinema 4D</em> multicore-tauglich zu machen, unternimmt Maxon schon seit vielen Jahren größte Anstrengungen. Das geschieht bereits seit Mitte der 90er Jahre, lange bevor die die ersten Prozessoren mit Hyperthreading auf den Markt kamen. Schon damals galt die Parallelprogrammierung als eine nicht ganz triviale Disziplin, da man vor allem die gemeinsamen Speicherzugriffe und die daraus resultierenden Probleme wie Dead Locks und Data Races in den Griff bekommen musste. Mit Erfolg, wie man an <em>Cinema 4D</em> gut sehen kann.</p>
<p>Doch was hat Maxon alles im Laufe der Jahre getan, damit die Anwendungen auf einem Multicore-System optimal skalieren? Dazu hat Tilo Kühn, Senior Software Developer bei Maxon, eine recht einfache Erklärung parat: Man muss als Entwickler vor allem dafür sorgen, dass die Datenstrukturen von Anfang an so angelegt werden, dass beim parallelen Ausführen der Anwendung die Anzahl der Synchronisation so gering wie möglich ausfällt und es nicht zu Data Races oder ähnlichen Verklemmungen kommen kann. Denn jede Datensynchronisation bedeutet einen Mehraufwand, der den Programmablauf unnötig stört und behindert.</p>
<p><span id="more-1069"></span>Das gilt zumindest für Systeme mit bis zu acht Prozessorkernen. Darüber hinaus weiß Maxon bereits heute, dass de Programmiertechniken weiter verbessert werden müssen, um in Zukunft auch auf Systemen zu skalieren, die mehr als acht Cores bieten. Allerdings sind die Leute bei Maxon schon eine ganze Weile an dem Thema dran, sodass möglicherweise mit der nächsten Version von <em>Cinema 4D</em> ein neues Framework zum Einsatz kommen wird. Das Ganze wird dann wohl auf Basis des <a title="Optimierte Compiler helfen beim Parallelisieren" href="http://www.software-dev-blog.de/optimierte-compiler-helfen-beim-parallelisieren/12/2008/">Intel-C++-Compilers Version 11.1 </a>geschehen.</p>
<p>Interessant ist übrigens auch die Aufwandseinschätzung, was das Parallelisieren von Schleifen betrifft, wie sie beim Rendern von 3D-Gebilden häufig angewandt werden: So benötigt man für das Umstellen von sequenziellen auf parallele For-Schleifen mit Bordmitteln (APIs, Pthreads) rund einen Tag, mithilfe von <a title="Workshop: parallel Programmieren mit OpenMP" href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">OpenMP-Pragmas</a> ist dieselbe Arbeit innerhalb von gut einer Stunde erledigt &#8211; zumindest für einen ersten aussagekräftigen Test. Daher setzt Maxon bei der Anwendungsentwicklung an dedizierten Stellen auf OpenMP.</p>
<p>Daneben verwendet Maxon schon seit langem <a title="Quellcode-Schwachstellen mit Intel VTune aufspüren" href="http://www.software-dev-blog.de/quellcode-schwachstellen-mit-intel-vtune-aufspuren/11/2008/">VTune Performance Analyzer</a>, um bestimmte Aspekte des Programmablaufs besser verstehen zu können. Hier kommt unter anderem der CallGraph zum Einsatz, um die Zusammenhänge des objektorientierten Programmierens transparenter und damit greifbarer zu machen. VTune würde bei Maxon sogar noch öfter genutzt, wenn der Overhead, der beim Sampling des Sourcecodes entsteht, geringer wäre. Wie gut, dass sich Intel dieser Herausforderung in Form des <a title="Happy Birthday, Parallel Studio!" href="http://www.software-dev-blog.de/happy-birthday-parallel-studio/05/2009/">Parallel Studios</a> und des darin enthaltenen <a title="Parallel-Studio-Serie (3): mehr Infos zum Parallel Inspector" href="http://www.software-dev-blog.de/parallel-studio-serie-mehr-infos-zum-parallel-inspector/02/2009/">Parallel Inspectors</a> erfolgreich gestellt hat. Der Inspector basiert nämlich auf VTune, allerdings in einer schlanken Fassung, die deutlich weniger Overhead produziert.</p>
<p>Ebenfalls zum Einsatz kommt bei Maxon der <a title="Thread Profiler: Parallelisierte Anwendungen grafisch testen" href="http://www.software-dev-blog.de/thread-profiler-parallelisierte-anwendungen-grafisch-testen/02/2009/">Thread Profiler</a>. Was Tilo Kühn an dem Tool besonders mag ist die sehr anschauliche, grafische Darstellung der zeitbasierten Thread-Abhängigkeiten. Auf diesem Weg lassen sich ganz spezielle Codeabschnitte untersuchen, indem man dem Profiler mitteilt, an welcher Stelle mehrere Theads parallel ausgeführt werden. Damit lassen sich relativ einfach mögliche Verklemmungen während des Programmablaufs aufspüren. Aber auch gegenseitige Abhängigkeiten von Threads kann man mit dem Thread Checker grafisch darstellen.</p>
<p>Das verlangt doch geradezu nach einem Einsatz des Parallel Studio bei Maxon, oder?! Was auch passieren wird, wie mir Tilo Kühn glaubhaft versicherte. Na dann: Go parallel!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/maxon-multithreading-darum-ist-cinema-4d-so-performant/06/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Surf-Tipp: Parallel-Studio-Artikel kostenlos downloaden</title>
		<link>http://www.software-dev-blog.de/surftipp-parallel-studio-artikel-kostenlos-downloaden/06/2009/</link>
		<comments>http://www.software-dev-blog.de/surftipp-parallel-studio-artikel-kostenlos-downloaden/06/2009/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 16:50:48 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Basics]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1068</guid>
		<description><![CDATA[Der werte Kollege Preiss von Intel war mal wieder fleißig und hat zur Parallelisierungssuite Parallel Studio einen kleinen, aber feinen Artikel erstellt. Und zwar für das Fachmagazin Elektronik Industrie, das den Beitrag kostenlos zum Download anbietet.
Für aufmerksame Leser des Software Dev Blogs werden sich nicht sonderlich viele Neuigkeiten aus dem Beitrag ableiten lassen, aber in [...]]]></description>
			<content:encoded><![CDATA[<p>Der werte Kollege Preiss von Intel <a title=" Workshop: parallel Programmieren mit OpenMP " href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">war mal wieder fleißig</a> und hat zur Parallelisierungssuite <a title="Mehr Infos zu Parallel Studio" href="http://www.software-dev-blog.de/happy-birthday-parallel-studio/05/2009/">Parallel Studio</a> einen kleinen, aber feinen Artikel erstellt. Und zwar für das Fachmagazin <em>Elektronik Industrie</em>, das den Beitrag <a title="Hier könnt ihr den Parallel-Studio-Artikel kostenlos downloaden" href="http://www.all-electronics.de/article/39611.html" target="_blank">kostenlos zum Download</a> anbietet.</p>
<p>Für aufmerksame Leser des Software Dev Blogs werden sich nicht sonderlich viele Neuigkeiten aus dem Beitrag ableiten lassen, aber in seiner Abgeschlossenheit trägt der Artikel doch sehr zum Verständnis von Parallel Studio bei. Zudem handelt es sich um ein PDF-Dokument, das sich sogar ausdrucken lässt. Für die analogen Zeitgenossen unter uns.</p>
<p>Der Artikel umfasst drei Seiten und geht recht detailliert auf die einzelnen Komponenten ein, also <a title="mehr Infos zum Parallel Composer" href="../serie-mit-parallel-studio-anwendungen-multithreaden/02/2009/">Parallel Composer</a>, <a title="ISC’09: Intel Parallel Inspector im Detail" href="../isc09-intel-parallel-inspector-im-detail/04/2009/">Parallel Inspector</a> und <a title="ISC’09: Intel Parallel Amplifier im Detail" href="../isc%E2%80%9909-intel-parallel-amplifier-im-detail/04/2009/">Parallel Amplifier</a>. Lustigerweise beginnt der Beitrag mit dem <a title=" Parallel Studio: Das leistet der Parallel Advisor Lite " href="http://www.software-dev-blog.de/parallel-studio-das-leistet-der-parallel-advisor-lite/05/2009/">Parallel Advisor</a>. Dieses Tool wird erst in der nächsten Version zum Parallel Studio gehören, kann allerdings heute schon als eine Art Techdemo <a title="Hier könnt ihr Parallel Advisor Lite kostenlos downloaden" href="http://software.intel.com/en-us/articles/intel-parallel-advisor-lite/" target="_blank">kostenlos ausprobiert</a> werden.</p>
<p>Schön an dem Parallel-Studio-Beitrag sind die praxisorientierten Einblicke, die man anhand der eingefügten Bilder gewinnen kann. Schade ist allerdings, dass diese teilweise recht klein geraten sind. Und ein, zwei Codebeispiele hätten dem Artikel zu ein wenig mehr Pfiff verholfen. Na ja, beim nächsten Mal dann, ok?!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/surftipp-parallel-studio-artikel-kostenlos-downloaden/06/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Event-Preview: Parallel Tech Talk und GameCamp in München</title>
		<link>http://www.software-dev-blog.de/event-preview-parallel-tech-talk-und-gamecamp-in-munchen/06/2009/</link>
		<comments>http://www.software-dev-blog.de/event-preview-parallel-tech-talk-und-gamecamp-in-munchen/06/2009/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 09:50:49 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Visual Computing]]></category>
		<category><![CDATA[Award]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1063</guid>
		<description><![CDATA[Der Monat Mai war in Sachen Veranstaltung aus Sicht dieses Blogs äußerst ruhig (mal vom offiziellen Verkaufsstart der Toolsuite Parallel Studio abgesehen). Dafür rührt sich im Juni wieder so einiges, und zwar in doppelter Hinsicht. Den Anfang macht der heutige Abend mit einem TechTalk im Tryp Hotel zu München. Dort werden Darius Parys von Microsoft [...]]]></description>
			<content:encoded><![CDATA[<p>Der Monat Mai war in Sachen Veranstaltung aus Sicht dieses Blogs äußerst ruhig (mal vom offiziellen <a title="Parallel Studio erblickt das Licht der Welt" href="http://www.software-dev-blog.de/happy-birthday-parallel-studio/05/2009/">Verkaufsstart der Toolsuite Parallel Studio</a> abgesehen). Dafür rührt sich im Juni wieder so einiges, und zwar in doppelter Hinsicht. Den Anfang macht der heutige Abend mit einem <a title=" Microsoft und Intel zeigen paralleles Programmieren " href="http://www.software-dev-blog.de/microsoft-und-intel-zeigen-paralleles-programmieren/04/2009/">TechTalk im Tryp Hotel zu München</a>. Dort werden <a title=" Interview: Visual Studio 2010 und seine Multicore-Fähigkeiten " href="../interview-visual-studio-2010-und-seine-multicore-fahigkeiten/02/2009/">Darius Parys von Microsoft</a> und Mario Deilmann von Intel eine Menge zum Thema parallele Programmierung zu erzählen haben.</p>
<p>Klar, dass es dabei vor allem um <a title=" Visual Studio 2010 Beta zum kostenlosen Download " href="http://www.software-dev-blog.de/visual-studio-2010-beta-zum-kostenlosen-download/05/2009/">Visual Studio 2010 samt .NET 4</a> gehen wird, aber natürlich auch um Parallel Studio mit <a title="mehr Infos zum Parallel Composer" href="../serie-mit-parallel-studio-anwendungen-multithreaden/02/2009/">Parallel Composer</a>, <a title="ISC’09: Intel Parallel Inspector im Detail" href="../isc09-intel-parallel-inspector-im-detail/04/2009/">Parallel Inspector</a> und <a title="ISC’09: Intel Parallel Amplifier im Detail" href="../isc%E2%80%9909-intel-parallel-amplifier-im-detail/04/2009/">Parallel Amplifier</a>. Ich bin schon sehr gespannt, wer alles dort zugegen sein wird, um sich höchstpersönlich die Infos aus erster Hand zu holen.</p>
<p>Am übernächsten Wochenende folgt dann das <a title="GameCamp Munich 2009" href="http://www.gamecampmunich.de/" target="_blank">GameCamp Munich 2009</a>, auf dem ich ebenfalls anwesend sein werde, um vor Ort zu bloggen, zu netzwerken und das ein oder andere Video zu drehen. Doch ich werde nicht allein sein: Intel wird sich als Sponsor betätigen und wohl am Sonntag eine eigene Session zum Thema Visual Computing und Multicore abhalten. Das wird bestimmt sehr spannend. Außerdem wird der Kollege hoffentlich einen <a title=" 3D-Demo “Smoke” zeigt das wahre Core i7-Potenzial " href="http://www.software-dev-blog.de/3d-demo-smoke-zeigt-das-wahre-core-i7-potenzial/11/2008/">Demo-PC</a> dabei haben, mit dessen Hilfe er das Thema <a title=" Analysetool für DirectX-Games für mehr Laptop-Performance " href="http://www.software-dev-blog.de/analysetool-fur-directx-games-fur-mehr-laptop-performance/05/2009/">Multicore-Programmierung für 3D-Spiele</a> anschaulich vorführen kann.</p>
<p>Ach ja: Das GameCamp Munich 2009 findet in Unterschleißheim bei Microsoft statt, die ihre Räumlichkeiten für die Konferenz zur Verfügung stellen. Und was ich so gehört habe, sind noch Plätze frei. Also, worauf wartet ihr noch <a title="Hier könnt ihr euch für das GameCamp Munich 2009 anmelden" href="http://www.gamecampmunich.de/gamecamp/gamecamp-teilnehmer/" target="_blank">mit der Anmeldung</a>?!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/event-preview-parallel-tech-talk-und-gamecamp-in-munchen/06/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
