<?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; Programmieren</title>
	<atom:link href="http://www.software-dev-blog.de/tag/programmieren/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.software-dev-blog.de</link>
	<description>Multicore-Programmierung, Multithreading &#38; Visual Computing</description>
	<lastBuildDate>Thu, 09 Feb 2012 19:54:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>OOP 2011: Stephen Blair-Chappell über Chancen und Grenzen der Parallel-Programmierung</title>
		<link>http://www.software-dev-blog.de/oop-2011-stephen-blair-chappell-uber-chancen-und-grenzen-der-parallel-programmierung/01/2011/</link>
		<comments>http://www.software-dev-blog.de/oop-2011-stephen-blair-chappell-uber-chancen-und-grenzen-der-parallel-programmierung/01/2011/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 17:36:53 +0000</pubDate>
		<dc:creator>Oliver</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Cilk]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[OpenMP]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1466</guid>
		<description><![CDATA[Am gestrigen Dienstag hatte ich auf der OOP 2011 die Gelegenheit, den sehr interessanten Vortrag „Parallelising Legacy Programs“ von Stephen Blair-Chappell, Mitarbeiter der Intel Compiler Labs zu verfolgen. Zu Deutsch: Es ging um das Thema „Parallelisieren bestehender Anwendungen“. Klingt zunächst recht trocken und sehr theoretisch. Stephen hat – trotz vieler Code-Beispiele – seinen Vortrag aber [...]]]></description>
			<content:encoded><![CDATA[<p>Am gestrigen Dienstag hatte ich <a href="http://www.software-dev-blog.de/oop-2011-ralph-de-wargny-zu-tools-und-trends-fur-software-entwickler/01/2011/">auf der OOP 2011</a> die Gelegenheit, den sehr interessanten Vortrag „Parallelising Legacy Programs“ von Stephen Blair-Chappell, Mitarbeiter der Intel Compiler Labs zu verfolgen. Zu Deutsch: Es ging um das Thema „Parallelisieren bestehender Anwendungen“. Klingt zunächst recht trocken und sehr theoretisch. Stephen hat – trotz vieler Code-Beispiele – seinen Vortrag aber didaktisch sehr gut aufgebaut, so dass auch Einsteiger viel nützliches Wissen mitnehmen konnten.</p>
<p>Im Übrigen hatte ich auch die Gelegenheit, nach der Session mit Stephen persönlich zu sprechen und ein kurzes Video-Interview zu führen. Das werde ich selbstverständlich auch in Kürze auf dieser Seite veröffentlichen.</p>
<h3>Fallstricke</h3>
<p>Zurück aber zu den Vorteilen und Fallstricken der Parallel-Programmierung. Stephen konnte anhand früherer Projekte sehr eindrucksvoll demonstrieren, dass der erste Schritt der Parallelisierung immer darin besteht, den vorhandenen Code zu verstehen und zu analysieren. Klingt banal, in der Praxis aber passieren genau hier die meisten Fehler. So verfallen auch erfahrene Programmierer der Verlockung, vorschnell neuen Code zu implementieren, anstatt frühere Schwachstellen zu korrigieren. Der Effekt: Trotz erfolgreicher Ausrichtung auf mehrere Prozessorkerne zeigen die Anwendungen keinen nennenswerten Geschwindigkeitsgewinn.</p>
<h3>4-Stufen-Methode</h3>
<p>Dann ist die Ursachenforschung kompliziert und sehr aufwändig. Stephen erklärte, dass mitunter sogar ein aktiver Virenscanner als Bremsklotz einer Parallel-Anwendung fungieren kann. Diese Dinge sollte man demnach schon beim Check des seriellen Codes im Auge behalten. Daraus ergibt sich für Programmierer eine 4-Stufen-Methode bei der Parallelisierung, die grundsätzlich eingehalten werden sollte:</p>
<ol>
<li>Analyse des seriellen Codes hinsichtlich möglicher &#8220;Hotspots&#8221;</li>
<li>Implementierung von Parallelkonstrukten auf Basis passender Programmiermodelle</li>
<li>Fehlersuche mithilfe geeigneter Tools</li>
<li>Optimierung des neuen, parallelisierten Codes</li>
</ol>
<p>Die für die Implementierung gewählten Programmiermodelle (Sprache, Bibliotheken, Methoden) sind dabei sowohl vom ursprünglichen Code als auch von der Zielsetzung des Projektes abhängig. Stephen konnte hier in unterschiedlichen Szenarien beispielsweise die Vorteile von <a href="http://www.software-dev-blog.de/infos-aus-erster-hand-zu-cilk/07/2010/">Cilk</a> und <a href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">OpenMP</a> erläutern und verdeutlichten, dass sowohl der Compiler als auch die Hardware eines Systems über die Performance der Anwendung entscheiden.</p>
<p>Am Ende des Vortrags ging Stephen auf ein Thema ein, das bei aller Begeisterung für Multicore gerne übersehen wird: Auch Parallel-Programmierung ist nicht immer der Weisheit letzter Schluss. In einigen Fällen reicht es aus, den seriellen Code zu optimieren. Aber diese Frage sollte eigentlich schon während der Analyse beantwortet werden.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/oop-2011-stephen-blair-chappell-uber-chancen-und-grenzen-der-parallel-programmierung/01/2011/&via=sw_devtwits&text=OOP 2011: Stephen Blair-Chappell über Chancen und Grenzen der Parallel-Programmierung&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/oop-2011-stephen-blair-chappell-uber-chancen-und-grenzen-der-parallel-programmierung/01/2011/&via=sw_devtwits&text=OOP 2011: Stephen Blair-Chappell über Chancen und Grenzen der Parallel-Programmierung&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/oop-2011-stephen-blair-chappell-uber-chancen-und-grenzen-der-parallel-programmierung/01/2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ausblick auf die CES, Sandy Bridge und zwei nützliche Tools</title>
		<link>http://www.software-dev-blog.de/ausblick-auf-die-ces-sandy-bridge-und-zwei-nutzliche-tools/01/2011/</link>
		<comments>http://www.software-dev-blog.de/ausblick-auf-die-ces-sandy-bridge-und-zwei-nutzliche-tools/01/2011/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 09:23:43 +0000</pubDate>
		<dc:creator>Oliver</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Visual Computing]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[Nehalem]]></category>
		<category><![CDATA[Optimieren]]></category>
		<category><![CDATA[Preview]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1448</guid>
		<description><![CDATA[Keine Ahnung, wie viele Menschen Ihnen in den letzten Tagen „Ein gutes neues Jahr!“ gewünscht haben. Aber vermutlich waren es viele, und ganz sicher werden sie Recht behalten. Denn das Jahr 2011 wird für Parallel-Programmierer und Spiele-Entwickler Maßstäbe setzen! In wenigen Tagen wird Intel während der CES in Las Vegas die neue Prozessorgeneration Sandy Bridge [...]]]></description>
			<content:encoded><![CDATA[<p>Keine Ahnung, wie viele Menschen Ihnen in den letzten Tagen „Ein gutes neues Jahr!“ gewünscht haben. Aber vermutlich waren es viele, und ganz sicher werden sie Recht behalten. Denn das Jahr 2011 wird für Parallel-Programmierer und Spiele-Entwickler Maßstäbe setzen!</p>
<p>In wenigen Tagen wird Intel während der <a href="http://www.cesweb.org/" target="_blank">CES in Las Vegas</a> die <strong>neue Prozessorgeneration Sandy Bridge</strong> offiziell vorstellen. Vor Ort werden dann auch gleich ein paar Hardware-Hersteller erste Notebooks mit den neuen Recheneinheiten zeigen.</p>
<p>Die Prozessor-Architektur von Sandy Bridge wird vor allem in puncto Multimedia-Performance alle Vorgänger der Nehalem-Bauweise in den Schatten stellen. Sandy Bridge integriert den Grafikkern (GPU) in die CPU bei einer Strukturbreite von 32 Nanometern. Dank der integrierten Encoding-Einheit lassen sich Videos wesentlich schneller konvertieren als beispielsweise mit bekannten Core-i5-Prozessoren.</p>
<p>Die technologischen Neuerungen von Sandy Bridge und die daraus resultierenden, erweiterten Möglichkeiten für Parallel-Computing sind Anlass genug, dieses Blog wiederzubeleben. Ich werde Sie ab sofort regelmäßig mit News, technischem Background und Veranstaltungshinweisen versorgen, die Ihnen den Programmieralltag etwa erleichtern.</p>
<p>Zunächst aber darf ich Ihnen zwei neue, sehr nützlich Tools empfehlen, die Intel im Rahmen der Partnerprogramme veröffentlich hat und vor allem Entwickler von Media- und Videoanwendungen adressieren.</p>
<p>Das <a href="http://software.intel.com/en-us/articles/media/?CID=ISPP:106BL106ENG1363" target="_blank">Intel Media Software Development Kit in der Version 1.5</a> ist ein plattformübergreifendes SDK, das Ihnen hilft, auf einfache Weise leistungsstarke und schnelle Videoanwendungen zu entwickeln.  Das Tool-Paket bietet Ihnen drei Highlights:</p>
<ul>
<li>Codecs für Hardwarebeschleunigung: Sie greifen auf Video-Codecs zu, die für Intel Multicore-Prozessoren und Intel HD Graphics optimiert wurden und bestmögliche Performance bieten</li>
<li>Einheitliches API für unterschiedliche Plattformen: Weniger Code und weniger Komplexität durch ein universelles API, das viele PC-Plattformen unterstützt, darunter selbstverständlich auch die zukunftsträchtigen Intel Graphics- und Multicore-Architekturen.</li>
<li>Support und Add-Ons: Schneller optimale Ergebnisse erzielen dank nützlicher Features wie Video-Pre-Processing, Decodieren und Encodieren</li>
</ul>
<p>Sie können das <a href="http://software.intel.com/en-us/articles/media/?CID=ISPP:106BL106ENG1363" target="_blank">Media Software Development Kit kostenlos laden und installieren</a>. Sinnvoll ergänzt wird das SDK durch das <a href="http://swpartner.intel.com/Partner/Initiatives/SATCenter.aspx?Lang=ENG" target="_blank">Intel Media Checker Software Assessment Tool</a>. Zugegeben, eine grauenhafte Bezeichnung, aber das Tool ist überaus nützlich. Denn damit stellen Sie beispielsweise sicher, dass Sie das SDK korrekt in die Anwendungen einbinden. Zudem fungiert es als Tutorial, indem es die Funktionen und Technologien des SDK erläutert. Also für die ersten Schritte mit dem SDK sicherlich genau richtig. Und kostenlos ist es natürlich auch. Viel Erfolg damit!</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/ausblick-auf-die-ces-sandy-bridge-und-zwei-nutzliche-tools/01/2011/&via=sw_devtwits&text=Ausblick auf die CES, Sandy Bridge und zwei nützliche Tools&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/ausblick-auf-die-ces-sandy-bridge-und-zwei-nutzliche-tools/01/2011/&via=sw_devtwits&text=Ausblick auf die CES, Sandy Bridge und zwei nützliche Tools&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/ausblick-auf-die-ces-sandy-bridge-und-zwei-nutzliche-tools/01/2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multiplayergames twittertauglich machen</title>
		<link>http://www.software-dev-blog.de/multiplayer-games-twitter-tauglich-machen/01/2010/</link>
		<comments>http://www.software-dev-blog.de/multiplayer-games-twitter-tauglich-machen/01/2010/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 13:53:10 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Visual Computing]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Social Media]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1293</guid>
		<description><![CDATA[Dass Multiplayergames eine riesige Anziehungskraft ausüben, ist ja nichts Neues. Es ist schließlich viel aufregender und spannender, sich mit richtigen &#8220;Gegnern&#8221; zu messen als nur mit dem doofen Computer. Wie aber kommt man an adäquate Gegen- oder Mitspieler heran? Nun, hierzu kann man entweder einer der existierenden Communities beitreten (die aber meist recht übersichtlich sind) [...]]]></description>
			<content:encoded><![CDATA[<p>Dass Multiplayergames eine riesige Anziehungskraft ausüben, ist ja nichts Neues. Es ist schließlich viel aufregender und spannender, sich mit richtigen &#8220;Gegnern&#8221; zu messen als nur mit dem doofen Computer. Wie aber kommt man an adäquate Gegen- oder Mitspieler heran? Nun, hierzu kann man entweder einer der existierenden Communities beitreten (die aber meist recht übersichtlich sind) oder man macht sich Social-Media-Dienste wie Twitter oder Facebook zu Nutze.</p>
<p>Nun ist es aber leider so, dass kaum ein Spiel den Zugriff auf diese Dienste implementiert hat, was jedoch mit ein paar Codezeilen an der richtigen Stelle im Quellcode des Spiels problemlos zu machen ist. Sagt zumindest Mitchell Lum von Intel, der <a href="http://software.intel.com/en-us/articles/unleash-the-power-of-social-media/" target="_blank">in seinem Blogpost</a> anhand eines C#-Beispiels zeigt, wie man aus dem laufenden Spiel heraus twittern kann. Das ist übrigens nicht nur für Multiplayer ein echter Mehrwert, sondern auch für Spieleentwickler, die auf diesem Weg den Bekanntheitsgrad ihrer Titel mithilfe von Twitter erhöhen können.</p>
<p>Dann schaut euch <a href="http://software.intel.com/en-us/articles/unleash-the-power-of-social-media/" target="_blank">den Blogbeitrag samt Codebeispiel</a> einfach mal in Ruhe an.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/multiplayer-games-twitter-tauglich-machen/01/2010/&via=sw_devtwits&text=Multiplayergames twittertauglich machen&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/multiplayer-games-twitter-tauglich-machen/01/2010/&via=sw_devtwits&text=Multiplayergames twittertauglich machen&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/multiplayer-games-twitter-tauglich-machen/01/2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Parallel Talk: Warum Ct und Rapidmind gut zusammenpassen</title>
		<link>http://www.software-dev-blog.de/parallel-talk-warum-ct-und-rapidmind-gut-zusammen-passen/11/2009/</link>
		<comments>http://www.software-dev-blog.de/parallel-talk-warum-ct-und-rapidmind-gut-zusammen-passen/11/2009/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 17:01:43 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[IDF09]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1257</guid>
		<description><![CDATA[Auf dem diesjährigen IDF in San Francisco wurde ich selbst &#8220;Opfer&#8221;, als ich mich unversehens vor dem Whiteboard von Aaron Tersteeg wiederfand. Aber zum Glück ging es nicht nur mir so, sondern auch unter anderem Stefanus, Michael und Anwar von Intel, die etwas sagen sollten über die Ct-Technologie und warum diese mit den Paralleltechniken von [...]]]></description>
			<content:encoded><![CDATA[<p>Auf dem <a href="http://www.software-dev-blog.de/tag/idf09/">diesjährigen IDF</a> in San Francisco wurde ich selbst &#8220;Opfer&#8221;, als ich mich unversehens <a href="http://software.intel.com/en-us/videos/bloggers-at-idf/" target="_blank">vor dem Whiteboard</a> von Aaron Tersteeg wiederfand. Aber zum Glück ging es nicht nur mir so, sondern auch unter anderem Stefanus, Michael und Anwar von Intel, die etwas sagen sollten über die <a href="http://www.software-dev-blog.de/isc09-die-zukunft-der-parallelen-programmierung/04/2009/">Ct-Technologie</a> und warum diese mit den Paralleltechniken von Rapidmind so gut zusammen passt.</p>
<p>Nur so viel: Ct soll noch in diesem Jahr als Beta verfügbar sein und Software-Entwicklern dabei helfen, ihre Anwendungen noch eleganter zu parallelisieren als bisher. Und genau dieses Bestreben verfolgen auch die Jungs von Rapidmind. Das dürfte wohl der wesentliche Grund gewesen sein, warum Intel und Rapidmind <a href="http://www.software-dev-blog.de/intel-und-rapidmind-gemeinsam-in-sachen-multicore/08/2009/">seit Ende August gemeinsame Sache</a> machen.</p>
<p>Aber am besten lassen wir Stefeanus, Michal und Anwar selbst zu Wort kommen &#8230;</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="277" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://blip.tv/play/g5FLgbG2WgI%2Em4v" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="277" src="http://blip.tv/play/g5FLgbG2WgI%2Em4v" allowfullscreen="true"></embed></object></p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/parallel-talk-warum-ct-und-rapidmind-gut-zusammen-passen/11/2009/&via=sw_devtwits&text=Parallel Talk: Warum Ct und Rapidmind gut zusammenpassen&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/parallel-talk-warum-ct-und-rapidmind-gut-zusammen-passen/11/2009/&via=sw_devtwits&text=Parallel Talk: Warum Ct und Rapidmind gut zusammenpassen&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/parallel-talk-warum-ct-und-rapidmind-gut-zusammen-passen/11/2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Parallel programmieren für 100 $: Intel-Gewinnspiel</title>
		<link>http://www.software-dev-blog.de/parallel-programmieren-und-gewinnen-intel-gewinnspiel/09/2009/</link>
		<comments>http://www.software-dev-blog.de/parallel-programmieren-und-gewinnen-intel-gewinnspiel/09/2009/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 12:46:10 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Gewinnspiel]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1156</guid>
		<description><![CDATA[Intel nennt es &#8220;Threading Challenge 2009&#8243;, hat sich dafür den recht griffigen Claim &#8220;Code your future&#8221; ausgedacht und mittlerweile die zweite Phase des Programmierwettbewerbs gestartet. Dieser zweite Abschnitt umfasst wieder sechs Aufgaben, die alle möglichst gut gelöst werden sollen. Und zu gewinnen gibt es natürlich auch etwas: Jede am besten gelöste Aufgabe ist Intel 100 [...]]]></description>
			<content:encoded><![CDATA[<p>Intel nennt es <a title="Startseite des Programmierwettbewerbs" href="http://software.intel.com/en-us/contests/Threading-Challenge-2009/codecontest.php" target="_blank">&#8220;Threading Challenge 2009&#8243;</a>, hat sich dafür den recht griffigen Claim &#8220;Code your future&#8221; ausgedacht und mittlerweile die zweite Phase des Programmierwettbewerbs gestartet. Dieser zweite Abschnitt umfasst wieder sechs Aufgaben, die alle möglichst gut gelöst werden sollen. Und zu gewinnen gibt es natürlich auch etwas: Jede am besten gelöste Aufgabe ist Intel 100 US-Dollar wert, die in Form eines Visa-Geschenkcoupons überreicht werden. Und der Gesamtsieger pro Phase kann darüber hinaus ein schickes Netbook abgreifen. Die genauen Regeln dazu findet ihr <a title="Die Regeln des Programmierwettbewerbs" href="http://software.intel.com/en-us/articles/threading-challenge-2009-official-rules/" target="_blank">hier</a>.</p>
<p>Die erste Aufgabe beschäftigt sich übrigens mit der Matrizen-Multiplikation, und zwar auf Basis des <a title="Wiki-Infos zum Strassen-Algorithmus" href="http://de.wikipedia.org/wiki/Strassen-Algorithmus" target="_blank">Strassen-Algorithmus</a>. Hierfür muss ein kleines parallelisiertes Programm geschrieben werden, das auf einer <a title="Die serielle Berechnung der Matrizenmultiplikation" href="http://software.intel.com/file/21818" target="_blank">vorgegebenen seriellen Lösung</a> des Problemes basiert. Mithilfe des Strassen-Algorithmus ist also die parallele Version der seriellen Anwendung zu programmieren. Dabei müssen bestimmte Dinge wie Rumpf der Hauptfunktion erhalten bleiben, andere Dinge wie das Reservieren von notwendigem Speicher dürfen (und müssen) angepasst werden.</p>
<p>Zur Berurteilung der Güte der eingereichten Lösung wird übrigens die Zeit herangezogen, die das kleine Programm für die Matrizenmultiplikation benötgit. Da heißt es also sich anstrengen, um eine möglichst kurze Laufzeit herauszubekommen. Mehr Infos dazu bekommt man auf der <a title="Wettbewerbsseite" href="http://software.intel.com/en-us/contests/Threading-Challenge-2009/codecontest.php" target="_blank">Wettbewerbsseite</a>. Viel Spaß und Glück beim Programmieren!</p>
<p><em><strong>Ach ja:</strong></em> Die <a title="Neue Version der Intel Threading Building Blocks" href="http://www.software-dev-blog.de/neue-version-der-intel-threading-building-blocks/08/2009/">Intel Threading Building Blocks</a> könnten beim Lösen der Aufgabe helfen. Nur so als kleiner Tipp &#8230;</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/parallel-programmieren-und-gewinnen-intel-gewinnspiel/09/2009/&via=sw_devtwits&text=Parallel programmieren für 100 $: Intel-Gewinnspiel&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/parallel-programmieren-und-gewinnen-intel-gewinnspiel/09/2009/&via=sw_devtwits&text=Parallel programmieren für 100 $: Intel-Gewinnspiel&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/parallel-programmieren-und-gewinnen-intel-gewinnspiel/09/2009/feed/</wfw:commentRss>
		<slash:comments>0</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 [...]]]></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>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/gdc09-wie-programmierer-von-dualen-zahlen-profitieren/08/2009/&via=sw_devtwits&text=GDC09: Wie Programmierer von Dualen Zahlen profitieren&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/gdc09-wie-programmierer-von-dualen-zahlen-profitieren/08/2009/&via=sw_devtwits&text=GDC09: Wie Programmierer von Dualen Zahlen profitieren&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></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>Mögliche Thread-Modi und deren Folgen</title>
		<link>http://www.software-dev-blog.de/moegliche-thread-modi-und-deren-folgen/02/2009/</link>
		<comments>http://www.software-dev-blog.de/moegliche-thread-modi-und-deren-folgen/02/2009/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 14:55:21 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Basics]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=927</guid>
		<description><![CDATA[Multicore-Programmierung ist sicherlich kein einfaches Ding. Zu viel kann dabei passieren und schiefgehen, wenn man bestimmte Regeln nicht beachtet. Daher starten wir heute einen Mehrteiler, der sich mit den Details der Multicore-Programmierung beschäftigt. Im ersten Teil geht es um die fundamentale Frage, welche Zustände ein Thread während des Programmablaufs annehmen kann. Im ersten Schritt wird [...]]]></description>
			<content:encoded><![CDATA[<p>Multicore-Programmierung ist sicherlich kein einfaches Ding. Zu viel kann dabei passieren und schiefgehen, wenn man <a title="Fünf Multithread-Programmierregeln" href="http://www.software-dev-blog.de/funf-multicore-programmierregeln-auf-einen-blick/11/2008/">bestimmte Regeln</a> nicht beachtet. Daher starten wir heute einen Mehrteiler, der sich mit den Details der Multicore-Programmierung beschäftigt. Im ersten Teil geht es um die fundamentale Frage, welche Zustände ein Thread während des Programmablaufs annehmen kann.</p>
<p>Im ersten Schritt wird beispielsweise vom Thread Manager ein Thread erzeugt und in den <strong>Bereit-Zustand</strong> versetzt (&#8220;ready&#8221;). Dort verharrt der Thread so lange, bis er eine Anweisung, eine Funktion oder ähnliches ausführen soll. Darum kümmern sich entsprechende Programmanweisungen wie zum Beispiel die Pragma-Methoden der <a title=" Workshop: parallel Programmieren mit OpenMP " href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">OpenMP-basierten Programmierung</a>.</p>
<p>Im zweiten Schritt kommt es zur <strong>Ausführung</strong> der entsprechenden Quellcodestelle. Währenddessen muss der betreffende Thread möglicherweise auf einen anderen Thread oder ein Datum eines parallel ablaufenden Threads warten. Dann begibt er sich in den <strong>Wartend-Modus</strong>, bis der benötigte Thread beendet ist oder dessen Ergebnis vorliegt. Anschließend wird der angehaltene Thread weiter ausgeführt oder wieder in den Bereit-Zustand versetzt, da der Thread zu einem späteren Zeitpunkt nochmals benötigt wird.</p>
<p><strong>Ach ja:</strong> Gerade dieser Wartend-Modus bereitet vielen Programmierern erhebliche Probleme, da hierbei <a title="Von Deadlocks und anderen überraschenden Laufzeitproblemen" href="http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Dead Locks, Data Races</a> oder andere unvorhersehbare Ereignisse auftreten können. Wie gut, dass es hierfür Tools wie den <a title="Thread Checker" href="http://www.software-dev-blog.de/12-thesen-und-antithesen-zur-multicore-programmierung/01/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Thread Checker</a> oder <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 Inspector</a> gibt, die solche Schwachstellen aufspüren können.</p>
<p><span id="more-927"></span>Natürlich ist es auch möglich, dass ein Thread ausgeführt wird, ohne in den Wartend-Zustand versetzt zu werden. Dann stehen <strong>zwei Folgemodi</strong> zur Auswahl: <strong>Bereit </strong>oder<strong> Beendet</strong>. &#8220;Bereit&#8221; tritt immer dann ein, wenn der Thread nicht nur einmal, sondern mehrmals benötigt wird, was schon beim Programmdesign berücksichtigt werden muss. Dies kann beispielsweise eine Schleife sein, die mehrfach ausgeführt werden muss. In diesem Fall empfiehlt es sich, den zugehörigen Thread nicht zu beenden, sondern ihn wieder auf &#8220;Bereit&#8221; zu setzen, da das Erzeugen eines Threads relativ viel Rechenzeit und Verwaltungsaufwand bedeutet.</p>
<p>Sobald ein Thread nicht mehr benötigt wird, kann er natürlich auch <strong>beendet</strong> werden. Er wird dann aus dem Thread-Pool entfernt, alle Variablen werden gelöscht und der Thread steht nicht mehr zur Verfügung. Was aber nicht heißt, dass er zu einem späteren Zeitpunkt nicht wieder erzeugt werden kann.</p>
<p><strong>Übrigens:</strong> Zu Beginn einer parallelisierten Anwendung wird ein sogenannter Initial Thread initiert, der den sequeziellen Programmablauf steuert und der auch dafür zuständig ist, das Programm &#8220;am Leben zu erhalten&#8221;, während zur Laufzeit immer wieder neue, parallel ausfühbare Threads erzeugt werden. Sobald dieser Initialisierungsthread beendet wird, endet auch das komplette Programm.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/moegliche-thread-modi-und-deren-folgen/02/2009/&via=sw_devtwits&text=Mögliche Thread-Modi und deren Folgen&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/moegliche-thread-modi-und-deren-folgen/02/2009/&via=sw_devtwits&text=Mögliche Thread-Modi und deren Folgen&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/moegliche-thread-modi-und-deren-folgen/02/2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>12 Thesen und Antithesen zur Multicore-Programmierung</title>
		<link>http://www.software-dev-blog.de/12-thesen-und-antithesen-zur-multicore-programmierung/01/2009/</link>
		<comments>http://www.software-dev-blog.de/12-thesen-und-antithesen-zur-multicore-programmierung/01/2009/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 11:02:29 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=691</guid>
		<description><![CDATA[Gestern auf der OOP 2009 hielt Professor Walter F. Tichy von der Uni Karlsruhe einen Vortrag mit dem Titel &#8220;Herausforderung Mehrkernsysteme&#8221;. Darin beschäftigte er sich mit diversen Aspekten der Parallelprogrammierung. Und das zu Recht, denn das Thema scheint ein echter Renner zu sein; der Raum war auf jeden Fall gut gefüllt. Im Laufe seines Referats [...]]]></description>
			<content:encoded><![CDATA[<p>Gestern auf der <a title="Mehr Infos zur OOP 2009" href="http://www.software-dev-blog.de/multicore-programmierung-auf-der-oop-2009/01/2009/">OOP 2009</a> hielt <a title="Thesen von Walter F. Tichy zum Thema Parallelprogrammierung im Widerspruch?!" href="http://www.software-dev-blog.de/in-der-parallelprogrammierung-steckt-die-zukunft/01/2009/">Professor Walter F. Tichy</a> von der Uni Karlsruhe einen Vortrag mit dem Titel &#8220;Herausforderung Mehrkernsysteme&#8221;.  Darin beschäftigte er sich mit diversen Aspekten der Parallelprogrammierung. Und das zu Recht, denn das Thema scheint ein echter Renner zu sein; der Raum war auf jeden Fall gut gefüllt.</p>
<p>Im Laufe seines Referats stellte Professor Tichy mehrere Thesen in Sachen Parallelprogrammierung auf, die ich hier ein wenig aufdröseln will.</p>
<p><strong>These #1:</strong> Die Informatik erlebt gerade eine Evolution: Weg von der sequenziellen Programmierung hin zur parallelen Entwicklung. Parallelität gab es bis dato nur in Nischenbereichen wie Numerisches Rechnen, Betriebssystemen und Datenbanken und Parallelität auf Instruktionsebene. <strong>Meine Antithese dazu:</strong> Stimmt!</p>
<p><strong>These #2:</strong> Es gab immer wieder spezielle Parallelrechner wie den <a title="Wiki-Infos dazu" href="http://en.wikipedia.org/wiki/Atanasoff–Berry_Computer" target="_blank">Atanasoff-Berry-Rechner</a> von 1942, der ausschließlich lineare Gleichungen mit 30 Koeffizienten lösen konnte. Dazu gehörte aber auch der <a title="Wiki-Infos dazu" href="http://en.wikipedia.org/wiki/ILLIAC_IV" target="_blank">Illiac-IV</a>, ein SIMD-Rechner mit verteiltem Speicher und 64 Prozessoren. Dieser Großrechner wurde 1976 gebaut und war bis 1981 der schnellster Rechner der Welt. Natürlich erwähnte Tichy auch den <a title="Wiki-Infos dazu" href="http://de.wikipedia.org/wiki/Cray-1" target="_blank">Cray-1</a> Vektorrechner, der ebenfalls aus dem Jahr 1976 stammt und wohl den bekanntesten Vertreter der prähistorischen Parallelrechner darstellt. Das Alles (und viel mehr) mündete schließlich in riesigen Clustersystemen der Gegenwart, die allesamt auf der Webseite <a title="Die aktuell 500 schnellsten Großrechner der Welt" href="http://www.top500.org" target="_blank">Top500.org</a> zu bestaunen sind. <strong>Meine Antithese</strong><strong> dazu: </strong>Eine schöne Liste!</p>
<p><strong>These #3:</strong> Es gibt neben Intel-CPUs wie Core 2 Quad oder <a title="Das Multithread-Potenzial des Core i7-Prozessors" href="http://www.software-dev-blog.de/mehr-multithread-leistung-mit-dem-intel-core-i7-prozessor/11/2008/">Core i7</a> weitere Parallelprozessoren, die allerdings (beispielsweise die Grafik-CPU Geforce 8 von Nvidia) hauptsächlich für Spezialbereiche konzipiert sind. <strong>Meine Antithese</strong><strong> dazu: </strong>Wie sagte erst kürzlich ein bekannter Chefentwickler zu mir: &#8220;CUDA und die angeblich enorme Rechenleistung der Geforce-GPUs ist vor allem eins: Marketing!&#8221;</p>
<p><strong>These #4:</strong> Die Moore&#8217;sche Regel hat eine Variation erfahren, die wir an der Uni Karlsruhe sogar ein wenig verfeinern wurde: <em>&#8220;Die der Anzahl Prozessoren pro Chip wird sich mit jeder Chip-Generation bei etwa gleicher Taktfrequenz verdoppeln&#8221;</em>. <strong>Meine Antithese</strong><strong> dazu: </strong>Ja, das sagt Intel auch. Dann wird es wohl stimmen &#8230;</p>
<p><strong>These #5:</strong> Was sollen wir mit all den Kernen nur anfangen, die uns in Zukunft zur Verfügung stehen? Die Antworten lieferte Professor Tichy postwendend selbst: automatische Protokollführer; inhaltsbasierte Bildersuche mithilfe einer Datenbank; intuitive Schnittstellen mit Bild- und Sprachverarbeitung; vorausschauende Anwendungen, die &#8220;ahnen&#8221;, was der Benutzer will; Modellierung des Benutzers und der Umgebung; Erhöhung der Zuverlässigkeit (Redundanzen). <strong>Meine Antithese</strong><strong> dazu: </strong>Wie wäre es mit weiteren Beispielen: <a title="PowerDirector 7 ist für Core i7-Prozessor optimiert" href="http://www.software-dev-blog.de/powerdirector-7-ist-fur-core-i7-prozessor-optimiert/12/2008/">Videoschnitt</a>, <a title="Skalierende Filter: Nik Software setzt auf Multicore" href="http://www.software-dev-blog.de/skalierende-filter-nik-software-setzt-auf-multicore/01/2009/">Bildbearbeitung</a>, <a title="Lernen mit Crytek: Deshalb ist Crysis erfolgreich" href="http://www.software-dev-blog.de/lernen-mit-crytek-deshalb-ist-crysis-erfolgreich/01/2009/">3D-Spiele</a>, <a title="Windows 7 und seine Multicore-Fähigkeiten" href="http://www.software-dev-blog.de/ist-fur-windows-7-ein-neuer-taskmanager-notwendig/01/2009/">skalierende Betriebssysteme</a> und <a title="Darum skaliert DivX 7 so gut auf Multicoreplattformen" href="http://www.software-dev-blog.de/how-to-deshalb-skaliert-divx-7-auf-multicore-plattformen/01/2009/">Videoencoding</a>, um nur einige zu nennen.</p>
<p><span id="more-691"></span></p>
<p><strong>These #6:</strong> Es gibt natürlich Probleme bei der parallelen Programmierung, die aber nicht dazu führen dürfen, dass darunter die Qualität leidet. <strong>Meine Antithese</strong><strong> dazu: </strong>In der Tat, dass würden wohl die Kunden und Endanwender nicht tolerieren!</p>
<p><strong>These #7:</strong> Paralleltools sind immer noch unzureichend vorhanden. <strong>Meine Antithese</strong><strong> dazu: </strong>Ach, und was ist mit folgenden Werkzeugen: <a title="etzt Beta-Tester des Intel Parallel Composer werden" href="../jetzt-beta-tester-des-intel-parallel-composer-werden/11/2008/">Parallel Composer</a>, <a title="Fehler im Multithread-Code aufspüren: Thread Checker" href="../fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Thread Checker</a>, <a title="Mit Intel Threading Building Blocks parallel programmieren" href="../mit-intel-threading-building-blocks-parallel-programmieren/12/2008/">Threading Building Blocks</a>, <a title="Quellcode-Schwachstellen mit Intel VTune aufspüren" href="../quellcode-schwachstellen-mit-intel-vtune-aufspuren/11/2008/">VTune Performance Analyzer</a> und andere mehr?</p>
<p><strong>These #8:</strong> Software-Entwickler sind oder werden nicht gut genug ausgebildet. <strong>Meine Antithese</strong><strong> dazu: </strong>Ja, das <a title=" Ausbildungslücken bei der Multicore-Programmierung " href="http://www.software-dev-blog.de/ausbildungslucken-bei-der-multicore-programmierung/12/2008/">sagen andere auch</a>. Wie gut, dass es zum Beheben dieses Dilemmas die <a title="Die TU München ist am Intel University Programm beteiligt" href="http://www.software-dev-blog.de/tu-munchen-verstarkt-sein-multicore-engagement/12/2008/">passenden Programme</a> gibt.</p>
<p><strong>These #9:</strong> Der Weg zum fehlerfrei programmierten Parallelcode ist lang und steinig. Dabei sind vor allem massive Umstrukturierungen des Quellcodes notwendig. Und potenzielle Abhängigkeiten sowie mögliche Seiteneffekte müssen unbedingt beachtet werden. <strong>Meine Antithese dazu: </strong>Ja, dazu habe ich mir auch schon so meine Gedanken gemacht. Resultat: <a title="Beliebte Fehler bei der Parallelprogrammierung" href="http://www.software-dev-blog.de/beliebte-fehler-bei-der-parallelprogrammierung/12/2008/">beliebte Fehler bei der Parallelprogrammierung</a>, <a title="Fünf Multicore-Programmierregeln auf einen Blick" href="http://www.software-dev-blog.de/funf-multicore-programmierregeln-auf-einen-blick/11/2008/">fünf Multicore-Programmierregeln</a> und die passenden <a title="Multithreading-Konzepte: OpenMP und Intel TBB" href="http://www.software-dev-blog.de/multithreading-konzepte-openmp-apis-und-intel-tbb/11/2008/">Multithreading-Konzepte</a>.</p>
<p><strong>These #10:</strong> Es gibt immer noch bestimmte Dinge in der Parallelprogrammierung, die kaum oder gar nicht funktionieren. Dazu gehört die oft ausgesprochene Empfehlung, Parallelkonstrukte nach und nach hinzuzufügen. Selbst vor allem laufzeitkritische Pfade zu parallelisieren bringt meist nichts. Darüber hinaus hat die feingranulare Parallelisierung innerer Schleifen nach Tichy keinen wesentlichen Effekt. <strong>Meine Antithese</strong><strong> dazu: </strong>Es ist sicherlich kein einfaches Unterfangen, sequenziellem Quellcode paralleles Leben einzuhauchen, aber es gibt die passenden Methoden und Tools (siehe Antithese #7). Darüber hinaus lassen sich vor allem nummerische Probleme sehr gut mithilfe von parallelen Konstrukten lösen (auch im Nachhinein).</p>
<p><strong>These #11:</strong> Parallelisierung darf nicht per Trial-and-Error erfolgen. Und man muss gut  abschätzen, wo die Parallelisierung am meisten bringt &#8211; und wo nicht! <strong>Meine Antithese</strong><strong> dazu: </strong>Gut gebrüllt, Löwe! Denn nur ein guter Parallelquellcode produziert keine ungewollten oder unvorhersehbaren <a title="Von Deadlocks, Race Conditions und anderen Laufzeitfehlern" href="http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Laufzeitfehler</a>. Mit Tools wie dem <a title="Fehler im Multithread-Code aufspüren: Thread Checker" href="../fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Thread Checker</a> lässt sich das übrigens überprüfen.</p>
<p><strong>These #12:</strong> Es sind bessere Programmiersprachen zum Ausdruck paralleler Abläufe notwendig, aber auch parallele Algorithmen und Bibliotheken. Und Tools für das Debuggen von Parallelisierungsfehlern sowie Tools für parallele Programmierung. <strong>Meine Antithese</strong><strong> dazu: </strong>Wie gut, dass es hierfür schon <a title="Software-Bibliotheken zum Optimieren von bestehendem oder neuem Quellcode" href="http://www.software-dev-blog.de/software-projekte-mit-multicore-bibliotheken-optimieren/12/2008/">das ein</a> oder <a title="Threading Building Blocks " href="http://www.software-dev-blog.de/mit-intel-threading-building-blocks-parallel-programmieren/12/2008/">andere</a> gibt.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/12-thesen-und-antithesen-zur-multicore-programmierung/01/2009/&via=sw_devtwits&text=12 Thesen und Antithesen zur Multicore-Programmierung&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/12-thesen-und-antithesen-zur-multicore-programmierung/01/2009/&via=sw_devtwits&text=12 Thesen und Antithesen zur Multicore-Programmierung&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/12-thesen-und-antithesen-zur-multicore-programmierung/01/2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>In der Parallelprogrammierung steckt die Zukunft!</title>
		<link>http://www.software-dev-blog.de/in-der-parallelprogrammierung-steckt-die-zukunft/01/2009/</link>
		<comments>http://www.software-dev-blog.de/in-der-parallelprogrammierung-steckt-die-zukunft/01/2009/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 12:28:09 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Vision]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=647</guid>
		<description><![CDATA[Die Überschrift dieses Beitrags ist das Fazit eines sehr interessanten Artikels von Walter F. Tichy, seines Zeichens Professor für Softwaretechnik an der Uni Karlsruhe. In seinem Gastbeitrag auf Computerzeitung.de spricht er nämlich von der Herausforderung Multicore-Programmierung und den Chancen, die sich daraus ergeben. Dabei nennt er einerseits ein paar sehr wichtige Aspekte, andererseits vermisst er [...]]]></description>
			<content:encoded><![CDATA[<p>Die Überschrift dieses Beitrags ist das Fazit eines sehr interessanten Artikels von Walter F. Tichy, seines Zeichens Professor für Softwaretechnik an der Uni Karlsruhe. In seinem <a title="Der Artikel in voller Länge" href="http://www.computerzeitung.de/articles/multicore-herausforderung_liegt_in_der_programmierung:/2009005/31800939_ha_CZ.html?thes=&amp;tp=/themen/forschung/&amp;page=1" target="_blank">Gastbeitrag auf Computerzeitung.de</a> spricht er nämlich von der Herausforderung Multicore-Programmierung und den Chancen, die sich daraus ergeben. Dabei nennt er einerseits ein paar sehr wichtige Aspekte, andererseits vermisst er ein, zwei Dinge, die jedoch entgegen seiner Aussagen bereits existieren. Aber der Reihe nach.</p>
<p>Wichtig erscheint mir auf jeden Fall die Feststellung, dass &#8220;in Zukunft [...] Parallelrechner ungefragt und flächendeckend zur Verfügung stehen&#8221; werden. Ganz klar, das ist der Trend, und wenn man sich die Roadmap von Intel ansieht, wird schnell klar, dass der <a title="Das Multithread-Potenzial des Core i7-Prozessors" href="http://www.software-dev-blog.de/mehr-multithread-leistung-mit-dem-intel-core-i7-prozessor/11/2008/">Core i7</a> nur der Anfang der Multicore-Ära ist.</p>
<p>Ebenso wichtig sind die potenziellen Multicore-Anwendungen, die Professor Tichy aufzählt: Dazu gehören natürlich Medienprogramme wie <a title="How-to: Deshalb skaliert DivX 7 auf Multicore-Plattformen " href="http://www.software-dev-blog.de/how-to-deshalb-skaliert-divx-7-auf-multicore-plattformen/01/2009/">DivX</a> und 3D-Spiele wie <a title="Lernen mit Crytek: Deshalb ist Crysis erfolgreich " href="http://www.software-dev-blog.de/lernen-mit-crytek-deshalb-ist-crysis-erfolgreich/01/2009/">Crysis</a> oder <a title=" Crysis und Sacred 2 räumen beim Entwicklerpreis 2008 ab" href="http://www.software-dev-blog.de/crysis-und-sacred-2-raumen-beim-entwicklerpreis-2008-ab/12/2008/">Sacred 2</a> (und Bildbearbeitungstools wie <a title=" Skalierende Filter: Nik Software setzt auf Multicore " href="http://www.software-dev-blog.de/skalierende-filter-nik-software-setzt-auf-multicore/01/2009/">Silver Efex Pro</a> von Nik Software). Aber auch weniger spektakuläre Anwendungen wie Logistikplaner, Tabellenkalkulation, Suchalgorithmen und Sicherheitsüberprüfungen profitieren vom Multithread-Code. Zusammengefasst könnte man mit Tichys Worten sagen:</p>
<blockquote><p><em>Diejenigen Firmen, die jetzt die richtigen Anwendungen identifizieren und parallelisieren, werden in Zukunft zu den Gewinnern gehören, zumal Beschleunigung durch Abwarten – das heißt: das Setzen auf weiter steigende Taktfrequenzen – nicht mehr funktioniert.</em></p></blockquote>
<p><span id="more-647"></span>Aber Professor Tichy weist zu Recht auch darauf hin, dass es große Hemmschwellen seitens der Software-Entwickler gibt, da sie sich durchaus dessen bewusst sind, dass es beim Parallelisieren von Anwendungen so <a title="Beliebte Fehler bei der Parallelprogrammierung " href="http://www.software-dev-blog.de/beliebte-fehler-bei-der-parallelprogrammierung/12/2008/">hässliche Dinge</a> wie Race Conditions, Dead Locks, Reihenfolgeprobleme und andere Synchronisationstücken gibt. Außerdem lassen sich bestimmte Fehler einfach nicht reproduzieren, da sie oft erst zur Laufzeit auftreten.</p>
<p>An dieser Stelle gibt es übrigens ein erstes &#8220;Hm?!&#8221;. Denn Testtools wie der <a title=" Fehler im Multithread-Code aufspüren: Thread Checker " href="http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Thread Checker </a>sind durchaus in der Lage, potenzielle Fehler aufzuspüren, bevor ein einziger Betatester oder Endanwender die Software in den Händen hält. Dies ist naturgemäß nicht trivial, aber es sind entsprechende Tools vorhanden.</p>
<p>Ein weiterer wichtiger Punkt in seinem Vortrag hat mit den sequenziellen Algorithmen zu tun, die immer noch zu einem Großteil in existierenden Anwendungen implementiert sind. Die große Herausforderung hierbei ist natürlich das <a title=" Vier Schritte zum optimierten Multicore-Quellcode " href="http://www.software-dev-blog.de/vier-schritte-zum-optimierten-multicore-quellcode/12/2008/">Aufspüren des Parallelisierungspotenzials</a>. Dies lässt sich zum einen mit Tools wie <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> oder <a title="Infos zum Thread Profiler" href="http://www.intel.com/cd/software/products/asmo-na/eng/threading/winthreadprofiler/286749.htm" target="_blank">Thread Profiler</a> erledigen. Zum anderen muss man als Entwickler noch <a title="Fünf Multicore-Programmierregeln" href="http://www.software-dev-blog.de/funf-multicore-programmierregeln-auf-einen-blick/11/2008/">einen wichtigen Schritt</a> weiter gehen: Wie mache ich aus einem sequenziellen ein paralleles Software-Konzept? Und genau an diesem Punkt scheitern immer noch ganz viele.</p>
<p>Jetzt ist übrigens die Gelegenheit gekommen für ein zweites &#8220;Hm?!&#8221;. Und zwar bezüglich Professor Tichys Aussage, dass es derzeit keine vernünftigen Compiler und Bibliotheken gibt, die ein gewisses Maß an Parallelimus in sich bergen. So stecken beispielsweise im <a title="Optimierte Compiler helfen beim Parallelisieren " href="http://www.software-dev-blog.de/optimierte-compiler-helfen-beim-parallelisieren/12/2008/">Intel C++-Compiler</a> eine ganze Menge an parallelen Konstrukten und Bibliotheken, die mit wenigen Hangriffen in den Quellcode übernommen werden können. Und <a title=" Multithreading-Konzepte: OpenMP, APIs und Intel TBB " href="http://www.software-dev-blog.de/multithreading-konzepte-openmp-apis-und-intel-tbb/11/2008/">Programmiermethoden</a> wie OpenMP erledigen dies sogar automatisch – von den <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/">Threading Building Blocks</a> und den multicore-optimierten <a title=" Software-Projekte mit Multicore-Bibliotheken optimieren " href="http://www.software-dev-blog.de/software-projekte-mit-multicore-bibliotheken-optimieren/12/2008/">Bibliotheken</a> ganz zu schweigen.</p>
<p>Aber für Professor Tichy steht außer Frage, dass es hierzulande kluge Köpfe gibt, die durchaus in der Lage sind, mit den richtigen Tools und den richtigen Konzepten die Multicore-Programmierung voranzutreiben und für Anwendungen zu sorgen, die auf 4, 8, 16 oder gar <a title="Windows 7 skaliert auf bis zu 256 Prozessorkernen" href="http://www.software-dev-blog.de/ist-fur-windows-7-ein-neuer-taskmanager-notwendig/01/2009/">256 Prozessorkernen</a> skalieren. Und dann wird es auch so kommen, wie Professor Tichy abschließend scheibt:</p>
<blockquote><p><em>Bessere Produkte mit intuitiveren Schnittstellen, Sprach- und Videoverarbeitung, mehr Intelligenz und eingehender Modellierung des Nutzers und der Umgebung werden entstehen.</em></p></blockquote>
<p><strong>Ach ja:</strong> Ich werde mir nächste Woche auf der <a title="Infos zur OOP 2009" href="http://www.software-dev-blog.de/entwicklergemeinde-trifft-sich-auf-der-oop-2009/01/2009/">OOP 2009</a> den Vortrag von Professor Tichy zum Thema &#8220;Herausforderung Mehrkernsysteme&#8221; anhören – und dazu mit ihm ein Interview führen. Darauf bin ich schon sehr gespannt!</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/in-der-parallelprogrammierung-steckt-die-zukunft/01/2009/&via=sw_devtwits&text=In der Parallelprogrammierung steckt die Zukunft!&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/in-der-parallelprogrammierung-steckt-die-zukunft/01/2009/&via=sw_devtwits&text=In der Parallelprogrammierung steckt die Zukunft!&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/in-der-parallelprogrammierung-steckt-die-zukunft/01/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multicore-Powerday 2009 am 23. April in München [Upd]</title>
		<link>http://www.software-dev-blog.de/multicore-powerday-2009-am-23-april-in-munchen/01/2009/</link>
		<comments>http://www.software-dev-blog.de/multicore-powerday-2009-am-23-april-in-munchen/01/2009/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 10:22:37 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[dotNET]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=631</guid>
		<description><![CDATA[Jetzt ist es tatsächlich soweit: Die Neue Mediengesellschaft Ulm (Dotnetpro, Database pro und PHP Journal) veranstaltet gemeinsam mit Penton Media den ersten Multicore-Powerday. Die Subheadline sagt im Grunde schon alles: &#8220;Multicore-Programmierung für .NET-Entwickler&#8221;. Und dieser &#8220;Krafttag&#8221; wird es wohl in sich haben. Es geht unter anderem um folgende Fragen: Wie nutze ich aktuelle und zukünftige [...]]]></description>
			<content:encoded><![CDATA[<p>Jetzt ist es tatsächlich soweit: Die Neue Mediengesellschaft Ulm (<a title="Webseite der dotnetpro" href="http://www.dotnetpro.de/" target="_blank">Dotnetpro</a>, <a title="Webseite der database pro" href="http://www.databasepro.de/" target="_blank">Database pro</a> und <a title="Webseite des PHP Journal" href="http://www.phpjournal.eu/" target="_blank">PHP Journal</a>) veranstaltet gemeinsam mit Penton Media den ersten Multicore-Powerday. Die Subheadline sagt im Grunde schon alles: &#8220;Multicore-Programmierung für .NET-Entwickler&#8221;.</p>
<p>Und dieser &#8220;Krafttag&#8221; wird es wohl in sich haben. Es geht unter anderem um folgende Fragen:</p>
<ul>
<li>Wie nutze ich aktuelle und zukünftige Multicore-Prozessoren optimal für meine Anwendungen?</li>
</ul>
<ul>
<li>Welche <a title="Multithreading-Konzepte: OpenMP und Intel TBB" href="http://www.software-dev-blog.de/multithreading-konzepte-openmp-apis-und-intel-tbb/11/2008/">Konzepte</a> und <a title="Mit diesen Tools lassen sich Anwendungen multi-threaden" href="http://www.software-dev-blog.de/software-projekte-mit-intel-tools-optimieren/10/2008/">Werkzeuge</a> der Parallelprogrammierung gibt es?</li>
</ul>
<ul>
<li>Was ist die Concurrency Coordination Runtime und welche Aufgaben übernimmt sie?</li>
</ul>
<ul>
<li>Welche Bedeutung haben die Parallel Extensions für das .NET-Framework und wie setze ich sie am besten ein?</li>
</ul>
<ul>
<li>Wie erstelle mithilfe von F# parallel programmierte Anwendungen?</li>
</ul>
<p>Diese und viele weitere Fragen werden auf der großen .NET-Konferenz beantwortet. Und zwar von bekannten Größen der Branche wie <a title="Webseite von Ralf Westphal" href="http://www.ralfw.de/default.html" target="_blank">Ralf Westphal</a> und <a title="Profil von Bernd Marquardt auf codezone.de" href="http://www.codezone.de/DetailPage.Codezone?GUID=b1fe4d6f-69d6-435c-beb4-8558a9f0defb" target="_blank">Bernd Marquardt</a>, beide ihres Zeichens Microsoft MVP.</p>
<p>Falls Sie also zu den .NET-Entwicklern gehören, die unbedingt mehr wissen wollen (oder müssen) zum Thema Multicore-Programmierung, sollten Sie den 23. April schon mal <strong>ganz fett und dick</strong> im Kalender markieren.</p>
<p><em>Spartipp:</em> Geben Sie bei der Anmeldung zum Multicore-Powerday einfach den Gutscheincode <strong>PPMC9SDB</strong> ein und schon sparen Sie 100 Euro. Ist das nix?!</p>
<p><strong>Update:</strong> Sodala, jetzt ist auch die <a title="Webseite des Multicore-Powerday 2009" href="http://www.priopowerday.de/home.html" target="_blank">zugehörige Webseite</a> online.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/multicore-powerday-2009-am-23-april-in-munchen/01/2009/&via=sw_devtwits&text=Multicore-Powerday 2009 am 23. April in München [Upd]&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/multicore-powerday-2009-am-23-april-in-munchen/01/2009/&via=sw_devtwits&text=Multicore-Powerday 2009 am 23. April in München [Upd]&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/multicore-powerday-2009-am-23-april-in-munchen/01/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ist für Windows 7 ein neuer Taskmanager notwendig?</title>
		<link>http://www.software-dev-blog.de/ist-fur-windows-7-ein-neuer-taskmanager-notwendig/01/2009/</link>
		<comments>http://www.software-dev-blog.de/ist-fur-windows-7-ein-neuer-taskmanager-notwendig/01/2009/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 14:33:28 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Virtualisierung]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=608</guid>
		<description><![CDATA[Gerade eben habe ich einen interessanten Blog-Beitrag zum Thema Windows 7 und dessen Multicore-Fähigkeiten gefunden. Da das nächste Betriebssystem aus dem Hause Microsoft (das eigentlich gar nicht so richtig neu ist) mit bis zu 256 Prozessorkernen zurechtkommen wird, stellt sich Blog-Autor Doug Holland die Frage, ob der Windows Taskmanager noch das passende Tool ist für [...]]]></description>
			<content:encoded><![CDATA[<p>Gerade eben habe ich einen <a title="Wie sehen 256 Prozessorkerne aus?" href="http://software.intel.com/en-us/blogs/2009/01/05/what-does-256-cores-look-like/" target="_blank">interessanten Blog-Beitrag</a> zum Thema <a title="Windows 7 und seine Multicore-Fähigkeiten" href="http://www.software-dev-blog.de/windows-7-und-seine-multicore-fahigkeiten/01/2009/">Windows 7 und dessen Multicore-Fähigkeiten</a> gefunden. Da das nächste Betriebssystem aus dem Hause Microsoft (das eigentlich gar nicht so richtig neu ist) mit bis zu 256 Prozessorkernen zurechtkommen wird, stellt sich Blog-Autor Doug Holland die Frage, ob der Windows Taskmanager noch das passende Tool ist für solch eine Fülle an CPUs.</p>
<p>Das ist sicherlich nicht ganz ernst gemeint, macht aber die Herausforderungen sehr anschaulich, vor der die Entwicklergemeinde stehen wird, sobald Windows 7 auf dem Markt ist und das Programmieren von neuer Software für maximal 256 Cores ansteht. Dann gibt es nämlich nur noch eins: die richtigen Tools kaufen und parallelisieren, was das Zeug hält. Andernfalls wird aus dem Multicore-Riesen ein lahmer Singlecore-Zwerg, der von der sequenziell programmierten Anwendung jämmerlich ausgebremst wird.</p>
<p>Wie gut, dass es hierfür schon einiges gibt und weitere Tools kommen werden. Die Rede ist beispielsweise von den <a title="Threading Building Blocks" href="http://www.software-dev-blog.de/mit-intel-threading-building-blocks-parallel-programmieren/12/2008/">Threading Building Blocks</a>, <a title="Thread Checker hilft, mögliche Dead Locks und Race Conditions aufzuspüren" href="http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Thread Checker</a>, <a title=" Beta-Tester des Intel Parallel Composer werden" href="http://www.software-dev-blog.de/jetzt-beta-tester-des-intel-parallel-composer-werden/11/2008/">Parallel Studio</a>, <a title="Videochat mit Steve Teixeira, Microsoft-Parallel-Guru über VS 2010 und mehr" href="http://www.software-dev-blog.de/videochat-mit-steve-teixeira-microsoft-parallel-guru/11/2008/">Visual Studio 2010</a> und weiteren nützlichen Hilfsmitteln, mit denen die Parallelprogrammierung zwar kein Klacks wird, vieles sich aber vereinfachen lässt.</p>
<p>Ach ja: Für das Problem mit dem unterdimensionierten Windows Taskmanager hat einer der Kommentatoren einen nützlichen Tipp parat: <a title="Wenn Hard- und Software verschmelzen: Virtualisierung" href="http://www.software-dev-blog.de/wenn-hard-und-software-verschmelzen-virtualisierung/10/2008/">Virtualisierung</a>. Soll heißen, dass sich einfach mehrere Prozessorkerne zu einem virtuellen Prozessor zusammenfassen lassen. Dann passt die Taskmanager-Anzeige auch wieder auf einen 19-Zöller und die Anschaffung eines 30-Zoll-Monitors kann noch einmal verschoben werden &#8230;</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/ist-fur-windows-7-ein-neuer-taskmanager-notwendig/01/2009/&via=sw_devtwits&text=Ist für Windows 7 ein neuer Taskmanager notwendig?&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/ist-fur-windows-7-ein-neuer-taskmanager-notwendig/01/2009/&via=sw_devtwits&text=Ist für Windows 7 ein neuer Taskmanager notwendig?&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/ist-fur-windows-7-ein-neuer-taskmanager-notwendig/01/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entwicklergemeinde trifft sich auf der OOP 2009</title>
		<link>http://www.software-dev-blog.de/entwicklergemeinde-trifft-sich-auf-der-oop-2009/01/2009/</link>
		<comments>http://www.software-dev-blog.de/entwicklergemeinde-trifft-sich-auf-der-oop-2009/01/2009/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 14:16:29 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=574</guid>
		<description><![CDATA[Die Software-Entwicklergemeinde trifft sich vom 26. bis 30. Januar auf der OOP 2009 im ICM der Messe München. An fünf Tagen wird es um die ganze Bandbreite der (objektorientierten) Programmierung und Software-Entwicklung gehen. Namhafte Redner geben in Vorträgen und Workshops Auskunft darüber, wohin die Entwicklerreise geht. Zu den Highlight zählen unter anderem: Java – Quo [...]]]></description>
			<content:encoded><![CDATA[<p>Die Software-Entwicklergemeinde trifft sich vom 26. bis 30. Januar <a title="Webseite der OOP 2009" href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/index.php" target="_blank">auf der OOP 2009</a> im ICM der Messe München. An fünf Tagen wird es um die ganze Bandbreite der (objektorientierten) Programmierung und Software-Entwicklung gehen. Namhafte Redner geben in Vorträgen und Workshops Auskunft darüber, wohin die Entwicklerreise geht. Zu den Highlight zählen unter anderem:</p>
<ul>
<li><a href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/program.php?cat=session&amp;ID=33" target="_blank">Java – Quo Vadis?</a></li>
</ul>
<ul>
<li><a href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/program.php?cat=session&amp;ID=35" target="_blank">Entwurf von mobilen iPhone-Anwendungen für Firmen</a></li>
</ul>
<ul>
<li><a href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/program.php?cat=session&amp;ID=39" target="_blank">Was ein Software-Architekt wissen sollte</a></li>
</ul>
<ul>
<li><a href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/program.php?cat=session&amp;ID=51" target="_blank">Herausforderung Mehrkern-Systeme</a></li>
</ul>
<ul>
<li><a href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/program.php?cat=session&amp;ID=72" target="_blank">How to be an IT Superhero – The Future of Application Development</a></li>
</ul>
<ul>
<li><a href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/program.php?cat=session&amp;ID=80" target="_blank">Warum Anwendungen nicht skalieren – Wie man Performance- und Skalierbarkeitsprobleme findet und eliminiert</a></li>
</ul>
<ul>
<li><a href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/program.php?cat=session&amp;ID=90" target="_blank">Programmierung für Multicore CPUs</a></li>
</ul>
<ul>
<li><a href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/program.php?cat=session&amp;ID=115" target="_blank">10 Jahre Model-Driven Software Development</a></li>
</ul>
<ul>
<li><a href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/program.php?cat=session&amp;ID=125" target="_blank">Ursprung des Computers</a> (Horst Zuse!)</li>
</ul>
<p>Daneben gibt es interessante Ganztagskurse, die am Montag und am Freitag stattfinden. Und wer es besonders lange mag, dem seien die &#8220;Night School Sessions&#8221; empfohlen.</p>
<p><span id="more-574"></span>Übrigens: Falls Sie nicht wissen sollten, warum es keinen triftigen Grund gibt, von der OOP 2009 fernzubleiben, sollten Sie sich mal die <a title="10 + 5 Gründe für die OOP 2009" href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/index.php?cat=reasons" target="_blank">zehn Gründe</a> dafür zu Rate ziehen. Und fünf Argumentationshilfen für den Chef gibt&#8217;s auch gleich dazu.</p>
<p>Neben den zahlreichen Vorträgen und Workshops wird  auch eine Ausstellung geboten, auf der zahlreiche Unternehmen wie Borland, Oracle und andere ihre Lösungen zeigen. Und der Bitkom ist ebenfalls anwesend.</p>
<p>Ich habe mich übrigens gerade akkreditiert und werde vor Ort sein, um mit einigen Leuten über das Thema Multicore-Programmierung zu sprechen. So wie mit <a title="Mehr Infos zu Professor Tichy" href="http://www.ipd.uka.de/Tichy/people.php?id=15" target="_blank">Professor Walter F. Tichy</a> von der Uni Karlsruhe, der zu dem Thema Multicore-Plattformen eigene Vorlesungen anbietet. Darauf bin ich schon sehr gespannt.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/entwicklergemeinde-trifft-sich-auf-der-oop-2009/01/2009/&via=sw_devtwits&text=Entwicklergemeinde trifft sich auf der OOP 2009&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/entwicklergemeinde-trifft-sich-auf-der-oop-2009/01/2009/&via=sw_devtwits&text=Entwicklergemeinde trifft sich auf der OOP 2009&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/entwicklergemeinde-trifft-sich-auf-der-oop-2009/01/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buchtipp: Multicore-Programmierung lernen mit Intel</title>
		<link>http://www.software-dev-blog.de/buchtipp-multicore-programmierung-lernen-mit-intel/12/2008/</link>
		<comments>http://www.software-dev-blog.de/buchtipp-multicore-programmierung-lernen-mit-intel/12/2008/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 14:27:05 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Buchtipp]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=515</guid>
		<description><![CDATA[Für alle, die sich mit dem Thema Multicore-Programmierung autodidaktisch auseinandersetzen wollen, haben wir heute einen Buchtipp: &#8220;Multicore-Programmierung&#8221; von Shameem Akhter und Jason Roberts. Für alle, die mehr auf das Original stehen, sei das Buch in Englisch bei Amazon empfohlen (54,90 Euro, ISBN-10: 3939084700) oder die deutsche Übersetzung &#8220;Multicore-Programmierung&#8221;, die es bei Entwickler.press für denselben Preis [...]]]></description>
			<content:encoded><![CDATA[<p>Für alle, die sich mit dem Thema Multicore-Programmierung autodidaktisch auseinandersetzen wollen, haben wir heute einen Buchtipp: &#8220;Multicore-Programmierung&#8221; von Shameem Akhter und Jason Roberts. Für alle, die mehr auf das Original stehen, sei das Buch in Englisch <a title="Direktlink zu Amazon" href="http://www.amazon.de/Multi-Core-Programmierung-Intel-Shameem-Akhter/dp/3939084700/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1230558395&amp;sr=8-2" target="_blank">bei Amazon</a> empfohlen (54,90 Euro, ISBN-10: 3939084700) oder die deutsche Übersetzung &#8220;Multicore-Programmierung&#8221;, die es <a title="Direkt-Link zu entwickler.press" href="http://entwickler-press.de/ep/psecom,id,2,buchid,161.html" target="_blank">bei Entwickler.press</a> für denselben Preis zu kaufen gibt.</p>
<p>Das Buch ist unterteilt in elf Kapitel, die sich allesamt mit dem Thema Multicore-Programmierung und Multithreading beschäftigen. Im ersten Abschnitt geht es zunächst um die Grundzüge von Multicore-Architekturen und die Frage, was das <a title="Wiki-Infos zum Amdahlschen Gesetz" href="http://de.wikipedia.org/wiki/Amdahlsches_Gesetz">Amdahlsche Gesetz</a> mit dem Ganzen zu tun hat.</p>
<p>Kapitel Nummer 2 betrachtet Threads im Speziellen und zeigt, wo sie eine Rolle spielen und wie hier die Virtualisierung ins Spiel kommt. Der dritte Teil des Buches erläutert dann, wie ein Programm in Threads zerlegt werden sollte, um ein Höchstmaß an Parallelität in die Anwendung zu implementieren.</p>
<p>Anschließend geht es ans Eingemachte: Shameem und Jason betrachten die einzelnen Schritte, die bei der Multithread-Programmierung anfallen, also die Synchronisierung von Daten und Aufgaben, und erklären auch, wie Deadlocks entstehen und wie man diese vermeidet. Kapitel fünf und sechs widmen sich  den Threading-Modellen, also den Windows- und POSIX-Threads sowie OpenMP, die wir <a title="Multithreading-Konzepte: OpenMP, Windows-APIs und Intel TBB " href="http://www.software-dev-blog.de/multithreading-konzepte-openmp-apis-und-intel-tbb/11/2008/">auch schon betrachtet</a> haben.</p>
<p><span id="more-515"></span>Im siebten Kapitel wird es ein wenig schmerzhaft, denn hier zeigen die Autoren, welche Fehler man bei der Multicore-Programmierung machen kann. Die gute Nachricht: Zu jedem Problem gibt es eine passende Lösung, und so präsentiert das Verfasserduo die schönsten Klassiker der Parallelprogrammierung – zu viele Threads, Race Conditions, Deadlocks und Speicherprobleme – wie man sie in den Griff bekommt und welche Tools hierfür taugen.</p>
<p>Abschnitt Numero acht macht kurzen Prozess mit dem siebten, indem es die Fehlerbehebung, also das Debugging näher betrachtet. Beim neunten Kapitel scheint ein Bruch im Buchkonzept vorzuliegen, denn es geht auf einmal um Single-Core-Prozessoren. Dafür haben die Autoren allerdings eine passende Erklärung parat: Nur wer die Funktionsweisen der Einkern-CPUs kennt, versteht die Multicore-Prozessoren richtig. Zumal es ja keinen 100-Prozent-Parallelcode gibt. Daher ist dieses Thema nicht ganz unbedeutend, wenngleich man es nicht unbedingt an dieser Stelle erwartet.</p>
<p>Anhand des zehnten und elften Abschnitts merkt man dann doch noch, dass es sich bei dem Multicore-Buch um ein Intel-Produkt handelt: Die Parallelprogrammierung wird am Beispiel der Intel Multicore-Prozessoren besprochen. Und auch die Programmiertools wie der <a title="Intel Thread Checker" href="http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Thread Checker</a>, die <a title=" Software-Projekte mit Multicore-Bibliotheken optimieren " href="http://www.software-dev-blog.de/software-projekte-mit-multicore-bibliotheken-optimieren/12/2008/">Intel MKL, die Intel IPP</a> und natürlich der <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> entstammen alle derselben Schmiede.</p>
<p><strong>Fazit:</strong> Für alle, die mehr wissen wollen zum Thema Multicore-Programmierung, sei dieses Buch wärmsten empfohlen. Denn es ist gespickt mit fundiertem Fachwissen, hilfreichen Beispielen und nützlichen Tipps.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/buchtipp-multicore-programmierung-lernen-mit-intel/12/2008/&via=sw_devtwits&text=Buchtipp: Multicore-Programmierung lernen mit Intel&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/buchtipp-multicore-programmierung-lernen-mit-intel/12/2008/&via=sw_devtwits&text=Buchtipp: Multicore-Programmierung lernen mit Intel&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/buchtipp-multicore-programmierung-lernen-mit-intel/12/2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Beliebte Fehler bei der Parallelprogrammierung</title>
		<link>http://www.software-dev-blog.de/beliebte-fehler-bei-der-parallelprogrammierung/12/2008/</link>
		<comments>http://www.software-dev-blog.de/beliebte-fehler-bei-der-parallelprogrammierung/12/2008/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 10:30:28 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=500</guid>
		<description><![CDATA[Parallelprogrammierung ist keine einfache Disziplin und birgt eine Menge Fehlerquellen. Das beginnt beim grundsätzlichen Design der Anwendung und endet bei falsch gesetzten &#8220;Locks&#8221;. Daher folgen an dieser Stelle die beliebtesten Fehler der Multicore-Programmierung. Und was man dagegen tun kann, erfahren Sie hier auch. Zunächst einmal helfen unsere fünf Multicore-Regeln, die wir Ende letzten Monats aufgestellt [...]]]></description>
			<content:encoded><![CDATA[<p>Parallelprogrammierung ist keine einfache Disziplin und birgt eine Menge Fehlerquellen. Das beginnt beim grundsätzlichen Design der Anwendung und endet bei falsch gesetzten &#8220;Locks&#8221;. Daher folgen an dieser Stelle die beliebtesten Fehler der Multicore-Programmierung. Und was man dagegen tun kann, erfahren Sie hier auch.</p>
<p>Zunächst einmal helfen unsere <a title=" Fünf Multicore-Programmierregeln auf einen Blick " href="http://www.software-dev-blog.de/funf-multicore-programmierregeln-auf-einen-blick/11/2008/">fünf Multicore-Regeln</a>, die wir Ende letzten Monats aufgestellt haben. Die wichtigste davon lautet beim Software-Design: Denke parallel! Denn nur so hält man am Schluss eine Anwendung in den Händen, die sich mithilfe der <a title=" Nützliche und kostenlose Entwickler-Tools " href="http://www.software-dev-blog.de/nutzliche-und-kostenlose-entwickler-tools/11/2008/">passenden Tools</a> bestmöglich parallelisieren lässt.</p>
<p>Eine beliebte Fehlerquelle ist ein <strong>Überangebot an Threads</strong>, vor allem dann, wenn Sie diese &#8220;manuell&#8221; programmieren, so wie im Falle von Pthreads. Daher sollte man durchaus sparsam mit dem Erstellen von Threads umgehen, denn nur eine ausgewogene Balance von parallelem und seriellem Quellcode bringt die erwünschten Leistungsschübe. Oder man bedient sich nützlicher Tools wie <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 TBB</a>, die Threads automatisch generieren.</p>
<p><span id="more-500"></span>Ebenfalls sehr wichtig ist die optimale Granularität der zum Einsatz kommenden <strong>Locks und Unlocks</strong>, denn jedes Sperren und Entsperren von parallelem Programmcode erfordert einen hohen Verwaltungsaufwand. Werden Locks zu lange ausgeführt, können sie andere Threads unnötig blockieren, was die Anwendung insgesamt ausbremst. Und auch die gemeinsam genutzten Speicherressourcen müssen bestmöglich aufeinander abgestimmt sein, denn ein übertriebener Synchronisierungsaufwand macht sich negativ bemerkbar.</p>
<p>Ein weiterer Hemmschuh parallel programmierter Software ist die <strong>schlechte Verteilung der notwendigen Tasks</strong> auf die vorhandenen Prozessorkerne beziehungsweise Threads. Denn nur wenn Sie diese optimal ausnutzen, indem Sie Leerlaufzeiten einzelner Cores vermeiden, skaliert die Anwendung auf einem Multicore-System in entsprechender Weise.</p>
<p>All diese Fehler können Sie übrigens von Anfang an vermeiden, indem Sie Tools wie den <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>einsetzen, der Ihnen genau die Stellen zeigt, die man am besten parallelisieren kann. Aber auch das Laufzeitverhalten einer fertigen Anwendung kann mit VTune erforscht werden. Und wenn Sie dann mal ein parallel programmiertes Programm vorliegen haben, hilft der <a title=" Fehler im Multithread-Code aufspüren: Thread Checker " href="http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Thread Checker</a> dabei, mögliche Fehler aufzuspüren. Hierbei sind Dead Locks und Race Conditions eine häufig auftretende Fehlerquelle, die sich mithilfe des Tools lokalisieren lassen.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/beliebte-fehler-bei-der-parallelprogrammierung/12/2008/&via=sw_devtwits&text=Beliebte Fehler bei der Parallelprogrammierung&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/beliebte-fehler-bei-der-parallelprogrammierung/12/2008/&via=sw_devtwits&text=Beliebte Fehler bei der Parallelprogrammierung&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/beliebte-fehler-bei-der-parallelprogrammierung/12/2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mac OS X 10.5 (Leopard) fährt voll auf Multicore ab</title>
		<link>http://www.software-dev-blog.de/mac-os-x-105-leopard-fahrt-voll-auf-multicore-ab/12/2008/</link>
		<comments>http://www.software-dev-blog.de/mac-os-x-105-leopard-fahrt-voll-auf-multicore-ab/12/2008/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 09:48:44 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=474</guid>
		<description><![CDATA[J, ja, es ist schon ein paar Tage her, dass Mac OS X 10.5, auch bekannt als Leopard, das Licht der Welt erblickt hat. Aber ich habe gerade ein paar sehr interessante Details bezüglich der Multicore-Affinität des Apple-Betriebssystems entdeckt. Und so richtig viel darüber habe ich im Web nicht gefunden. Hardware-seitig bietet Apple ja mit [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-485" style="margin-left: 10px; margin-right: 0px;" title="In Mac OS X 10.5 Leopard steckt eine Menge Multicore-Potenzial" src="http://www.software-dev-blog.de/wp-content/images/2008/12/apple-logo1.jpg" alt="In Mac OS X 10.5 Leopard steckt eine Menge Multicore-Potenzial" height="180" /></p>
<p>J, ja,  es ist schon ein paar Tage her, dass Mac OS X 10.5, auch bekannt als Leopard, das <a title="Die wichtigsten Leopard-Funktionen auf einen Blick" href="http://www.it-techblog.de/frisch-vom-apple-event-leopards-beste-funktionen/10/2007/" target="_blank">Licht der Welt</a> erblickt hat. Aber ich habe gerade ein paar sehr interessante Details bezüglich der Multicore-Affinität des Apple-Betriebssystems entdeckt. Und so richtig viel darüber habe ich im Web nicht gefunden.</p>
<p>Hardware-seitig bietet Apple ja mit dem <a title="Mehr Infos zum Mac Pro von Apple" href="http://www.it-techblog.de/neuer-mac-pro-und-xserve-mit-8-core-ab-sofort-bei-apple/01/2008/" target="_blank">Mac Pro</a> die volle Mehrkerntechnik von Intel: Acht Prozessorkerne beschleunigen vor allem die Bild- und Videobearbeitung, aber auch für Apple-eigene Anwendungen ist der Intel Xeon Prozessor, eine Quadcore-CPU mit maximal 3,2 GHz, nützlich.</p>
<p>Von dieser Mehrkern-Architektur profitieren unter anderem Programme wie Mail, das Adressbuch und die Verwaltung der Schriftensammlung, indem anfallende Aufgaben auf die vorhandenen Ressourcen möglichst optimal verteilt werden. Darum kümmert sich übrigens die neu programmierte Ablaufsteuerung von Leopard.</p>
<p>In Sachen Netzwerk hat sich Apple ebenfalls Gedanken gemacht: So wurde ein multithreading-fähiger Netzwerkstapel implementiert, der die Ein- und Ausgabeanfragen des LANs schneller verarbeiten kann. Außerdem wurde die indizierte Suchfunktion Spotlight beschleunigt, genauso wie die Wörterbuchfunktion von Mac OS X 10.5. Dies hat vor allem mit der <a title="Wiki-Infos zu Cocoa" href="http://de.wikipedia.org/wiki/Cocoa" target="_blank">objektorientierten API Cocoa</a> zu tun, die ebenfalls für den Multicore-Betrieb optimiert wurde.</p>
<p><span id="more-474"></span>Um all diese Verbesserungen hinsichtlich der parallelen Datenverarbeitung zu erzielen, hat Apple seinem Betriebssystem eine ganz neue Klasse an APIs spendiert, die sogenannten NSOperationen. Dabei werden unabhängig voneinander berechenbare Operationen einer Warteschleife hinzugefügt, die automatisch und sehr dynamisch die Verarbeitung der Befehle oder Operationen steuert, je nach Auslastung der vorhandenen Prozessorkerne.</p>
<p>Interessant daran ist auch die Tatsache, dass man als Entwickler die erforderlichen Threads nicht selbst erstellen und wieder schließen muss. Dies erledigt Cocoa automatisch, indem es die Operationen selbstständig auf die Ressourcen effizient verteilt.</p>
<p>Darüber hinaus lassen sich Leopard-basierte Macs (vor allem der bereits erwähnte Mac Pro) für wissenschaftliche Zwecke einsetzen, da Apple auch hier auf die Multicore-Fähigkeiten seiner Rechner setzt. Das Zauberwort heißt <a title="Wiki-Infos zu MPI" href="http://de.wikipedia.org/wiki/Message_Passing_Interface" target="_blank">OpenMPI</a>, was eine Vernetzung mehrerer Rechner ermöglicht. Dabei kommen mediumseitig IP-Verbindungen wie LAN oder WLAN zum Einsatz, die Software für den eigenen Mac-Cluster nennt sich <a title="Apple-Infos zu Xgrid" href="http://www.apple.com/de/server/macosx/technology/xgrid.html" target="_blank">Xgrid</a> und stammt ebenfalls von Apple. Selbst in der Entwicklerumgebung <a title="Apple-Infos zu Xcode" href="http://developer.apple.com/Tools/xcode/" target="_blank">Xcode</a> steckt eine Menge Multicore-Potenzial, wie wir ja bereits in einem <a title="Apple-Software mit Intel-Tools optimieren " href="http://www.software-dev-blog.de/apple-software-mit-intel-tools-optimieren/11/2008/">früheren Beitrag</a> gezeigt haben. Parallel Computing aus dem Hause Apple von A bis Z eben &#8230;</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/mac-os-x-105-leopard-fahrt-voll-auf-multicore-ab/12/2008/&via=sw_devtwits&text=Mac OS X 10.5 (Leopard) fährt voll auf Multicore ab&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/mac-os-x-105-leopard-fahrt-voll-auf-multicore-ab/12/2008/&via=sw_devtwits&text=Mac OS X 10.5 (Leopard) fährt voll auf Multicore ab&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/mac-os-x-105-leopard-fahrt-voll-auf-multicore-ab/12/2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimierte Compiler helfen beim Parallelisieren</title>
		<link>http://www.software-dev-blog.de/optimierte-compiler-helfen-beim-parallelisieren/12/2008/</link>
		<comments>http://www.software-dev-blog.de/optimierte-compiler-helfen-beim-parallelisieren/12/2008/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 14:45:05 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Optimieren]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=459</guid>
		<description><![CDATA[Auf dem Software Dev Blog war schon von diversen Entwickler-Tools die Rede, die Programmierern beim Erstellen multicore-tauglicher Anwendungen helfen sollen. Ob das die Threading Building Blocks sind, der Thread Checker, Hochleistungsbibliotheken oder der VTune Performance Analyzer &#8211; stets geht es darum, das Optimum aus seiner Software herauszuholen, falls diese auf Multicore-Plattformen möglichst gut skalieren soll. [...]]]></description>
			<content:encoded><![CDATA[<p>Auf dem Software Dev Blog war schon von diversen Entwickler-Tools die Rede, die Programmierern beim Erstellen multicore-tauglicher Anwendungen helfen sollen. Ob das die <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/">Threading Building Blocks</a> sind, der <a title=" Fehler im Multithread-Code aufspüren: Thread Checker " href="http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Thread Checker</a>, <a title=" Software-Projekte mit Multicore-Bibliotheken optimieren " href="http://www.software-dev-blog.de/software-projekte-mit-multicore-bibliotheken-optimieren/12/2008/">Hochleistungsbibliotheken</a> oder der <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> &#8211; stets geht es darum, das Optimum aus seiner Software herauszuholen, falls diese auf Multicore-Plattformen möglichst gut skalieren soll.</p>
<p>Wie aber sieht es mit den fundamentalen Tools aus, die bei der Programmierung an erster Stelle stehen, also etwa den Compilern, mit denen sich der Quellcode in eine ausführbare Anwendung verwandeln lässt? Nun, auch hierfür gibt es <a title="Alle Intel-Compiler auf einen Blick" href="http://www.intel.com/cd/software/products/asmo-na/eng/compilers/284132.htm" target="_blank">multicore-optimierte Lösungen</a>, die sich vor allem an C++- und Fortran-Programmierer richten. Das Ganze gibt es sogar als <a title="Intel C++ Compiler 11.0 Professional Edition für Windows" href="http://www.intel.com/cd/software/products/asmo-na/eng/compilers/279578.htm">komplettes Entwicklerpaket</a>, das neben dem C++-Compiler die TBB-Suite umfasst, die Integrated Performance Primitives und die Math Kernel Library.</p>
<p>Praktisch an dem Intel C++-Compiler für Windows sind vor allem zwei Dinge: Zum einen lässt er sich direkt in Visual Studio einbinden, was das Kompilieren innerhalb der gewohnten Umgebung ermöglicht. Und zum anderen ist der Compiler für Multicore-Plattformen optimiert. Das bedeutet, dass der Quellcode auf <a title=" Vier Schritte zum optimierten Multicore-Quellcode " href="http://www.software-dev-blog.de/vier-schritte-zum-optimierten-multicore-quellcode/12/2008/">mögliche Parallelitäten</a> hin untersucht wird. Findet der Compiler entsprechende Programmabschnitte, fügt er automatisch die passenden Konstrukte und Funktionen ein, die den seriell programmierten Abschnitt parallelisieren.</p>
<p>Neu an der Version 11 des Intel C++-Compilers sind übrigens unter anderem die eingebauten Lambda-Funktionen, OpenMP 3.0 und die Unterstützung von dezimalen Fließpunktoperatoren und -registern. Und natürlich gibt es die Intel Compiler auch für <a title="Intel Compiler für Linux" href="http://www.intel.com/cd/software/products/asmo-na/eng/compilers/284264.htm" target="_blank">Linux</a> (inklusive Eclipse-Unterstützung) und für <a title="Intel Compiler für Mac OS X" href="http://www.intel.com/cd/software/products/asmo-na/eng/compilers/270528.htm" target="_blank">Mac OS X</a> (in Verbindung mit <a title=" Apple-Software mit Intel-Tools optimieren " href="http://www.software-dev-blog.de/apple-software-mit-intel-tools-optimieren/11/2008/">XCode</a>).</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/optimierte-compiler-helfen-beim-parallelisieren/12/2008/&via=sw_devtwits&text=Optimierte Compiler helfen beim Parallelisieren&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/optimierte-compiler-helfen-beim-parallelisieren/12/2008/&via=sw_devtwits&text=Optimierte Compiler helfen beim Parallelisieren&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/optimierte-compiler-helfen-beim-parallelisieren/12/2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Von Single-Threading bis zur Multicore-Programmierung</title>
		<link>http://www.software-dev-blog.de/von-single-threading-bis-zur-multicore-programmierung/12/2008/</link>
		<comments>http://www.software-dev-blog.de/von-single-threading-bis-zur-multicore-programmierung/12/2008/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 15:58:53 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Methoden]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Quadcore]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=443</guid>
		<description><![CDATA[Betrachtet man die Evolution der Programmiermethoden der letzten Jahre, hat sich hier viel getan. Über Jahrzehnte hinweg galt die sequenzielle Programmierung (mal abgesehen von den HPC-Jungs) als konform und anerkannt. Jede Aufgabe, die es zu programmieren galt, wurde streng linear ausgeführt und erforderte daher keine parallelen Ansätze. Mit der Einführung neuer Betriebssysteme wie Microsoft Windows [...]]]></description>
			<content:encoded><![CDATA[<p>Betrachtet man die Evolution der Programmiermethoden der letzten Jahre, hat sich hier viel getan. Über Jahrzehnte hinweg galt die <strong>sequenzielle Programmierung</strong> (mal abgesehen von den HPC-Jungs) als konform und anerkannt. Jede Aufgabe, die es zu programmieren galt, wurde streng linear ausgeführt und erforderte daher keine parallelen Ansätze.</p>
<p>Mit der Einführung neuer Betriebssysteme wie Microsoft Windows und besserer Prozessoren wie dem <a title="Wiki-Infos zum Pentium Prozessor" href="http://de.wikipedia.org/wiki/Intel_Pentium" target="_blank">Intel Pentium MMX</a> standen auf einmal im Desktop-Segment ganz neue Möglichkeiten zur Verfügung: Mit <strong>Multitasking</strong> konnten zeitversetzt von einem Prozessor mehrere Aufgaben anscheinend gleichzeitig erledigt werden. Und das <strong>Multithreading</strong> erlaubte es dank neuer Befehlssätze (<a title="Wiki-Infos zu SSE" href="http://de.wikipedia.org/wiki/Streaming_SIMD_Extensions" target="_blank">SSE</a>), Daten gleichzeitig zu verarbeiten, wenn diese keine Abhängigkeit zueinander aufwiesen. Dazu gehört auch die <a title="Wiki-Infos zu SIMD" href="http://de.wikipedia.org/wiki/SIMD#SIMD_.28Single_Instruction.2C_Multiple_Data.29" target="_blank">SIMD-Architektur</a>, die beispielsweise gleichartige Operationen in großen Integer-Registern parallel ausführen kann.</p>
<p>Dann wurde mit dem <a title="Mehr Infos zum Pentium 4 HT Prozessor" href="http://www.intel.com/cd/products/services/emea/deu/desktop/processors/102356.htm" target="_blank">Intel Pentium 4 HT</a> der erste Prozessor für den Verbrauchermarkt vorgestellt, der auf Basis der <a title="Wiki-Infos zu Hyper-Threading" href="http://de.wikipedia.org/wiki/Hyper-Threading" target="_blank">Hyperthreading</a>-Technik zwei Aufgaben gleichzeitig in einem Prozessorkern ausführen konnte. Dies ermöglichte ganz neue Anwendungen, da deutlich mehr Rechenleistung auf Standard-PCs zur Verfügung stand. Die HT-Technik wird auch als simultanes Multithreading bezeichnet.</p>
<p>Mit dem Aufkommen von <strong>Dual- und Quadcore-Prozessoren</strong> im Massenmarkt ließen sich erstmals Anwendungen zur Laufzeit in unterschiedliche Aufgaben zerlegen, die dann auf mehreren CPU-Cores gleichzeitig, also <a title="Programmierregeln der parallelen Software-Entwicklung" href="http://www.software-dev-blog.de/funf-multicore-programmierregeln-auf-einen-blick/11/2008/">parallel</a>, verarbeitet werden können. Dies erfordert allerdings von den Software-Entwicklern sehr viel mehr Denkarbeit, um ein Programm von Haus aus parallel zu entwickeln. Zudem sollte er auf <a title="Mit diesen Tools lassen sich Anwendungen multi-threaden" href="http://www.software-dev-blog.de/software-projekte-mit-intel-tools-optimieren/10/2008/">Software-Tools</a> setzen, die ihn bei der parallelen Programmierung so gut wie nötig und möglich unterstützen.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/von-single-threading-bis-zur-multicore-programmierung/12/2008/&via=sw_devtwits&text=Von Single-Threading bis zur Multicore-Programmierung&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/von-single-threading-bis-zur-multicore-programmierung/12/2008/&via=sw_devtwits&text=Von Single-Threading bis zur Multicore-Programmierung&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/von-single-threading-bis-zur-multicore-programmierung/12/2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TU München verstärkt ihr Multicore-Engagement</title>
		<link>http://www.software-dev-blog.de/tu-munchen-verstarkt-sein-multicore-engagement/12/2008/</link>
		<comments>http://www.software-dev-blog.de/tu-munchen-verstarkt-sein-multicore-engagement/12/2008/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 15:48:33 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Bildung]]></category>
		<category><![CDATA[Kooperation]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=393</guid>
		<description><![CDATA[Erst am Freitag habe ich mich mit der Frage beschäftigt, warum in diesem Land zu wenig Geld und zu wenig Ressourcen in Sachen Multicore-Ausbildung gesteckt werden. Allerdings setzen einige Universitäten und Fachhochschulen bereits auf die Mehrkerntechnik und haben ihre Lehrpläne dahingehend optimiert. So wie die TU München, die schon seit längeren mit Intel in Sachen [...]]]></description>
			<content:encoded><![CDATA[<p>Erst am Freitag habe ich mich <a title="Ausbildungslücken in Sachen Multicore-Programmierung" href="http://www.software-dev-blog.de/ausbildungslucken-bei-der-multicore-programmierung/12/2008/">mit der Frage beschäftigt</a>, warum in diesem Land zu wenig Geld und zu wenig Ressourcen in Sachen Multicore-Ausbildung gesteckt werden. Allerdings setzen einige Universitäten und Fachhochschulen bereits auf die Mehrkerntechnik und haben ihre Lehrpläne dahingehend optimiert.</p>
<p>So wie die TU München, die schon seit längeren mit Intel in Sachen Multicore-Programmierung zusammenarbeitet. Hierzu habe ich auf Blip.tv ein <a title="Das komplette Video mit Prof.- Dr. Bode auf blip.tv" href="http://blip.tv/file/1162969" target="_blank">sehenswertes Video</a> mit Professor Doktor Arndt Bode gefunden, dem Vizepräsidenten der Technischen Uni zu München.</p>
<p>In diesem sechsminütigen Videochat erfährt man diverse aufschlussreiche Dinge:</p>
<ul>
<li>Nicht nur Informatikstudenten sollten sich mit dem Thema Multiprozessor-Architektur beschäftigen, sondern auch die anderen Fakultäten. Und klar, programmieren für mehrere CPU-Kerne sollten sie auch können.</li>
</ul>
<ul>
<li>Steigerungsraten in Sachen Rechenleistung lassen sich nur noch mithilfe mehrerer Prozessorkerne erzielen und der damit einhergehenden Threads, die parallel verarbeitet werden können. Denn die Zeiten der Gigahertz-Mania sind endgültig vorbei (sic!).</li>
</ul>
<p><span id="more-393"></span></p>
<ul>
<li>Sämtliche Kurse zum Thema Paralleles Programmieren werden sukzessive ausgebaut, und zwar nicht nur für angehende Informatiker, sondern auch für Chemiker, Physiker, Elektrotechniker und einige andere. Denn gerade in diesen Bereichen profitieren Anwendungen in hohem Maße von der Multicore-Programmierung, wie das anhand des Beispiels <a title="Gerade wissenschaftliche Anwendungen profitieren von multicore-optimierten Tools" href="http://www.software-dev-blog.de/software-projekte-mit-multicore-bibliotheken-optimieren/12/2008/">Hochleistungsbibliotheken</a> deutlich wird.</li>
</ul>
<ul>
<li>Die Grundlagen der parallelen Programmierung werden mittlerweile schon während des Grundstudiums gelehrt und die dazu passenden Praxisübungen gibt es gleich dazu. Nur so lernen die Studenten den richtigen Umgang mit den <a title="Nützliche und kostenlose Entwicklertools für die Multicore-Programmierung" href="http://www.software-dev-blog.de/nutzliche-und-kostenlose-entwickler-tools/11/2008/">vorhandenen Tools</a>, die das Entwickeln von Software für Mehrkern-Systeme erleichtern sollen.</li>
</ul>
<ul>
<li>Es geht aber auch darum, sich mit künftigen Technologien, Plattformen und Architekturen zu beschäftigen. Dazu zählt beispielsweise die Frage, wie sich in Zukunft Prozessoren entwickeln werden, aber auch die künftigen Cache-Techniken sind bei der Wahl der richtigen Programmiermethode von entscheidender Bedeutung. Daher ist es äußerst wichtig, dass sich Prozessorhersteller wie Intel permanent mit der <a title="Mehr Infos zum Intel Academic Program" href="http://software.intel.com/en-us/academic" target="_blank">akademischen Elite austauschen</a>, um so gemeinsam neue Ideen und Ansätze im Bereich Prozessorarchitekturen zu entwickeln.</li>
</ul>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/tu-munchen-verstarkt-sein-multicore-engagement/12/2008/&via=sw_devtwits&text=TU München verstärkt ihr Multicore-Engagement&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/tu-munchen-verstarkt-sein-multicore-engagement/12/2008/&via=sw_devtwits&text=TU München verstärkt ihr Multicore-Engagement&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/tu-munchen-verstarkt-sein-multicore-engagement/12/2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ausbildungslücken bei der Multicore-Programmierung</title>
		<link>http://www.software-dev-blog.de/ausbildungslucken-bei-der-multicore-programmierung/12/2008/</link>
		<comments>http://www.software-dev-blog.de/ausbildungslucken-bei-der-multicore-programmierung/12/2008/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 13:41:16 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Bildung]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=379</guid>
		<description><![CDATA[Ein Interview auf Elektroniknet.de brachte mir eine fundamentale Erkenntnis: Die Multicore-Programmierung findet offensichtlich noch in einem zu geringen Ausmaß statt, da es nicht an Entwicklertools fehlt, sondern an Entwicklern, die damit umgehen können. Diese Theorie stellt zumindest Professor Klaus Kißig von der FH Kiel auf. Seine Kernthese dürfte die Ohren diverser Kollegen und Dekane anderer [...]]]></description>
			<content:encoded><![CDATA[<p>Ein <a title="via elektroniknet.de" href="http://www.elektroniknet.de/home/bauelemente/news/n/d/bei-multicore-programmierung-fehlen-kenntnisse/" target="_blank">Interview auf Elektroniknet.de</a> brachte mir eine fundamentale Erkenntnis: Die Multicore-Programmierung findet offensichtlich noch in einem zu geringen Ausmaß statt, da es nicht an <a title="Mehr Infos zu Entwickler-Tools" href="http://www.software-dev-blog.de/tag/tool/">Entwicklertools</a> fehlt, sondern an Entwicklern, die damit umgehen können. Diese Theorie stellt zumindest Professor Klaus Kißig von der FH Kiel auf. Seine Kernthese dürfte die Ohren diverser Kollegen und Dekane anderer Bildungseinrichtungen zum Klingeln bringen:</p>
<blockquote><p>Das Problem ist eher, dass es zu wenige Leute gibt, die die Kenntnisse haben, um diese Compiler effektiv anzuwenden und die Hardware optimal ausnutzen können.</p></blockquote>
<p>Mit „diese Compiler“ meint er unter anderem <a title="Intel-Compiler-Webseite" href="http://www.intel.com/cd/software/products/asmo-na/eng/compilers/284132.htm" target="_blank">Intel-Compiler</a>, die ständig weiterentwickelt werden. Aber auch den Einsatz von <a title="Mehr Infos zu OpenMP" href="http://www.software-dev-blog.de/multithreading-konzepte-openmp-apis-und-intel-tbb/11/2008/">OpenMP</a> in Verbindung mit Standard-Compilern sieht er in diesem Kontext als großen Vorteil.</p>
<p>Das bedeutet also, dass es vor allem bei der Ausbildung hakt, da es die jeweiligen Einrichtungen bis dato offensichtlich noch nicht geschafft haben, neue Techniken wie Multicore-Systeme in den Vorlesungsplan zu integrieren.</p>
<p><span id="more-379"></span>Eine kurze Stichprobe via Google mit dem Suchbegriff <em>„Vorlesung Multicore“</em> fördert es dann tatsächlich zu Tage: Parallele Programmierung steht bei den allermeisten Unis und FHs noch nicht auf der Tagesordnung. Als lobenswerte Ausnahmen sind hier die FH Kiel zu nennen (sic!), die <a title="Vorlesungsplan der Uni Augsburg zur parallelen Programmierung" href="http://www.informatik.uni-augsburg.de/lehrstuehle/sik/lehre/ws/multicore/" target="_blank">Uni Augsburg</a>, die <a title="Lehrplan der TU Chemnitz zum Thema paralleles Programmieren" href="http://www.tu-chemnitz.de/informatik/PI/lehre/plan/teach_mp08.php" target="_blank">TU Chemnitz</a>, die <a title="Lehrplan der TU Dortmund zum Thema paralleles Programmieren" href="http://ls5-www.cs.tu-dortmund.de/opencms/de/lehre/vorlesungen/ws0809/mpes.html" target="_blank">TU Dortmund</a>, die <a title="Lehrplan der Uni Karlsruhe zum Thema paralleles Programmieren" href="http://www.ira.uni-karlsruhe.de/I3V_HTML/VERANSTALTUNGEN/01325935.htm" target="_blank">Uni Karlsruhe</a>, die <a title="Lehrplan der LMU zum Thema paralleles Programmieren" href="http://www.bio.ifi.lmu.de/lehre/WS2008/VLG_HPC/" target="_blank">Uni München</a>, die <a title="Lehrplan der Uni Potzdam zum Thema paralleles Programmieren" href="http://www.cs.uni-potsdam.de/bs/teaching/ws2008/seminar_pr.html">Uni Potsdam</a> und die <a title="Lehrplan der Uni Stuttgart zum Thema paralleles Programmieren" href=" http://www.ipvs.uni-stuttgart.de/abteilungen/pas/lehre/lehrveranstaltungen/ws0809/Parallele_Systeme_Vorlesung" target="_blank">Uni Stuttgart</a>.</p>
<p>Dass sich noch nicht mehr Unis und FHs mit dem Thema Multicore-Programmierung befassen, ist doch ein wenig überraschend, da sich Intel <a title="Pressemeldung vom 9. August 2006" href="http://www.intel.com/cd/corporate/pressroom/emea/deu/archive/2006/312023.htm" target="_blank">seit über zwei Jahren</a> mit einem groß angelegten Ausbildungsprogramm an Universitäten und Fachhochschulen wendet, um diesen das Thema paralleles Programmieren schmackhaft zu machen.</p>
<p>Das beginnt mit einer finanziellen Unterstützung, geht weiter über das Bereitstellen von Entwicklertools und endet bei Experten der <a title="Intel Software College Group" href="http://www.intel.com/software/college" target="_blank">Intel Software College Group</a>, die an Unis und FHs Kurse zum Thema Multicore-Programmierung geben. Fragt sich nur, warum nicht mehr Einrichtungen auf diesen Zug aufspringen?</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/ausbildungslucken-bei-der-multicore-programmierung/12/2008/&via=sw_devtwits&text=Ausbildungslücken bei der Multicore-Programmierung&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/ausbildungslucken-bei-der-multicore-programmierung/12/2008/&via=sw_devtwits&text=Ausbildungslücken bei der Multicore-Programmierung&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/ausbildungslucken-bei-der-multicore-programmierung/12/2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple Mac OS X 10.6 mit hohem Multicore-Potenzial</title>
		<link>http://www.software-dev-blog.de/apple-mac-os-x-106-mit-hohem-multicore-potenzial/12/2008/</link>
		<comments>http://www.software-dev-blog.de/apple-mac-os-x-106-mit-hohem-multicore-potenzial/12/2008/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 13:13:54 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Optimieren]]></category>
		<category><![CDATA[Programmieren]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=356</guid>
		<description><![CDATA[John Hubbard scheint ein ziemlich kluger Kopf zu sein. Denn erstens beschäftigt er sich bei Apple als Director of Unix Technologies mit sehr komplexen und ernsthaften Dingen. Und zweitens hat er Mitte November auf einer Konferenz in San Diego bemerkenswerte Dinge über Intel und Multicore gesagt. Beispiele gefällig? Forget everything you thought you knew about [...]]]></description>
			<content:encoded><![CDATA[<p>John Hubbard scheint ein ziemlich kluger Kopf zu sein. Denn erstens beschäftigt er sich bei <strong>Apple</strong> als Director of Unix Technologies mit sehr komplexen und ernsthaften Dingen. Und zweitens hat er Mitte November auf einer <a title="Mehr Infos zu LISA'08" href="http://www.usenix.org/events/lisa08/" target="_blank">Konferenz in San Diego</a> bemerkenswerte Dinge über Intel und Multicore gesagt. Beispiele gefällig?</p>
<blockquote><p>Forget everything you thought you knew about multi-threaded programming (and, as it turns out, most developers didn’t know much anyway).</p></blockquote>
<blockquote><p>The kernel is the only one who really knows the right mix of cores and power states to use at any given time &#8211; this can’t be a pure app-driven decision.</p></blockquote>
<blockquote><p>We need new APIs and mechanisms for dealing with this incoming meteor.</p></blockquote>
<p>Wie gut, dass sich Intel über Letzteres bereits Gedanken macht und Tools wie <a title="Mehr Infos zu den Intel TBB" href="http://www.software-dev-blog.de/multithreading-konzepte-openmp-apis-und-intel-tbb/11/2008/">Intel TBB</a> und <a title="Intel Parallel Composer steht als Beta bereit" href="http://www.software-dev-blog.de/jetzt-beta-tester-des-intel-parallel-composer-werden/11/2008/">Intel Parallel Studio</a> bietet, mit deren Hilfe die Multicore-Programmierung deutlich erleichtert werden kann.</p>
<p>Weniger schlau während seines Vortrags war allerdings die Folie Nummer 5, auf der er (ganz inoffiziell natürlich) den Erscheinungszeitraum der nächsten <a title="Mehr Infos zu Snow Leopard auf apple.com" href="http://www.apple.com/macosx/snowleopard/" target="_blank">OS-X-Version 10.6 aka Snow Leopard</a> bekannt gegeben hat, nämlich das erste Quartal 2009. Anfang Juni während der <a title="Die WWDC'08-Keynote zum Nachlesen" href="http://www.it-techblog.de/wwdc08-live-ticker-iphone-20-snow-leopard-co/06/2008/" target="_blank">Apple-Entwicklerkonferenz WWDC’08</a> war noch von ungefähr einem Jahr die Rede, bis Mac OS X 10.6 in die Läden kommt. Tja, dumm gelaufen!</p>
<p>Und was hat das alles mit Multicore-Programmierung zu tun? Nun, in der nächsten Version des Apple-Betriebssystems wird ganz viel Multicore-Unterstützung stecken. Leider gibt Apple noch nichts Konkretes raus (und John leider auch nicht), aber einige grundsätzliche Dinge sind heute schon klar:</p>
<p><span id="more-356"></span>Die Multicore-Technik in Snow Leopard trägt den Codenamen „Grand Central“ und soll laut Apple den Umgang mit Multicore-Systemen erheblich erleichtern. Das soll sowohl die Software-Entwickler betreffen als auch die Anwendungen und deren Ausführung. Es geht also um die Zuordnung von Tasks auf vorhandene Prozessorkerne und eine verbesserte Multicore-Programmierung unter Mac OS X 10.6. Das ist so überraschend nicht, schließlich weiß Apple seit vielen Jahren ganz genau, wie man Software und Hardware optimal aufeinander abstimmt.</p>
<p>Übrigens: Auch John Hubbards Chef, Mister Steve Jobs, kann gelegentlich nicht ganz so schlaue Dinge sagen. In einem <a title="Das komplette Interview mit Steve Jobs" href="http://bits.blogs.nytimes.com/2008/06/10/apple-in-parallel-turning-the-pc-world-upside-down/" target="_blank">Interview mit dem Bits Blog</a> der News York Times sprach er nämlich folgenden Satz:</p>
<blockquote><p>The way the processor industry is going is to add more and more cores, but nobody knows how to program those things. I mean, two,, [processor cores], yeah; four, not really; eight, forget it!</p></blockquote>
<p>So, so, niemand weiß, wie man Software für vier, acht oder mehr Prozessorkerne programmiert. Na, Steve, frag mal bei <a title="Videochat mit Nero zum Thema Core i7 und Nero-Software" href="http://software.intel.com/en-us/videos/perfect-match-nero-and-the-intel-core-i7" target="_blank">Intel und seinen Partnern</a> nach, wie das geht &#8230;</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/apple-mac-os-x-106-mit-hohem-multicore-potenzial/12/2008/&via=sw_devtwits&text=Apple Mac OS X 10.6 mit hohem Multicore-Potenzial&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/apple-mac-os-x-106-mit-hohem-multicore-potenzial/12/2008/&via=sw_devtwits&text=Apple Mac OS X 10.6 mit hohem Multicore-Potenzial&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/apple-mac-os-x-106-mit-hohem-multicore-potenzial/12/2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fünf Multicore-Programmierregeln auf einen Blick</title>
		<link>http://www.software-dev-blog.de/funf-multicore-programmierregeln-auf-einen-blick/11/2008/</link>
		<comments>http://www.software-dev-blog.de/funf-multicore-programmierregeln-auf-einen-blick/11/2008/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 15:02:21 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[TBB]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=339</guid>
		<description><![CDATA[Oft hört man die Frage, was beim parallelen Programmieren alles zu beachten sei. Deshalb folgen an dieser Stelle die fünf wichtigsten Multicore-Regeln für angehende Parallel-Entwickler: Multicore-Regel Nummer 1: Denke parallel! Am allerbesten ist ein paralleles Konzept von Anfang an. Dies vermeidet ein nachträgliches Implementieren parallelen Quellcodes, wie das beispielsweise mit den Intel Threading Building Blocks [...]]]></description>
			<content:encoded><![CDATA[<p>Oft hört man die Frage, was beim parallelen Programmieren alles zu beachten sei. Deshalb folgen an dieser Stelle die fünf wichtigsten Multicore-Regeln für angehende Parallel-Entwickler:</p>
<p><span style="color: #000080;"><em><span><span>Multicore-Regel Nummer 1:</span></span></em></span> <strong>Denke parallel!</strong> Am allerbesten ist ein paralleles Konzept von Anfang an. Dies vermeidet ein nachträgliches Implementieren parallelen Quellcodes, wie das beispielsweise mit den <a title="Mehr Infos zu Intel TBB" href="http://www.software-dev-blog.de/multithreading-konzepte-openmp-apis-und-intel-tbb/11/2008/">Intel Threading Building Blocks</a> möglich ist. Optimalerweise legen Sie sich eine Strategie zurecht, wie Sie Schritt für Schritt zu einer multicore-optimierten Anwendung kommen.</p>
<p><span style="color: #000080;"><em>Multicore-Regel Nummer 2:</em></span> <strong>Entwickle task-orientiert!</strong> Parallel programmierter Code skaliert am besten, wenn er nicht für eine bestimmte Zahl an Prozessoren programmiert wurde, sondern sich an der bestmöglichen Zahl an parallel ausführbaren Aufgaben orientiert. Denken Sie daher nicht in Threads, dass erledigen Tools wie die <a title="Intel TBB-Webseite" href="http://www.intel.com/cd/software/products/asmo-na/eng/threading/threadbuildblocks/294797.htm" target="_blank">Intel TBB</a> für Sie. Deren Scheduler verteilt die auszuführenden Aufgaben auf die vorhandenen Prozessorkerne. Und je mehr davon zur Verfügung stehen, desto paralleler läuft die Anwendung.</p>
<p><span style="color: #000080;"><em>Multicore-Regel Nummer 3:</em> </span><strong>Auf die Tools kommt es an!</strong> Parallele Threads auf Basis von POSIX oder Windows-APIs programmieren zu wollen, ist ein hartes Brot, denn Sie müssen sich selbst um die Parallelisierung des Quellcodes kümmern. Viel einfacher ist es, mit den richtigen Tools der Anwendung paralleles Leben einzuhauchen.</p>
<p><span id="more-339"></span>Sie entwickeln bevorzugt mathematisch-orientierte Software? Dann werfen Sie mal einen Blick auf die <a title="Infos zu der Intel MKL" href="http://www.intel.com/cd/software/products/asmo-na/eng/perflib/mkl/index.htm" target="_blank">Intel Math Kernel Library.</a> Sie programmieren MPEG-Encoder? Fein, dann kommen am ehesten die <a title="Intel IPP-Webseite" href="http://www3.intel.com/cd/software/products/asmo-na/eng/perflib/219780.htm" target="_blank">Integrated Performance Primitives</a> in Frage, die mithilfe der vorhandenen Funktionen das Parallelisieren von Multimediaanwendungen erleichtern. Und die Intel TBB habe ich ja bereits erwähnt, die dank ihrer eingebauten Multithread-Funktionen vor allem Schleifenkonstrukte mit wenigen Programmzeilen parallelisieren.</p>
<p><em><span style="color: #000080;">Multicore-Regel Nummer 4:</span> </em><strong>Multithread-Code muss sequenziell laufen!</strong> Das klingt zunächst einmal kontraproduktiv, stellt sich aber gerade beim Debuggen als großer Vorteil heraus, da die Fehlersuche im sequenziellen Quellcode wesentlich einfacher ist. Stellen Sie also sicher, dass Ihre Anwendung auf einem Thread fehlerfrei läuft. Wenn Sie dann beim Umstellen auf zwei, vier oder mehr Threads Fehler feststellen (zum Beispiel mithilfe des <a title="Intel Thread Checker" href="http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Thread Checkers</a>), können Sie sich ziemlich sicher sein, dass im Parallel-Code etwas nicht stimmt. Übrigens: Ein vollständig parallelisiertes Programm ist keine gute Idee!</p>
<p><span style="color: #000080;"><em>Multicore-Regel Nummer 5:</em></span> <strong>Denke an die Speicherverwaltung!</strong> Die Zuweisung von benötigtem Speicher ist vor allem bei parallel ausführbaren Programmen eine echte Herausforderung, da je nach Anzahl der verfügbaren Prozessoren und der damit maximalen Anzahl von Threads der richtigen Speicherverwaltung zur Laufzeit eine enorm wichtige Bedeutung zukommt. Daher sollten Sie beim Entwickeln von Multithread-Code unbedingt auf einen skalierenden Memory Allocator setzen, der den notwendigen Speicher automatisch verwaltet. Die Intel TBB setzen solch einen dynamischen Speicherzuweiser ein &#8230;</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/funf-multicore-programmierregeln-auf-einen-blick/11/2008/&via=sw_devtwits&text=Fünf Multicore-Programmierregeln auf einen Blick&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/funf-multicore-programmierregeln-auf-einen-blick/11/2008/&via=sw_devtwits&text=Fünf Multicore-Programmierregeln auf einen Blick&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/funf-multicore-programmierregeln-auf-einen-blick/11/2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

