<?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; Referenz</title>
	<atom:link href="http://www.software-dev-blog.de/tag/referenz/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>Multicore-Guide, Teil 2 ist verfügbar</title>
		<link>http://www.software-dev-blog.de/multicore-guide-teil-2-ist-verfugbar/04/2010/</link>
		<comments>http://www.software-dev-blog.de/multicore-guide-teil-2-ist-verfugbar/04/2010/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 13:09:05 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Optimieren]]></category>
		<category><![CDATA[Referenz]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1365</guid>
		<description><![CDATA[Mitte März hatte ich über eine ausführliche Sammlung gebloggt, in der es sehr ausführlich um das Thema Multicore-Programmierung geht. Und jetzt habe ich dazu passend eine E-Mail des Intel-Service &#8220;Software Dispatch&#8221; erhalten. Diese Mail verweist nämlich auf den zweiten Teil des großen Multicore-Guides. Darin geht es auf gut 50 Seiten unter anderem um folgende Dinge: [...]]]></description>
			<content:encoded><![CDATA[<p>Mitte März hatte ich <a href="http://www.software-dev-blog.de/ausfuhrliche-ubersicht-zur-multicore-programmierung/03/2010/">über eine ausführliche Sammlung gebloggt</a>, in der es sehr ausführlich um das Thema Multicore-Programmierung geht. Und jetzt habe ich dazu passend eine E-Mail des Intel-Service &#8220;Software Dispatch&#8221; erhalten. Diese Mail verweist nämlich auf den zweiten Teil des großen Multicore-Guides. Darin geht es auf gut 50 Seiten unter anderem um folgende Dinge:</p>
<ul>
<li>das richtige Speicher-Management beim Threaden von Anwendungen</li>
</ul>
<p>und</p>
<ul>
<li>der richtige Einsatz der bestehenden Intel-Tools wie <a title="Intel Integrated Performance Primitives" href="http://www.software-dev-blog.de/parallel-bibliotheken-helfen-bei-der-software-entwicklung/02/2009/">Integrated Performance Primitives</a> und <a title="Parallel Inspector" href="http://www.software-dev-blog.de/multicore-turbo-fur-visual-studio-intel-parallel-studio/10/2008/">Parallel Inspector</a>, <a title="Parallel Amplifier" href="http://www.software-dev-blog.de/isc’09-intel-parallel-amplifier-im-detail/04/2009/">Parallel Amplifier</a> und <a title="Parallel Composer" href="http://www.software-dev-blog.de/serie-mit-parallel-studio-anwendungen-multithreaden/02/2009/">Parallel Composer</a>.</li>
</ul>
<p>Toll an diesem Programmier-Leitfaden ist die sehr ausführlich Darstellung möglicher Szenarien und wie sich diese richtig behandeln lassen. Dazu gibt es eine Menge nützlicher Diagramme und Code-Beispiele.</p>
<p>Allerdings hat Intel vor den Download dieser digitalen Broschüre <a href="http://softwaredispatch.intel.com/m/p/int/isd/source_dreg.asp?email=" target="_blank">eine kleine Registrierung</a> gestellt, die aber nur aus einem Namen und einer E-Mail-Adresse besteht. Anschließend könnt ihr sogar auswählen, welche Themen und Broschüren euch besonders interessieren. Im Falle der Multithreading-Anleitungen solltet ihr &#8220;Intel Software Dispatch&#8221; anklicken. Viel Spaß beim Lesen!</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-guide-teil-2-ist-verfugbar/04/2010/&via=sw_devtwits&text=Multicore-Guide, Teil 2 ist verfügbar&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-guide-teil-2-ist-verfugbar/04/2010/&via=sw_devtwits&text=Multicore-Guide, Teil 2 ist verfügbar&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-guide-teil-2-ist-verfugbar/04/2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ausführliche Übersicht zur Multicore-Programmierung</title>
		<link>http://www.software-dev-blog.de/ausfuhrliche-ubersicht-zur-multicore-programmierung/03/2010/</link>
		<comments>http://www.software-dev-blog.de/ausfuhrliche-ubersicht-zur-multicore-programmierung/03/2010/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 09:14:28 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Optimieren]]></category>
		<category><![CDATA[Referenz]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1333</guid>
		<description><![CDATA[Zugegeben, es ist auf diesem Blog ein wenig still geworden rund um das Thema Multicore-Programmierung. Das liegt daran, dass ich mich mit dem Thema hier schon ausführlich beschäftigt habe und sich die Themen grade ein wenig verschieben. Mit der Ankündigung des Intel AppUp Center während des letztjährigen Intel Developer Forum rückte das Netbook mit all [...]]]></description>
			<content:encoded><![CDATA[<p>Zugegeben, es ist auf diesem Blog ein wenig still geworden rund um das Thema <a href="http://www.software-dev-blog.de/category/multicore/">Multicore-Programmierung</a>. Das liegt daran, dass ich mich mit dem Thema hier schon ausführlich beschäftigt habe und sich die Themen grade ein wenig verschieben. Mit der Ankündigung des <a href="http://www.intelappup.com" target="_blank">Intel AppUp Center</a> während des letztjährigen <a href="http://www.software-dev-blog.de/tag/idf09/">Intel Developer Forum</a> rückte das Netbook mit all seinen Facetten in den Mittelpunkt.</p>
<p>Das wird sicherlich auch noch ein wenig so bleiben, was aber nicht bedeutet, dass auf dem Software Dev Blog die parallele Verarbeitung von Programmcode keinen Platz mehr findet. Um dies unmittelbar zu belegen, möchte ich heute auf eine sehr ausführliche Übersicht aufmerksam machen. &#8220;Ultimativ&#8221; klingt immer ein wenig anbiedernd und angeberisch, aber in diesem Fall kommt der Begriff ziemlich nah an das heran, was die amerikanischen Kollegen unter dem Titel <a title="Intel Guide for Developing Multithreaded Applications" href="http://software.intel.com/en-us/articles/intel-guide-for-developing-multithreaded-applications/" target="_blank">&#8220;Intel Guide for Developing Multithreaded Applications&#8221;</a> zusammengetragen haben.</p>
<p>Diese wirklich umfangreiche Sammlung betrachtet sämtliche Aspekte der Parallelprogrammierung. Ob das das <a href="http://www.software-dev-blog.de/multithreading-konzepte-openmp-apis-und-intel-tbb/11/2008/">Multithreaden</a> von Anwendungen im Allgemeinen ist oder spezielle Themen wie die Daten- und Ablaufsynchronisation oder das Speichermanagement &#8211; so detailliert konntet ihr euch dem Thema wohl selten widmen. Ok, das Ganze findet zwar auf Englisch statt, aber das sollte doch keine echte Hürde darstellen.</p>
<p>Ach ja, natürlich darf eine genaue Beschreibung sämtlicher <a href="http://www.software-dev-blog.de/tag/tool/">Intel-Tools</a> nicht fehlen, wenn es um das Multithreaden von Anwendungen geht. Also so Themen wie <a href="http://www.software-dev-blog.de/optimierte-compiler-helfen-beim-parallelisieren/12/2008/">Intel Compiler</a>, <a href="http://www.software-dev-blog.de/multicore-turbo-fur-visual-studio-intel-parallel-studio/10/2008/">Parallel Inspector</a>, <a href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">OpenMP</a>, Parallel Amplifier und viele mehr. Na, dann kann ich euch nur noch &#8220;Gut Stöber&#8221; wünschen und dass ihr möglichst viele Antworten auf eure parallelen Fragen findet. Die gibt es natürlich auch hier auf dem Software Dev Blog. Probiert doch einfach mal die Suchfunktion aus!</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/ausfuhrliche-ubersicht-zur-multicore-programmierung/03/2010/&via=sw_devtwits&text=Ausführliche Übersicht 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/ausfuhrliche-ubersicht-zur-multicore-programmierung/03/2010/&via=sw_devtwits&text=Ausführliche Übersicht 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/ausfuhrliche-ubersicht-zur-multicore-programmierung/03/2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EXASolution ermöglicht Datenanalysen in Quasi-Echtzeit</title>
		<link>http://www.software-dev-blog.de/exasolution-ermoglicht-datenanalysen-in-quasi-echtzeit/07/2009/</link>
		<comments>http://www.software-dev-blog.de/exasolution-ermoglicht-datenanalysen-in-quasi-echtzeit/07/2009/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 14:15:39 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Referenz]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1091</guid>
		<description><![CDATA[Über Exasol habe ich in der Vergangenheit ja schon berichtet. Letzte Woche dann wurde aus der Theorie Praxis, und zwar in Form einer Roadshow, auf der Anwender zu Wort und eine kurze Demo zum Einsatz kamen. Zu den Präsentierenden gehörte Dr. Carsten Bange vom Marktforschungsunternehmen BARC, der eine Menge interessanter Fakten in Sachen Datenaufkommen der [...]]]></description>
			<content:encoded><![CDATA[<p>Über Exasol habe ich in der Vergangenheit ja schon berichtet. Letzte Woche dann wurde aus der Theorie Praxis, und zwar in Form einer <a title="Exasol Roadshow 2009 mit Multicore-Power" href="http://www.software-dev-blog.de/exasol-roadshow-2009-mit-multicore-power/06/2009/">Roadshow</a>, auf der Anwender zu Wort und eine kurze Demo zum Einsatz kamen.</p>
<p>Zu den Präsentierenden gehörte Dr. Carsten Bange vom <a title="BARC GmbH" href="http://www.barc.de/" target="_blank">Marktforschungsunternehmen BARC</a>, der eine Menge interessanter Fakten in Sachen Datenaufkommen der Gegenwart und Zukunft zu erzählen hatte. So generierte laut Bange Wal Mart im Jahr 1992 gerade mal ein Terabyte Daten, 2007 waren es schon 1.000 Terabyte &#8211; Tendenz stark steigend.</p>
<p>Die Kurzdarstellungen der Herren Michael Kempke von IMS Healthcare und Frank Stoll von Quelle gewährten ebenso interessante Einblicke in ihre Zusammenarbeit mit Exasol und den Einsatz von deren Datenbankanwendung EXASolution. So analysiert IMS beispielsweise mithilfe von EXASolution 960 Millionen Rezeptdaten innerhalb von schlappen 5 bis 12 Minuten.</p>
<p>Eines hatten die drei Referenzkunden also gemein: <a title="Mehr Infos zu EXASolution" href="http://www.exasol.com/exasolution.html" target="_blank">EXASolution</a> hat ihnen bei der Lösung ihrer Probleme wirklich weitergeholfen. Denn neben der wohl recht unproblematischen Implementierung (parallel zur bestehenden Infrastruktur) geht es bei der Exasol-Lösung vor allem um Tempo.</p>
<p><span id="more-1091"></span>So ähnelten die genannten Zahlen einander frappierend: Wartete man mit der vorherigen DB-Lösung mehrere Stunden auf ein brauchbares Ergebnis, nimmt dieselbe Operation dank EXASolution nur wenige Minuten in Anspruch. Ein erheblicher Wettbewerbsvorteil, in der Tat. Damit rückt die immer wichtiger werdende Echtzeit-Verarbeitung von großen Datenbeständen ein gutes Stück näher.</p>
<p>Woher aber kommt diese Überlegenheit von EXASolution gegenüber den Mitbewerbern? Nun, da ist zum einen die sehr gute Skalierbarkeit zu nennen. Der Datenbanklösung ist nämlich völlig egal, ob sie auf einem oder Dutzenden von Clustern läuft. Damit sind der <a title="Anwendungsbeispiele für EXASolution" href="http://www.exasol.com/anwendungsgebiete.html" target="_blank">jeweiligen Anwendung</a> so gut wie keine Grenzen gesetzt.</p>
<p>Zudem hat Exasol schon früh darauf geachtet, dass die Datenbankabfragen nicht nur innerhalb eines Clusters parallel ausgeführt werden, sondern dass EXASolution auch das Multicore-Potenzial <a title="3D-Demo “Smoke” zeigt das wahre Core i7-Potenzial" href="http://www.software-dev-blog.de/3d-demo-smoke-zeigt-das-wahre-core-i7-potenzial/11/2008/">heutiger und zukünftiger Prozessoren</a> optimal ausnutzt. Hierfür haben die Exasol-Entwickler sogar zu (erlaubten) Hilfsmitteln 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</a> gegriffen, mit dessen Hilfe Hotspots und kritische Abschnitte einer Anwendung gefunden und eliminiert werden können.</p>
<p>All diese Anstregungen haben sich offensichtlich gelohnt: Denn neben zufriedenen Kunden (zu denen übrigens auch Xing gehört) erreicht EXASolution beim anerkannten HPC-Benchmark <a title="Mehr Infos zum TPC-H-Benchmark" href="http://www.exasol.com/benchmarks.html" target="_blank">TPC-H</a> in allen Bereichen erstaunliche Bestwerte, hinter denen sich die Konkurrenz eigentlich nur beschämt verstecken kann. Und das Preis-Leistungs-Verhältnis der Datenbanklösung kann sich ebenfalls sehen 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/exasolution-ermoglicht-datenanalysen-in-quasi-echtzeit/07/2009/&via=sw_devtwits&text=EXASolution ermöglicht Datenanalysen in Quasi-Echtzeit&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/exasolution-ermoglicht-datenanalysen-in-quasi-echtzeit/07/2009/&via=sw_devtwits&text=EXASolution ermöglicht Datenanalysen in Quasi-Echtzeit&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/exasolution-ermoglicht-datenanalysen-in-quasi-echtzeit/07/2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Maxon-Multithreading: Darum ist Cinema 4D so performant</title>
		<link>http://www.software-dev-blog.de/maxon-multithreading-darum-ist-cinema-4d-so-performant/06/2009/</link>
		<comments>http://www.software-dev-blog.de/maxon-multithreading-darum-ist-cinema-4d-so-performant/06/2009/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 07:24:17 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Referenz]]></category>
		<category><![CDATA[Tool]]></category>

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

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1040</guid>
		<description><![CDATA[Gerade habe ich auf dem Intel Software Network eine interessante Liste von Anwendungsfällen gefunden, die zeigen sollen, bei welchen Applikationen Intel-Softwaretools erfolgreich zum Einsatz gekommen sind. Dazu gehören unter anderem: Die Open-Source-Datenbank MySQL konnte dank der Intel C++ Compiler um 27 bis 42 Prozent schneller gemacht werden. Und zwar sowohl für Pentium-4- als auch Itanium-2-Prozessoren. [...]]]></description>
			<content:encoded><![CDATA[<p>Gerade habe ich auf dem Intel Software Network eine interessante Liste von <a title="Erfolgsgeschichten zu Intel-Softwaretools" href="http://software.intel.com/en-us/articles/case-studies/" target="_blank">Anwendungsfällen</a> gefunden, die zeigen sollen, bei welchen Applikationen Intel-Softwaretools erfolgreich zum Einsatz gekommen sind. Dazu gehören unter anderem:</p>
<ul>
<li>Die Open-Source-Datenbank MySQL konnte dank der <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> um 27 bis 42 Prozent schneller gemacht werden. Und zwar sowohl für Pentium-4- als auch Itanium-2-Prozessoren.</li>
</ul>
<ul>
<li>Mithilfe des Intel-Fortran-Compilers gelang es der australischen Swinburne-Universität für Astrophysik, ihre HPC-basierten Anwendungen auf dem zugehörigen Supercomputer nochmals um 22 bis 31 Prozent zu beschleunigen.</li>
</ul>
<ul>
<li>Die Datenbankanwendungen von Oracle laufen sowohl unter Linux als auch unter Windows schneller, da beide Versionen dank der Multicore-Optimierungen der entsprechenden Compiler noch mehr aus der Hardware herausholen.</li>
</ul>
<ul>
<li> Das Erstellen von MP3-Songs mithilfe der Kodierungssoftware <em>Musicmatch Jukebox </em>geschieht dank des Intel C++ Compilers um 37 Prozent schneller als zuvor. Hierzu hat die Profiling-Software <a title="Intel VTune Performance Analyzer 9.1" href="http://www.software-dev-blog.de/quellcode-schwachstellen-mit-intel-vtune-aufspuren/11/2008/">VTune Performance Analyzer</a> allerdings auch einen Teil beigetragen.</li>
</ul>
<p>Neben diesen compiler-basierten Verbesserungen hilft VTune immer mehr Software-Anbietern, ihre Anwendungen für Intel-Prozessoren zu optimieren. Dazu gehört bespielsweise Kaspersky Lab, das seine Antiviren-Software mithilfe des Intel-Tools verbessern konnte. Ebenso konnte Abaqus Inc. dank VTune seiner Simulationssoftware neues Leben einhauchen.</p>
<p>Wer mehr wissen will zu den einzelnen Erfolgsgeschichten, begebe sich auf <a title="Erfolgsgeschichten zu Intel-Softwaretools" href="http://software.intel.com/en-us/articles/case-studies/" target="_blank">die zugehörige Webseite</a>. Dort finden sich auch sämtliche Fallstudien in PDF-Form zum Download.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/erfolgsgeschichten-in-sachen-intel-softwaretools/05/2009/&via=sw_devtwits&text=Erfolgsgeschichten in Sachen Intel-Softwaretools&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/erfolgsgeschichten-in-sachen-intel-softwaretools/05/2009/&via=sw_devtwits&text=Erfolgsgeschichten in Sachen Intel-Softwaretools&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/erfolgsgeschichten-in-sachen-intel-softwaretools/05/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ISC&#8217;09: Warum Intel und Nero gut harmonieren</title>
		<link>http://www.software-dev-blog.de/isc09-warum-intel-und-nero-gut-harmonieren/04/2009/</link>
		<comments>http://www.software-dev-blog.de/isc09-warum-intel-und-nero-gut-harmonieren/04/2009/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 09:49:42 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Liveblogging]]></category>
		<category><![CDATA[Referenz]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1006</guid>
		<description><![CDATA[Erst mal gibt&#8217;s ein paar Nero-Zahlen: insgesamt 300 Millionen verkaufte Software-Pakete (50 Mio. pro Jahr), 120 Millionen Besucher pro Jahr auf Nero.com. Die ersten Multithread-Erfahrungen hat Nero mit seiner Brennsoftware vor vielen Jahren gemacht, was der Firma heute noch dabei hilft, neue Software-Titel für die aktuelle Hardware-Generation so zu schreiben, dass sie möglichst gut skalieren. [...]]]></description>
			<content:encoded><![CDATA[<p>Erst mal gibt&#8217;s ein paar Nero-Zahlen: insgesamt 300 Millionen verkaufte Software-Pakete (50 Mio. pro Jahr), 120 Millionen Besucher pro Jahr auf Nero.com.</p>
<p>Die ersten Multithread-Erfahrungen hat Nero mit seiner Brennsoftware vor vielen Jahren gemacht, was der Firma heute noch dabei hilft, neue Software-Titel für die aktuelle Hardware-Generation so zu schreiben, dass sie möglichst gut skalieren.</p>
<p>Nach einer ganzen Menge an marketinglastigen Infos wird&#8217;s endlich technisch. Zunächst geht es um die Frage, welchen Herausforderungen sich ein Entwickler gegenüber sieht, wenn er Multimedia-Software möglichst leistungsfähig schreiben will. Dazu gehört unter anderem Realtime-Encoding (und das natürlich parallel) &#8211; in möglichst vielen Datenformaten. Aber auch hoch komplexe Codecs, HD-Inhalte, große Datenmengen und DRM-/Sicherheitsaspekte stellen Herausforderungen dar.</p>
<p>Doch wie schafft es Nero, in Multicore-Dimensionen zu denken? Nun, hierfür sind laut Charly Lippoth neue Kenntnisse und ein neues Denken erforderlich. Dazu gehört beispielsweise die Erkenntnis, dass Funktionen möglichst gut auf den vorhandenen Prozessorkernen skalieren müssen.</p>
<p>Aber auch die Programmierung auf Maschinencode-Ebene hilft Nero beim Optimieren der Software, indem beispielsweise SSE-Befehle optimal eingesetzt werden. Ein weiterer Aspekt ist aber natürlich der Einsatz der richtigen Tools.</p>
<p><span id="more-1006"></span>Ein gutes Beispiel für effizientes Multithreading sind Audio- und Videocodecs, bei denen es ein hohes Parallelisierungspotenzial gibt. Das beginnt beim Videoscaling und endet bei der Transformation von HD-Content in 2K- oder 4K-Inhalte.</p>
<p>Folgende Nero-Anwendungen sind parallelisiert: Move It, LiquidTV, Recode, 1080p-Wiedergabe und Mediamanagement.</p>
<p>Nero setzt auf Intel-Tools wie <a title="VTune Performance Analyzer" href="http://www.software-dev-blog.de/quellcode-schwachstellen-mit-intel-vtune-aufspuren/11/2008/">VTune Performance Analyzer</a> und <a title="Parallel Inspector" href="http://www.software-dev-blog.de/parallel-studio-serie-mehr-infos-zum-parallel-inspector/02/2009/">Parallel Inspector</a>, mit deren Hilfe die aktuelle Bluray-Software verbessert werden konnte, da es in der Vergangenheit Probleme beim Synchronisieren von Daten und Threads gab.</p>
<p>Die abschließende Recode-Demo zeigt, was mit einer parallelisierten Anwendung möglich ist: HD-Videocontent lässt sich auf einem Core-i7-System in Echtzeit in ein portables Format konvertieren. Damit gelangen hochaufgelöste Inhalte innerhalb kürzester Zeit auf iPod, iPhone und Co.</p>
<p>Fazit: Nero lernt jeden Tag dazu und will und wird in Zukunft verstärkt auf Parallel Studio, Threading Building Blocks und die Task Parallel Library setzen. Und Entwickler und Programmierer kontinuierlich weiterbilden, für möglichst skalierende Anwendungen.</p>
<p>Dann durfte einer der Chefentwickler noch etwas zu seinen Erfahrungen mit Parallel Studio erzählen. Er zeigte sich sehr angetan von diesem Tool hinsichtlich des Aufspürens von Speicherproblemen zur Laufzeit. Aber: Der generierte Overhead ist nicht ganz trivial und muss noch verringert werden. Und an der Geschwindigkeit muss auch noch geschraubt werden. Aber darum nennt sich das Ganze auch noch &#8220;Beta&#8221; &#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/isc09-warum-intel-und-nero-gut-harmonieren/04/2009/&via=sw_devtwits&text=ISC'09: Warum Intel und Nero gut harmonieren&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/isc09-warum-intel-und-nero-gut-harmonieren/04/2009/&via=sw_devtwits&text=ISC'09: Warum Intel und Nero gut harmonieren&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/isc09-warum-intel-und-nero-gut-harmonieren/04/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Nero unterstützt bereits seit der Version 7 Multithreading&#8221;</title>
		<link>http://www.software-dev-blog.de/nero-unterstutzt-bereits-seit-der-version-7-multithreading/03/2009/</link>
		<comments>http://www.software-dev-blog.de/nero-unterstutzt-bereits-seit-der-version-7-multithreading/03/2009/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 13:31:36 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Kooperation]]></category>
		<category><![CDATA[Optimieren]]></category>
		<category><![CDATA[Referenz]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=972</guid>
		<description><![CDATA[Das Thema Multithreading steht bei weitem noch nicht überall auf der Agenda, obwohl Mehrkernprozessoren wie der Pentium D den Massenmarkt schon seit etwa vier Jahren bereichern. Umso erstaunlicher ist es, dass nach wie vor nur ein Bruchteil der bestehenden Software zwei oder mehr Prozessorkerne optimal nutzt. Klar, Betriebssysteme wie Windows Vista oder auch das künftige [...]]]></description>
			<content:encoded><![CDATA[<p>Das Thema Multithreading steht bei weitem noch nicht überall auf der Agenda, obwohl Mehrkernprozessoren wie der <a title="Wiki-Infos zum Pentium D" href="http://de.wikipedia.org/wiki/Intel_Pentium_D">Pentium D</a> den Massenmarkt schon seit etwa vier Jahren bereichern. <a title=" In der Parallelprogrammierung steckt die Zukunft! " href="http://www.software-dev-blog.de/in-der-parallelprogrammierung-steckt-die-zukunft/01/2009/">Umso erstaunlicher ist es</a>, dass nach wie vor nur ein Bruchteil der bestehenden Software zwei oder mehr Prozessorkerne optimal nutzt. Klar, Betriebssysteme wie Windows Vista oder auch das künftige <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</a> unterstützen von Haus aus Multicore-Plattformen, wirklich effizient skalieren die meisten Softwaretitel aber nicht.</p>
<p>Jedoch gibt es mehr und mehr Ausnahmen von der Regel, wie ich ja hier schon anhand der Beispiele <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/">Nik Software</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/">Crytek,</a> <a title="Skalierende Musikprojekte dank Multithreading: Sonar 8" href="http://www.software-dev-blog.de/skalierende-musikprojekte-dank-multithreading-sonar-8/03/2009/">Cakewalk</a> und <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> gezeigt habe. Dazu gehört auch Nero, die schon seit der Version 7 ihrer Suiten Multithreading betreibt. Seitdem werden die Software-Titel wie <a title="Mehr Infos zu Nero 9" href="http://www.nero.com/deu/nero9-introduction.html" target="_blank">Nero 9</a> immer weiter optimiert, um eine bestmögliche Ausnutzung der Hardware-Kapazitäten gewährleisten zu können. Hierfür arbeitet Nero sehr eng mit Intel zusammen, um in diesem Bereich optimale Ergebnisse erzielen zu können.</p>
<p><span id="more-972"></span>Am besten eignen sich bestimmte Anwendungstypen für das Multithreaden. Hierzu gehören beispielsweise Video-Encoder, ebenso Authoringtools. Daneben sind für Multicore diejenigen Nero-Tools optimiert, mit denen sich MPEG2-basierte DVDs in MPEG4-Videos konvertieren lassen, womit die notwendige Speicherkapazität halbiert werden kann. Gerade in diesen Disziplinen spielt die <a title="Programmiermethoden: Daten- und Aufgabenparallelität" href="http://www.software-dev-blog.de/programmiermethoden-daten-und-aufgabenparallelitat/12/2008/">Datenparallelisierung</a> eine ganz wichtige Rolle, da Encoderalgorithmen sehr multithreading-tauglich sind.</p>
<p>Ganz neue Software-Titel wie <a title="Mehr Infos zu Nero Move it" href="http://www.nero.com/deu/moveit-introduction.html" target="_blank">Nero Move it</a> kommen ebenfalls in den Genuss des Multithreadings. Mit <em>Move it</em> lassen sich digitale Daten mit wenig Aufwand an das jeweils vorhandene Mobilgerät wie <a title="iPod-News exklusiv vom Münchner Apple-Event" href="http://www.it-techblog.de/ipod-news-exklusiv-vom-munchner-apple-event/09/2008/">iPod</a> und Musikhandy anpassen und dorthin übertragen. Nero setzt übrigens aus Performance-Gründen schon länger den <a title="VTune Performance Analyzer" href="http://www.software-dev-blog.de/quellcode-schwachstellen-mit-intel-vtune-aufspuren/11/2008/">VTune Perfermance Analyzer</a> und <a title="Infos zu Intel-Compilern" href="http://www.software-dev-blog.de/optimierte-compiler-helfen-beim-parallelisieren/12/2008/">Intel Compiler</a> zu Analyse-, Optimierungs- und Testzwecken ein. Für eine bestmögliche Skalierbarkeit und Recheneffizienz.</p>
<p><em><strong>Videotipp:</strong></em> Wer sich ansehen und -hören will, was Oberstratege Charly Lippoth (CSO) von Nero zu dem Thema zu sagen hat, sollte sich in folgendes Video reinklicken &#8230;</p>
<p style="text-align: center;"><object width="480" height="295" data="http://www.youtube.com/v/2DgMIKR_KEk&amp;hl=de&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/2DgMIKR_KEk&amp;hl=de&amp;fs=1" /><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/nero-unterstutzt-bereits-seit-der-version-7-multithreading/03/2009/&via=sw_devtwits&text="Nero unterstützt bereits seit der Version 7 Multithreading"&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/nero-unterstutzt-bereits-seit-der-version-7-multithreading/03/2009/&via=sw_devtwits&text="Nero unterstützt bereits seit der Version 7 Multithreading"&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/nero-unterstutzt-bereits-seit-der-version-7-multithreading/03/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How-to: Deshalb skaliert DivX 7 auf Multicore-Plattformen</title>
		<link>http://www.software-dev-blog.de/how-to-deshalb-skaliert-divx-7-auf-multicore-plattformen/01/2009/</link>
		<comments>http://www.software-dev-blog.de/how-to-deshalb-skaliert-divx-7-auf-multicore-plattformen/01/2009/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 13:49:39 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[DivX]]></category>
		<category><![CDATA[Optimieren]]></category>
		<category><![CDATA[Referenz]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=615</guid>
		<description><![CDATA[Anfang des Monats haben wir über eine Neuerscheinung am Codec-Firmament berichtet, nämlich über DivX Version 7. Das Besondere daran: DivX 7 wurde intensiv auf seine Multicore-Fähigkeiten hin überprüft und optimiert. Natürlich wollten wir wissen, was DivX alles dafür getan hat, dass Version 7 unter anderem HD-Videos im H.264-Format bei voller Auflösung dekodieren kann, ohne dass [...]]]></description>
			<content:encoded><![CDATA[<p>Anfang des Monats haben wir über eine Neuerscheinung am Codec-Firmament <a title=" Die volle Multicore-Unterstützung: DivX 7 " href="http://www.software-dev-blog.de/die-volle-multicore-unterstutzung-divx-7/01/2009/">berichtet</a>, nämlich über <strong>DivX Version 7</strong>. Das Besondere daran: DivX 7 wurde intensiv auf seine Multicore-Fähigkeiten hin überprüft und optimiert.</p>
<p>Natürlich wollten wir wissen, was DivX alles dafür getan hat, dass Version 7 unter anderem HD-Videos im H.264-Format bei voller Auflösung dekodieren kann, ohne dass es auf einem PC oder Notebook mit Core 2 Duo oder Quad ordentlich ruckelt. Heute kamen die Antworten bei uns an. Und das sind sie (inklusive ihrer Fragen):</p>
<blockquote><p>Welche Softwaretools kamen zum Einsatz, damit DivX 7 vorhandene Multicore-Plattformen optimal unterstützt?</p></blockquote>
<p><em><span style="color: #800000;"><strong>Antwort:</strong></span> Zunächst einmal haben wir ganz unten angefangen. Soll heißen, dass wir sämtliche DivX-Algorithmen auf Quellcode-Ebene mithilfe des <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> auf mögliche Flaschenhälse und damit auf potenzielle Optimierungsarbeiten hin untersucht haben. Das lieferte uns schon mal sehr interessante Anhaltspunkte. Darüber hinaus kamen eigene Tools zum Einsatz, um die Leistungswerte und die Qualität unserer Codecs zu überprüfen.</em></p>
<p><span id="more-615"></span></p>
<p><em>Doch nicht nur der Quellcode wurde untersucht, sondern auch die Anwendungen haben wir ausführlich unter diversen Bedingungen auf ihr Laufzeitverhalten hin analysiert. Dafür haben wir unter anderem Benchmark-Tools wie Sysinternals Process Explorer, Haali TimeCodec, Monogram GraphStudio, GraphEdit, AVISynth und VirtualDub eingesetzt.</em></p>
<blockquote><p>Welche SSE4-Befehlsroutinen kommen in DivX 7 zum Einsatz, um ein Leistungsoptimum beim Kodieren und Dekodieren von Videostreams zu erzielen?</p></blockquote>
<p><em><span style="color: #800000;"><strong>Antwort:</strong></span> Der DivX-7-H.264-Codec kommt noch ohne SSE4-Befehle aus, aber wir sehen uns das natürlich sehr genau an, um DivX noch leistungsfähiger machen zu können.</em></p>
<p>Gerade die zweite Antwort ist nicht wirklich ausgiebig, sodass wir uns kurzerhand am Mittwoch mit DivX treffen werden, um weitere Infos rund um die Multicore-Tauglichkeit von DivX 7 in Erfahrung zu bringen. Am besten nehmen Sie unser Blog schon mal <a title="RSS-Feed des Software Dev Blog" href="http://www.software-dev-blog.de/feed/" target="_blank">in Ihren RSS-Reader</a> auf. Dann bekommen Sie die Infos exklusiv und frei Haus geliefert &#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/how-to-deshalb-skaliert-divx-7-auf-multicore-plattformen/01/2009/&via=sw_devtwits&text=How-to: Deshalb skaliert DivX 7 auf Multicore-Plattformen&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/how-to-deshalb-skaliert-divx-7-auf-multicore-plattformen/01/2009/&via=sw_devtwits&text=How-to: Deshalb skaliert DivX 7 auf Multicore-Plattformen&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/how-to-deshalb-skaliert-divx-7-auf-multicore-plattformen/01/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skalierende Filter: Nik Software setzt auf Multicore</title>
		<link>http://www.software-dev-blog.de/skalierende-filter-nik-software-setzt-auf-multicore/01/2009/</link>
		<comments>http://www.software-dev-blog.de/skalierende-filter-nik-software-setzt-auf-multicore/01/2009/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 15:01:52 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Optimieren]]></category>
		<category><![CDATA[Referenz]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=556</guid>
		<description><![CDATA[Wir haben über das Thema schon mal berichtet: Datenparallelität, also das simultane Berechnen von unabhängigen Daten, wie sie beispielsweise in der Bildbearbeitung anfallen. Denn einem Pixelgebilde, das aus mehreren Millionen Bildpunkten besteht, ist es völlig wurscht, ob nun Bildpunkt 1 oder 599 oder 122.921 zuerst oder zuletzt manipuliert wird. Daher steckt eine ganze Menge Multicore-Potenzial [...]]]></description>
			<content:encoded><![CDATA[<p>Wir haben über das Thema <a title=" Programmiermethoden: Daten- und Aufgabenparallelität " href="http://www.software-dev-blog.de/programmiermethoden-daten-und-aufgabenparallelitat/12/2008/">schon mal berichtet</a>: Datenparallelität, also das simultane Berechnen von unabhängigen Daten, wie sie beispielsweise in der Bildbearbeitung anfallen. Denn einem Pixelgebilde, das aus mehreren Millionen Bildpunkten besteht, ist es völlig wurscht, ob nun Bildpunkt 1 oder 599 oder 122.921 zuerst oder zuletzt manipuliert wird.</p>
<p>Daher steckt eine ganze Menge Multicore-Potenzial in der Manipulation von Bildern, vor allem dann, wenn es sich um große Digitalfotos handelt. Dabei ist die Parallelisierbarkeit völlig unabhängig vom Format, so dass Bilder im sogenannten <a title="Mehr Infos zum RAW-Format" href="http://www.itwissen.info/definition/lexikon/RAW-Format-RAW-format.html" target="_blank">RAW-Format</a> genauso von parallelisierten Algorithmen profitieren wie JPEG- oder TIFF-Dateien.</p>
<p>Wie wichtig in solch einem Fall das optimale Zusammenspiel von Hard- und Software ist, hat unter anderem <a title="Webseite von Nik Software" href="http://www.niksoftware.com/index/de/entry.php?" target="_blank">Nik Software</a> erkannt, ein Anbieter von Bildbearbeitungstools, die sich an professionelle Fotografen und ähnliche Menschen richten. Eines der Highlight-Produkte von Nik Software nennt sich <a title="Mehr Infos zu Silver Efex Pro" href="http://www.niksoftware.com/silverefexpro/de/entry.php" target="_blank">Silver Efex Pro</a>. Dabei handelt es um einen Schwarzweiß-Filter für Adobe Photoshop und <a title="Mehr Infos zu Apple Aperture 2" href="http://www.it-techblog.de/apple-aperture-2-erblickt-das-licht-der-welt/02/2008/">Apple Aperture</a>, mit dem sich Farbbilder in S/W-Kunstwerke verwandeln lassen. Hierfür setzt Nik Software auf die eigene Manipulationstechnik U Point, die es erlaubt, anhand definierter Bildbereiche (sogenannter Kontrollpunkte) diese separat zu bearbeiten.</p>
<p><span id="more-556"></span>Für eine bestmögliche Skalierung von Silver Efex Pro auf Multicore-Plattformen musste Nik Software allerdings eine ganze Menge tun. Hierzu gehörte unter anderem eine gründliche Analyse des Quellcodes mit <a title="Quellcode-Schwachstellen mit Intel VTune aufspüren" href="http://www.software-dev-blog.de/quellcode-schwachstellen-mit-intel-vtune-aufspuren/11/2008/">VTune Performance Analyzer</a>, um die Hotspots, also die kritischen Programmstellen, zu identifizieren.</p>
<p>Anschließend haben die Software-Entwickler die verschiedenen technischen Möglichkeiten geprüft, mit welchen Methoden die vorhandene Datenparallelität optimal in entsprechende Algorithmen umgesetzt werden kann. In Frage kamen hierfür <a title="Infos zu OpenMP und Intel TBB" href="http://www.software-dev-blog.de/multithreading-konzepte-openmp-apis-und-intel-tbb/11/2008/">OpenMP, die Threading Building Blocks</a> und eine selbst implementierte Lösung auf Basis von <a title="boost.org" href="http://www.boost.org/" target="_blank">Boost</a> und Posix Threads.</p>
<p>Die Wahl fiel am Ende auf die selbst implementierte Lösung, da sie ein Maximum an Kontrolle, Flexibilität und Portierbarkeit gewährleistet. Die fertige Implementation des Thread <em>pool pattern</em> erlaubt hierbei eine relativ problemlose Übersetzung der Algorithmen in eine parallele Formulierung sowohl unter Windows als auch auf dem Mac.</p>
<p>Und klar, anschließend musste noch auf Teufel komm raus debuggt werden, und zwar mit den passenden 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> und Thread Profiler. Damit der parallelisierte Quellcode auch wirklich optimal auf mehreren Threads sprich Prozessorkernen skaliert. Und die Mühe hat sich offensichtlich gelohnt: Das Fotomagazin &#8220;Foto Video Digital&#8221; aus dem Hause Chip hat Silver Efex Pro als eine der besten Bildbearbeitungsprogramme des Jahres 2008 gekürt. Na also!</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/skalierende-filter-nik-software-setzt-auf-multicore/01/2009/&via=sw_devtwits&text=Skalierende Filter: Nik Software setzt auf Multicore&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/skalierende-filter-nik-software-setzt-auf-multicore/01/2009/&via=sw_devtwits&text=Skalierende Filter: Nik Software setzt auf Multicore&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/skalierende-filter-nik-software-setzt-auf-multicore/01/2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lernen mit Crytek: Deshalb ist Crysis erfolgreich</title>
		<link>http://www.software-dev-blog.de/lernen-mit-crytek-deshalb-ist-crysis-erfolgreich/01/2009/</link>
		<comments>http://www.software-dev-blog.de/lernen-mit-crytek-deshalb-ist-crysis-erfolgreich/01/2009/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 13:18:01 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[Referenz]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=585</guid>
		<description><![CDATA[Anfang Dezember haben Crytek und Ascaron den Deutschen Entwicklerpreis 2008 verliehen bekommen. Acscaron für Sacred 2 &#8211; Fallen Angel und Crytek für Crysis. Beiden Spielen liegt eine Menge an Optimierungsarbeit zugrunde. Soll heißen, dass beide Softwareschmieden ihre Erfolgstitel intensiv auf Multicore-Plattformen abgestimmt haben, damit diese bestmöglich auf zwei, vier, acht oder mehr Prozessorkernen skalieren. In [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-592" style="margin-left: 10px; margin-right: 0px;" title="Director of Technology, Mister Mark Atkinson von Crytek" src="http://www.software-dev-blog.de/wp-content/images/2009/01/mark_atkinson.jpg" alt="Director of Technology, Mister Mark Atkinson von Crytek" height="250" />Anfang Dezember haben Crytek und Ascaron den <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/">Deutschen Entwicklerpreis 2008 verliehen</a> bekommen. Acscaron für <em>Sacred 2 &#8211; Fallen Angel</em> und Crytek für <em>Crysis</em>. Beiden Spielen liegt eine Menge an Optimierungsarbeit zugrunde. Soll heißen, dass beide Softwareschmieden ihre Erfolgstitel intensiv auf Multicore-Plattformen abgestimmt haben, damit diese bestmöglich auf zwei, vier, acht oder mehr Prozessorkernen skalieren.</p>
<p>In beiden Fällen wollten wir natürlich wissen, welche Anstrengungen unternommen wurden, um die Spieletitel zu parallelisieren. Tja, und heute haben wir Teil eins unserer Fragen zurückbekommen, und zwar von Crysis. Geantwortet hat der Director of Technology höchstpersönlich, Mister <a title="LinkedIn-Profile von Mark Atkinson" href="http://www.linkedin.com/in/markatkinson99" target="_blank">Mark Atkinson</a>. Mark zeichnet übrigens verantwortlich für erfolgreiche Titel wie <em>Burnout Revenge</em> und <em>Football Manager 2009,</em> die er vor seiner Zeit bei Crytek mitentwickelt hat.</p>
<p><span style="color: #000080;"><em>Software Dev Blog: Mit welchen Tools haben Sie </em>Crysis <em>für Multicore-Plattformen optimiert?</em></span><strong><br />
Mark Atkinson:</strong> Wir setzen im Wesentlichen eigene Tools ein, um den Quellcode unserer Spieletitel wie <em>Crysis </em>für Multicore-Plattformen zu optimieren. Aber auch externe Anwendungen wie 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> kommen bei uns zum Einsatz. Dieser ist für uns vor allem wegen des Thread Profilers interessant, mit dessen Hilfe wir überprüfen können, in welchem Umfang und in welcher Qualität die Parallelisierung des Spieletitels gelungen ist.</p>
<p><span id="more-585"></span><span style="color: #000080;"><em> Welche Hürden mussten Sie bei der </em></span><span style="color: #000080;"><em>Multicore</em></span><span style="color: #000080;"><em>-Optimierung überwinden?</em></span><strong><br />
Atkinson:</strong> Die wesentliche Arbeit bestand darin, die Game-Engine völlig umzukrempeln. Wir mussten nämlich große Teile des sequenziell programmierten Quellcodes parallelisieren, damit bestimmte Aufgaben wie die KI, Effekte etc. gleichzeitig ablaufen. Nur so konnten wir das optimale Spielerlebnis erreichen, das <em>Crysis </em>auszeichnet.</p>
<p><span style="color: #000080;"><em>Welche Tipps würden Sie Entwicklern geben, wenn diese parallelen Programmcode schreiben wollen?</em></span><br />
<strong>Atkinson:</strong> Die Hauptregel lautet: Erstelle fehlerfreien Sourcecode vom ersten Moment an. Denn parallel programmierte Anwendungen und Spiele lassen sich nur sehr aufwändig testen und debuggen. Daher sollte man von Anfang an darauf achten, dass sich erst gar keine Fehler in den Code einschleichen. Wir setzen hierfür erprobte <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/">Methoden</a>, <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> und Hilfesysteme ein, die uns dabei unterstützen. Außerdem sorgen wir dafür, dass unsere Software-Entwickler bestens in Sachen Paralellprogrammierung <a title="Ausbildungslücken bei der Multicore-Programmierung" href="http://www.software-dev-blog.de/ausbildungslucken-bei-der-multicore-programmierung/12/2008/">ausgebildet</a> sind. Denn nichts erfordert mehr Know-how als der Umstieg von der sequenziellen auf die parallele Programmierung.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/lernen-mit-crytek-deshalb-ist-crysis-erfolgreich/01/2009/&via=sw_devtwits&text=Lernen mit Crytek: Deshalb ist Crysis erfolgreich&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/lernen-mit-crytek-deshalb-ist-crysis-erfolgreich/01/2009/&via=sw_devtwits&text=Lernen mit Crytek: Deshalb ist Crysis erfolgreich&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/lernen-mit-crytek-deshalb-ist-crysis-erfolgreich/01/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PowerDirector 7 ist für Core i7-Prozessor optimiert</title>
		<link>http://www.software-dev-blog.de/powerdirector-7-ist-fur-core-i7-prozessor-optimiert/12/2008/</link>
		<comments>http://www.software-dev-blog.de/powerdirector-7-ist-fur-core-i7-prozessor-optimiert/12/2008/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 14:02:15 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Nehalem]]></category>
		<category><![CDATA[Optimieren]]></category>
		<category><![CDATA[Referenz]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=364</guid>
		<description><![CDATA[Es ist jetzt gerade mal zwei Wochen her, dass Intel den Core i7 Prozessor vorgestellt hat, und schon erreicht uns heute eine E-Mail von Cyberlink, dass der taiwanesische Software-Hersteller sein Videoschnittprogramm PowerDirector 7 für den Quadcore-Prozessor optimiert hat. Das bedeutet primär, dass die Videobearbeitung dank der acht gleichzeitig ablaufenden Threads auf den vier Prozessorkernen einen [...]]]></description>
			<content:encoded><![CDATA[<p>Es ist jetzt gerade mal zwei Wochen her, dass Intel den <a title="Multicore-Infos zum Core i7" href="http://www.software-dev-blog.de/mehr-multithread-leistung-mit-dem-intel-core-i7-prozessor/11/2008/">Core i7 Prozessor</a> vorgestellt hat, und schon erreicht uns heute eine E-Mail von Cyberlink, dass der taiwanesische Software-Hersteller sein Videoschnittprogramm PowerDirector 7 für den Quadcore-Prozessor optimiert hat.</p>
<p>Das bedeutet primär, dass die Videobearbeitung dank der acht gleichzeitig ablaufenden Threads auf den vier Prozessorkernen einen enormen Leistungssprung erfährt. Darüber hinaus profitiert PowerDirector 7 von der Intel QuickPath-Technologie und dem 8 MByte großen L3-Cache des Core i7 – für noch mehr Tempo beim Videoschnitt.</p>
<p>Der Quadcore-Prozessor ist unter anderem dafür verantwortlich, dass das Vorschau-Rendering schneller geschieht als auf herkömmlichen Quadcore-Rechnern, dass Effekte schneller verarbeitet werden und dass sich optische Medien noch schneller brennen lassen. So ist beispielsweise ein HD-Video, das mit dem rechenintensiven Pencil-Sketch-Effekt versehen wird, in weniger als einer Minute vollständig gerendert. Auf einem <a title="Mehr Infos zu Core 2 Quad Prozessoren" href="http://www.intel.com/products/processor_number/chart/core2quad.htm?iid=pn_det+list_c2q" target="_blank">Core 2 Quad Q9550</a> benötigt derselbe Rechenaufwand zwei Minuten. Fazit: Die Wartezeit lässt sich mit dem Core i7 locker halbieren.</p>
<p>Wem diese Infos ein wenig zu dünn sind, der kann sich schon mal auf mehr freuen. Wir wollen nämlich auch wissen, an welchen Stellen Cyberlink Code-Optimierung vorgenommen hat und welche Tools hierfür zum Einsatz gekommen sind. Sobald wir diese Details vorliegen haben, gehen diese online. Versprochen!</p>
<p>Ach ja: Wer mehr zu PowerDirector 7 lesen will, kann dies auf der <a title="Mehr Infos zu PowerDirector 7" href="http://de.cyberlink.com/multi/products/main_4_DEU.html" target="_blank">passenden Webseite</a> tun.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/powerdirector-7-ist-fur-core-i7-prozessor-optimiert/12/2008/&via=sw_devtwits&text=PowerDirector 7 ist für Core i7-Prozessor optimiert&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/powerdirector-7-ist-fur-core-i7-prozessor-optimiert/12/2008/&via=sw_devtwits&text=PowerDirector 7 ist für Core i7-Prozessor optimiert&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/powerdirector-7-ist-fur-core-i7-prozessor-optimiert/12/2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

