<?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; Workshop</title>
	<atom:link href="http://www.software-dev-blog.de/tag/workshop/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>Automatisierte Unit-Tests für PHP-Entwickler leicht gemacht</title>
		<link>http://www.software-dev-blog.de/automatisierte-unit-tests-fur-php-entwickler-leicht-gemacht/07/2011/</link>
		<comments>http://www.software-dev-blog.de/automatisierte-unit-tests-fur-php-entwickler-leicht-gemacht/07/2011/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 08:56:49 +0000</pubDate>
		<dc:creator>Oliver</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[Unit-Testing]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1688</guid>
		<description><![CDATA[Ich mag ja amerikanische Überschriften wie &#8220;Automated PHP unit testing for lazy coders&#8221;. Vor allem dann, wenn die Geschichte hält, was die Headline verspricht. Im konkreten Fall geht es um einen Beitrag, der auf dem appbackr-Blog erschienen ist und den ich Ihnen nicht vorenthalten wollte. Es verhält sich nämlich so, dass die Leute bei appbackr [...]]]></description>
			<content:encoded><![CDATA[<p>Ich mag ja amerikanische Überschriften wie &#8220;Automated PHP unit testing for lazy coders&#8221;. Vor allem dann, wenn die Geschichte hält, was die Headline verspricht. Im konkreten Fall geht es um einen Beitrag, der auf dem <a href="http://geeks.appbackr.com/" target="_blank">appbackr-Blog</a> erschienen ist und den ich Ihnen nicht vorenthalten wollte.</p>
<p>Es verhält sich nämlich so, dass die Leute bei <a href="http://www.appbackr.com/" target="_blank">appbackr</a> den Umstieg auf das <a href="http://www.yiiframework.com/" target="_blank">Yii-PHP-Framework</a>  gewagt haben, und das aus nachvollziehbaren Gründen. Zum einen, weil sie damit in der Lage sind, ihren App-Markt schneller und effizienter zu verwalten, da Yii recht schlank ist und viele nützliche Funktionen wie User Management und Active Record bietet. Außerdem ist der Umgang mit Yii wohl recht einfach.</p>
<p>Darüber hinaus unterstützt Yii das <a href="https://github.com/sebastianbergmann/phpunit/" target="_blank">PHPUnit-Framework</a>, mit dem sich Unit-Tests unter PHP durchführen lassen. Das ist vor allem dann wichtig, wenn man wie appbackr eine test-getriebene Software-Entwicklung innerhalb der Firma implementieren, aber auch die vorhandenen Anwendungen und Programme mit Hilfe von PHPUnit überprüfen will.</p>
<p>Allerdings wollten sich die Leute bei appbackr nicht mit manuellen Unit-Tests zufrieden geben, die Yii mit Hilfe des Befehls <em><strong>phpunit [Testordner]</strong></em> vorsieht. Das ist nämlich umständlich, fehleranfällig und nervt die meisten Entwickler. Daher suchten sie nach einer Lösung, wie sich Unit-Tests unter Yii automatisieren lassen.</p>
<p>Tja, und an der Stelle kam und kommt <a href="https://github.com/mynyml/watchr" target="_blank">Watchr ins Spiel</a>. Mit diesem Tool ist es nämlich möglich, automatisierte Tests durchzuführen. Soll heißen: sobald auch nur eine Zeile Quellcode verändert wird, springt Watchr an, führt den Test autoamtisch durch und informiert den Entwickler über den Status des Tests. Wow, so einfach?! Na ja, nicht ganz, zwar informiert Watchr über den durchgeführten Test, sagt aber nichts darüber aus, ob der Test mit oder ohne Fehler durchgelaufen ist.</p>
<p>Doch die Jungs und Mädels von appbackr scheinen echt pfiffig zu sein, und haben in <a href="http://growl.info/" target="_blank">Growl</a> das richtige Tool gefunden, um den perfekten Workflow aufzusetzen, der aus der Kette <em>Watchr-PHPunit-Growl</em> besteht. Damit können ihre Entwickler sofort sehen, ob der PHP-Unit-Test erfolgreich war  &#8211; oder nicht. Und das sogar inklusive einer aussagekräftigen Fehlermeldung. Schade nur, dass Growl ausschließlich Mac-Entwicklern zur Verfügung steht, da es für Mac OS X programmiert wurde.</p>
<p>Und wie das Ganze in der Praxis funktioniert, verrät der Blogbeitrag auch noch. Aber das sollten Sie sich <a href="http://geeks.appbackr.com/61971101" target="_blank">am besten selbst ansehen</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/automatisierte-unit-tests-fur-php-entwickler-leicht-gemacht/07/2011/&via=sw_devtwits&text=Automatisierte Unit-Tests für PHP-Entwickler leicht gemacht&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/automatisierte-unit-tests-fur-php-entwickler-leicht-gemacht/07/2011/&via=sw_devtwits&text=Automatisierte Unit-Tests für PHP-Entwickler leicht gemacht&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/automatisierte-unit-tests-fur-php-entwickler-leicht-gemacht/07/2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workshop: VTune Amplifier XE 2011 im Teamwork mit Intel OpenCL SDK 1.1 Beta</title>
		<link>http://www.software-dev-blog.de/workshop-vtune-amplifier-xe-2011-im-teamwork-mit-intel-opencl-sdk-1-1-beta/06/2011/</link>
		<comments>http://www.software-dev-blog.de/workshop-vtune-amplifier-xe-2011-im-teamwork-mit-intel-opencl-sdk-1-1-beta/06/2011/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 13:20:12 +0000</pubDate>
		<dc:creator>Oliver</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Intel OpenCL SDK 1.1 Beta]]></category>
		<category><![CDATA[Parallel Studio XE]]></category>
		<category><![CDATA[VTune Amplifier XE 2011]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1632</guid>
		<description><![CDATA[Wussten Sie, dass die Intel OpenCL SDK 1.1 Beta und der Intel VTune Amplifier XE 2011 hervorragend zusammenarbeiten, wenn es darum geht, die optimale Perfomance in OpenCL-Anwendungen zu ermitteln und Flaschenhälse zu finden? Vor unserem konkreten Beispiel der Hinweis, dass Sie das Intel OpenCL SDK 1.1 in der Beta-Version von dieser Seite kostenlos laden können. [...]]]></description>
			<content:encoded><![CDATA[<p>Wussten Sie, dass die Intel OpenCL SDK 1.1 Beta und der Intel VTune Amplifier XE 2011 hervorragend zusammenarbeiten, wenn es darum geht, die optimale Perfomance in OpenCL-Anwendungen zu ermitteln und Flaschenhälse zu finden?</p>
<p>Vor unserem konkreten Beispiel der Hinweis, dass Sie das<a href="http://software.intel.com/en-us/articles/download-intel-opencl-sdk/" target="_blank"> Intel OpenCL SDK 1.1 in der Beta-Version von dieser Seite kostenlos laden können</a>.</p>
<p>Das Intel OpenCL SDK gibt Ihnen die Möglichkeit, den Assembly-Code Ihres OpenCL-Kernel in Echtzeit zu analysieren und mit Hilfe von Intel VTune Amplifier XE anhand von Sampling-Profiling-Projekten grafisch darzustellen, zu bewerten und zu optimieren.</p>
<p>Den <a href="http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/" target="_blank">VTune Amplifier können Sie als Standalone-Version kaufen oder innerhalb des Paketes Parallel Studio XE 2011</a> käuflich erwerben. Zahlreiche <a href="http://www.software-dev-blog.de/intel-software-developer-conference-2011-ii-intel-vtune-amplifier-xe-in-action/04/2011/">Hintergrundberichte zum VTune Amplifier</a> finden Sie selbstverständlich auch in diesem Blog.</p>
<p>Nun aber in medias res:</p>
<h4><strong>Ein neues Sampling Profiling Project im Vtune Amplifier einrichten</strong></h4>
<p>1. Klicken Sie auf <em>File</em>, dann <em>New </em>und dann <em>Project</em></p>
<p>2. Im <em>Create a Project</em>-Dialog geben Sie einen Namen ein, und klicken auf <em>Create Project.</em></p>
<p>3. In den <em>Project Properties </em>wählen Sie die Applikation aus, die Sie testen möchten.</p>
<p>4. Klicken Sie auf <em>Modify</em>, und tragen Sie folgende zwei Zeilen im Bereich <em>User-defined Environment Variables</em> ein:</p>
<p>ENABLE_JITPROFILING=1<br />
CL_CONFIG_USE_VTUNE=True.</p>
<p>5. Bestätigen Sie die neuen Einstellungen in allen offenen Fenstern mit einem Klick auf <em>OK</em>.</p>
<p>6. Klicken Sie auf <em>New Analysis</em>, um die Analyse zu starten.</p>
<p>7. Wählen Sie den passenden <em>Analysis Type</em> aus, und klicken Sie auf <em>Start</em>.</p>
<h4><strong>OpenCL Kernel Assembly-Code einsehen</strong></h4>
<p>1. Warten Sie, bis das Sampling beendet ist.</p>
<p>2. Klicken Sie auf <em>Hotspots Bottom-up</em> in der Navigationsleiste.</p>
<p>3. Wählen Sie die <em>/Function</em>-Option in der <em>Data Grouping</em> Auswahlbox, und suchen Sie in der Tabellenübersicht nach nach den OpenCL Kernels Ihrer Anwendung.<a href="http://www.software-dev-blog.de/wp-content/images/2011/06/1.png"><img class="aligncenter size-full wp-image-1633" title="Open CL-Kernel" src="http://www.software-dev-blog.de/wp-content/images/2011/06/1.png" alt="Open CL-Kernel" width="526" height="140" /></a><br />
<strong>Hinweis</strong>: Wenn Sie unterschiedliche Anwendungen mit identischen OpenCL-Kernel-Namen parallel laufen und testen lassen, wählen Sie die <em>/Process /Function/Thread</em> -Option in der <em>Data Grouping</em>-Auswahlbox und achten auf die <em>Processes</em>-Übersicht. Der betreffende OpenCL wird dann jeweils unter der Applikation aufgeführt.<br />
<a href="http://www.software-dev-blog.de/wp-content/images/2011/06/2.png"><img class="aligncenter size-full wp-image-1634" title="Zuordnung von Kernel und Applikation" src="http://www.software-dev-blog.de/wp-content/images/2011/06/2.png" alt="Zuordnung von Kernel und Applikation" width="439" height="143" /></a>Doppelklicken Sie dann auf den betreffenden OpenCL-Kernel, um den Source Code und die relevanen Sampling-Information einzusehen.</p>
<p><a href="http://www.software-dev-blog.de/wp-content/images/2011/06/3.png"><img class="aligncenter size-full wp-image-1635" title="Relevanten Assembly-Code ausfindig machen" src="http://www.software-dev-blog.de/wp-content/images/2011/06/3.png" alt="Relevanten Assembly-Code ausfindig machen" width="491" height="494" /></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/workshop-vtune-amplifier-xe-2011-im-teamwork-mit-intel-opencl-sdk-1-1-beta/06/2011/&via=sw_devtwits&text=Workshop: VTune Amplifier XE 2011 im Teamwork mit Intel OpenCL SDK 1.1 Beta &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/workshop-vtune-amplifier-xe-2011-im-teamwork-mit-intel-opencl-sdk-1-1-beta/06/2011/&via=sw_devtwits&text=Workshop: VTune Amplifier XE 2011 im Teamwork mit Intel OpenCL SDK 1.1 Beta &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/workshop-vtune-amplifier-xe-2011-im-teamwork-mit-intel-opencl-sdk-1-1-beta/06/2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Early-Bird-Rabatt für die C++ Advanced Developer Conference</title>
		<link>http://www.software-dev-blog.de/early-bird-rabatt-fur-die-c-advanced-developer-conference/03/2011/</link>
		<comments>http://www.software-dev-blog.de/early-bird-rabatt-fur-die-c-advanced-developer-conference/03/2011/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 13:47:04 +0000</pubDate>
		<dc:creator>Oliver</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1532</guid>
		<description><![CDATA[Die ppedv AG veranstaltet am 5. und 6. Mai 2011 die  C++ Advanced Developer Conference (ADC). Tagungsort wird das beschauliche Prien am Chiemsee sein. Für ISVs und Software-Entwickler ist dieser Termin eine gute Gelegenheit, sich vor Ort detailliert über aktuelle Entwickler-Tools zu informieren, in Trainings, Workshops und Schulungen das eigene Wissen zu erweitern und Lösungen [...]]]></description>
			<content:encoded><![CDATA[<p>Die ppedv AG veranstaltet am 5. und 6. Mai 2011 die <a href="http://cpp.adc2011.de/Default.aspx" target="_blank"> C++ Advanced Developer Conference (ADC)</a>. Tagungsort wird das beschauliche Prien am Chiemsee sein.</p>
<p>Für ISVs und Software-Entwickler ist dieser Termin eine gute Gelegenheit, sich vor Ort detailliert über aktuelle Entwickler-Tools zu informieren, in Trainings, Workshops und Schulungen das eigene Wissen zu erweitern und Lösungen für typische Programmierprobleme zu finden. Und da das Ganze in einer der der schönsten Regionen Deutschlands stattfindet, lässt sich der Termin prima mit einem Kurzurlaub in die bayerischen Alpen verbinden.</p>
<p>Die Advanced Developers Conference bietet 20 (zumeist deutsche) Vorträge hochkarätiger C++-Experten von Intel, Microsoft und weiteren Firmen. Das Motto der Veranstaltung lautet “aus der Praxis für die Praxis“ und verknüpft die traditionellen Vorteile von C++ mit den heutigen Anforderungen in Entwicklungsprojekten.</p>
<p>Zu den Topthemen zählen das Erstellen leistungsstarker Software mit nativem C++-Code, Performancesteigerung sowie Möglichkeiten der Fehlersuche und -behebung in C++-Programmen. Weitere Schwerpunkte bilden Design und Einsatz von MFC-Anwendungen und die Frage, wie sich durch die Ausnutzung der seriellen und parallelen Prozessoreigenschaften eine maximale Leistung erzielen lässt. Ein Highlight wird dabei sicherlich die Session &#8220;Parallelprogrammierung mit native C++ und <a title="Workshop: parallel Programmieren mit OpenMP" href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">OpenMP 3.0</a>&#8221; von und mit <a title="Review: Multicore-Programmierung auf den dotnetpro.powerdays, Teil 2" href="http://www.software-dev-blog.de/review-multicore-programmierung-auf-den-dotnetpro-powerdays-teil-2/07/2010/">Bernd Marquardt</a> sein.</p>
<p>Übrigens: Am Vortag der Veranstaltung (4.5.) vermittelt Dr. Michael Klemm von Intel in dem ganztägigen Hands-on-Training  “C/C++ Code-Performanceoptimierung für Intel-Prozessoren“ tiefgreifendes Wissen mit praktischen Beispielen an bereitgestellten PCs mit Multicore-CPUs.</p>
<p>Hier die weiteren Infos zur Veranstaltung:</p>
<ul>
<li><a href="http://cpp.adc2011.de/Workshops.aspx" target="_blank">Überblick der Workshops</a></li>
</ul>
<ul>
<li><a href="http://cpp.adc2011.de/Sessions.aspx" target="_blank">Überblick der Sessions</a></li>
</ul>
<ul>
<li><a href="http://cpp.adc2011.de/Sprecher.aspx" target="_blank">Überblick der Speaker</a></li>
</ul>
<p>Sichern Sie sich bis 8. April Ihre Teilnahme und <strong>sparen Sie dabei bis zu 250 Euro, indem sie sich den Frühbucherrabatt mit dem Promocode „Cpp-i0411X“ sichern</strong>. Bei gleichzeitiger Anmeldung zur Konferenz mit zwei weiteren Kollegen bekommen Sie auch noch einen 10-prozentigen Kollegenrabatt on top!</p>
<p><a href="http://cpp.adc2011.de/Anmeldung.aspx" target="_blank">Und hier geht es zur Anmeldung.</a> Wir sehen uns&#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/early-bird-rabatt-fur-die-c-advanced-developer-conference/03/2011/&via=sw_devtwits&text=Early-Bird-Rabatt für die C++ Advanced Developer Conference&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/early-bird-rabatt-fur-die-c-advanced-developer-conference/03/2011/&via=sw_devtwits&text=Early-Bird-Rabatt für die C++ Advanced Developer Conference&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/early-bird-rabatt-fur-die-c-advanced-developer-conference/03/2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AVX mit Visual Studio 2010 und OpenMP optimal einsetzen</title>
		<link>http://www.software-dev-blog.de/avx-mit-visual-studio-2010-und-openmp-optimal-einsetzeni/01/2011/</link>
		<comments>http://www.software-dev-blog.de/avx-mit-visual-studio-2010-und-openmp-optimal-einsetzeni/01/2011/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 16:09:00 +0000</pubDate>
		<dc:creator>Oliver</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[AVX]]></category>
		<category><![CDATA[Sandy Bridge]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1460</guid>
		<description><![CDATA[Dass es israelische Software-Entwickler echt drauf haben, ist ja nichts Neues. So ist es auch nicht erstaunlich, dass ich heute auf einem der Intel Software-Blogs einen exzellenten Beitrag gefunden habe, den ich Ihnen nicht vorenthalten will. Hierin beschreibt Asaf Shelly sehr ausführlich, wie sich ein Videoclip mit Standardauflösung in eine HD-Auflösung umwandeln lässt und das [...]]]></description>
			<content:encoded><![CDATA[<p>Dass es israelische Software-Entwickler echt drauf haben, ist ja  nichts Neues. So ist es auch nicht erstaunlich, dass ich heute auf einem  der Intel Software-Blogs <a href="http://software.intel.com/en-us/blogs/2010/12/20/visual-studio-2010-built-in-cpu-acceleration/" target="_blank">einen exzellenten Beitrag</a> gefunden habe, den ich Ihnen nicht vorenthalten will.</p>
<p>Hierin beschreibt Asaf Shelly sehr ausführlich, wie sich ein  Videoclip mit Standardauflösung in eine HD-Auflösung umwandeln  lässt und das Videobild zudem aufgehübscht wird. Es erfordert natürlich eine  gewaltige Anstrengung der vorhandenen CPUs, die erforderlichen  Berechnungen durchzuführen. Asaf zeigt hierbei, wie sich bestehender  Sourcecode lediglich mit Hilfe von <a href="http://www.software-dev-blog.de/videochat-mit-steve-teixeira-uber-parallelprogrammierung/11/2009/">Visual Studio 2010</a>, <a href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">OpenMP</a> und ein,  zwei weiteren Handgriffen so optimieren lässt, dass die Rechenzeit für  einen einzigen Frame von 57 Sekunden auf 2 Sekunden reduziert werden  kann &#8211; und das unter Zuhilfenahme von nur zwei und nicht vier  Prozessorkernen!</p>
<p>Der erste Schritt besteht darin, innerhalb des VS-2010-Projektes den  Schalter &#8220;Streaming SIMD Extensions 2&#8243; zu aktivieren. Alleine dies  bewirkt eine Reduzierung der Rechenzeit von 57 auf 15 Sekunden,  was fast dem Faktor 4 entspricht! Voraussetzung hierfür ist  neben Visual Studio 2010 ein Rechner mit der <a href="http://www.software-dev-blog.de/sandy-bridge-gestartet-windows-auf-soc/01/2011/">aktuellen  Core-Prozessor-Generation</a>, die auf den Codenamen &#8220;Sandy Bridge&#8221; hört. Nur  dann wird nämlich mit Hilfe des o.a. Schalters <a href="http://www.software-dev-blog.de/sandy-bridge-schnellere-apps-dank-breiteren-avx-registern/01/2011/">optimierter AVX-Code </a>generiert, ohne dass Sie sich als Programmierer darum kümmern müssen.</p>
<p>Im  zweiten Schritt wird der Programmcode mithilfe der Headerdatei  <em><strong>&#8220;emmintrin.h&#8221;</strong></em> für intrinsische Funktionen &#8220;aktiviert&#8221;,  Intrinsische Funktionen zeichnen sich dadurch aus, dass prozessorspezifische  Operationen in Funktionsaufrufen gekapselt werden können. Dies führt  mithilfe einer kleinen Codeanpassung dazu, dass das modifizierte  Programm samt AVX-Aktivierung nicht mehr 57, sondern nur noch 3,7  Sekunden für die Berechnung benötigt.</p>
<p>Im dritten und letzten  Schritt wird noch einen <a href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">OpenMP-basierte</a> for-Loop &#8220;eingebaut&#8221;, was dazu  führt, dass derselbe Algorithmus nicht mehr in 57 Sekunden ausgeführt  wird, sondern nur noch in 2,2 Sekunden. Darüber hinaus reicht es völlig,  den zugehörigen Code auf zwei Prozessorkernen und nicht mehr auf vier  ausführen zu lassen. Dies erreichen Sie übrigens mit dem OpenMP-Schalter  &#8220;omp_set_num_threads(2)&#8221;.</p>
<p><strong>Fazit:</strong> Mit wenigen Handgriffen  lassen sich rechenintensive Algorithmen auf Sandy-Bridge-basierten  Rechnern derart beschleunigen, dass anstatt einer Minute nur noch wenige  Sekunden für die Berechnung erforderlich sind &#8211; und das mit der Hälfte  der erforderlichen CPU-Ressourcen! Also, worauf warten Sie noch?</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/avx-mit-visual-studio-2010-und-openmp-optimal-einsetzeni/01/2011/&via=sw_devtwits&text=AVX mit Visual Studio 2010 und OpenMP optimal einsetzen&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/avx-mit-visual-studio-2010-und-openmp-optimal-einsetzeni/01/2011/&via=sw_devtwits&text=AVX mit Visual Studio 2010 und OpenMP optimal einsetzen&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/avx-mit-visual-studio-2010-und-openmp-optimal-einsetzeni/01/2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acht nützliche Tipps zum Parallelisieren</title>
		<link>http://www.software-dev-blog.de/acht-nutzliche-tipps-zum-parallelisieren/09/2010/</link>
		<comments>http://www.software-dev-blog.de/acht-nutzliche-tipps-zum-parallelisieren/09/2010/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 17:08:37 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Tipp]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1441</guid>
		<description><![CDATA[Aufmerksamen Lesern des Software Dev Blogs wird es nicht entgangen sein: es war hier in letzter Zeit ein wenig ruhiger, was mit vielen anderen Aktivitäten meinerseits zu tun hatte. Ich war viel unterwegs, hab viele neue Themen recherchiert und gesammelt, saß mit Leuten zusammen, etc. Und der Output wird sich sehen lassen können: Das reicht [...]]]></description>
			<content:encoded><![CDATA[<p>Aufmerksamen Lesern des Software Dev Blogs wird es nicht entgangen sein: es war hier in letzter Zeit ein wenig ruhiger, was mit vielen anderen Aktivitäten meinerseits zu tun hatte. Ich war viel unterwegs, hab viele neue Themen recherchiert und gesammelt, saß mit Leuten zusammen, etc. Und der Output wird sich sehen lassen können: Das reicht von Exklusivinfos direkt vom Intel Developer Forum in San Francisco bis hin zu neuesten Beiträge <a href="http://www.software-dev-blog.de/infos-aus-erster-hand-zu-cilk/07/2010/">rund um das Thema Cilk</a> und Co, die ich mit dem Kollgen Deilmann von Intel gemeinsam erarbeiten werde.</p>
<p>Den Anfang macht heute ein Online-Artikel des werten Kollegen Edmund Preiss, der es sich <a href="http://www.software-dev-blog.de/aus-seriell-mach-parallel-intel-parallel-advisor-lite/03/2010/">mal</a> <a href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">wieder</a> <a href="http://www.software-dev-blog.de/surftipp-parallel-studio-artikel-kostenlos-downloaden/06/2009/">zur Aufgabe</a> <a href="http://www.software-dev-blog.de/gdc09-so-funktioniert-intel-parallel-studio/08/2009/">gemacht</a> hat, die Parallelprogrammierung ein wenig näher zu begutachten. Herausgekommen sind acht sehr nützliche Tipps, die ich hier zusammenfassen will. Den kompletten Beitrag findet ihr <a href="http://www.elektroniknet.de/embedded/technik-know-how/entwicklungs-tools-fuer-hard-und-software/article/29131/0/8_Tipps_zum_Parallelisieren_und_Debuggen_von_Multicore-Applikationen/" target="_blank">auf elektroniknet.net</a>.</p>
<p><strong>Tipp 1: In parallelen Strukturen denken und entwickeln</strong> &#8212; Hiefür bietet sich für C++-Entwickler beispielsweise das Intel-Tool <a href="http://www.software-dev-blog.de/aus-seriell-mach-parallel-intel-parallel-advisor-lite/03/2010/">Parallel Advisor</a> an, das dabei hilft, in einem seriellen Programm parallel Strukturen aufzuspüren. Hierzu gibt es nächste Woche mehr Infos direkt vom IDF, die ich mit vielen Bildern garnieren werde.</p>
<p><strong>Tipp 2: Höhrere Abstraktionsgrade erlauben thread-sichere Programme</strong> &#8212; Hierfür bieten sich spezielle <a href="http://www.software-dev-blog.de/parallel-bibliotheken-helfen-bei-der-software-entwicklung/02/2009/">Bibliotheken</a> an, aber auch Programmiermodelle wie <a href="http://software.intel.com/en-us/articles/cluster-openmp-for-intel-compilers/" target="_blank">OpenMP</a> oder <a href="http://software.intel.com/en-us/intel-tbb/" target="_blank">Intel Threading Building Blocks</a>. Ganz neu am Start in diesem Zusammenhang sind die Intel Array Building Blocks. Auch hierzu gibt es nächste Woche dedizierte Infos.</p>
<p><strong>Tipp 3: Denke und programmiere in Tasks, nicht in Threads</strong> &#8212; Dieser Tipp hilft, die Skalierbarkeit auf mehreren Prozessorkernen deutlich zu verbessern</p>
<p><strong>Tipp 4: Arbeite mit so wenig Locks wie möglich, aber mit so vielen wie nötig</strong> &#8212; Hier geht es um Data Races, die beim Umgehen von Locks entstehen können. Und mit Tools wie dem <a href="http://www.software-dev-blog.de/multicore-turbo-fur-visual-studio-intel-parallel-studio/10/2008/">Intel Parallel Inspector</a> kann man mögliche Data Races und Dead Locks identifizieren lassen.</p>
<p><strong>Tipp 5: Skalierbare Speicker-Allokatoren</strong> helfen, Speicherzuweisung bei parallelen Programmen zu optimieren.</p>
<p><strong>Tipp 6: Erhöhe die parallele Auslastung, um den seriellen Anteil an Code zu verringern</strong> &#8212; Dies hat mit der Erkenntnis zu tun, dass Anwendungen nur mit ihrem Anteil an parallelen Ausführungen signifikant schneller werden. Daher sollte man mit den passenden Tools nach Programmbereichen suchen, die sich gut multithreaden lassen. Hierzu gehören beispielsweise Schleifenkonstrukte.</p>
<p><strong>Tipp 7: Teste parallelisierte Programmabschnitte im seriellen Modus auf mögliche Bugs hin</strong> &#8212; Hierzu gibt es zwei Möglichkeiten: Entweder das &#8220;Abschalten&#8221; parallelisierter Codeabschnitte mithilfe bestimmter Schalter oder der Einsatz der <a href="http://www.software-dev-blog.de/paralleltesten-mit-visual-studio-parallel-debugger-extension/07/2009/">Intel Parallel Debugger Extensions</a>, die Teil des Intel Parallel Composer sind.</p>
<p><strong>Tipp 8: Software-Tools helfen</strong>, während der einzelnen Entwicklungsschritte (Design, Kompilieren, Debuggen, Verifikation und Leistungsverbesserung), die richtigen Dinge zu tun. Hierzu gehört die Entwicklersuite <a href="http://software.intel.com/en-us/intel-parallel-studio-home/" target="_blank">Intel Parallel Studio</a>, die Entwicklern nativ programmierter Programme genau dabei hilft.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/acht-nutzliche-tipps-zum-parallelisieren/09/2010/&via=sw_devtwits&text=Acht nützliche Tipps zum 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/acht-nutzliche-tipps-zum-parallelisieren/09/2010/&via=sw_devtwits&text=Acht nützliche Tipps zum 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/acht-nutzliche-tipps-zum-parallelisieren/09/2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Das war die GDCE 2010: Videointerviews und mehr, Teil 3</title>
		<link>http://www.software-dev-blog.de/das-war-die-gdce-2010-videointerviews-und-mehr-teil-3/08/2010/</link>
		<comments>http://www.software-dev-blog.de/das-war-die-gdce-2010-videointerviews-und-mehr-teil-3/08/2010/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 12:13:07 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Visual Computing]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[GDCE10]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1438</guid>
		<description><![CDATA[Sodala, nachdem Teil 1 und Teil 2 der GDCE-2010-Rückschau draußen sind, folgt jetzt das dritte und letzte Kapitel meiner Trilogie in Sachen Spieleentwicklung. Den Abschluss soll ein Dreiteiler bilden (sic!), der sich mit der Analysetool-Suite Intel Graphics Performance Analyzers beschäftigt. Den Anfang macht der System Analyzer, mit dem sich in Echtzeit analysieren lässt, was während [...]]]></description>
			<content:encoded><![CDATA[<p>Sodala, nachdem <a href="http://www.software-dev-blog.de/das-war-die-gdce-2010-videointerviews-und-mehr-teil-1/08/2010/">Teil 1</a> und <a href="http://www.software-dev-blog.de/das-war-die-gdce-2010-videointerviews-und-mehr-teil-2/08/2010/">Teil 2</a> der GDCE-2010-Rückschau draußen sind, folgt jetzt das dritte und letzte Kapitel meiner Trilogie in Sachen Spieleentwicklung. Den Abschluss soll ein Dreiteiler bilden (sic!), der sich mit der Analysetool-Suite <a href="http://www.software-dev-blog.de/gdce-2010-techsession-so-setzt-man-intel-graphics-performance-analyzers-richtig-ein/08/2010/">Intel Graphics Performance Analyzers</a> beschäftigt.</p>
<p><a href="http://www.youtube.com/watch?v=RiCCA-Osflw" target="_blank">Den Anfang macht der <strong>System Analyzer</strong></a><strong>,</strong> mit dem sich in Echtzeit analysieren lässt, was während des Gameplays alles passiert. Um das Testsystem von rechenintensiven Aufgaben zu befreien, läuft der System Analyzer auf einem anderen Rechner als das zu testende Spiel. Dabei stehen verschiedene Funktionen wie die CPU-Diagnose, das Ermitteln der Anzahl der Locks per Frame und der Framerate selbst sowie andere wichtige Parameter zur Verfügungung.</p>
<p>Praktisch am System Analyzer sind die vorhandenen Hardware-Diagnose-Tools, mit denen sich auf Intel-Systemen Dinge wie die Auslastung der vorhandenen Execution Units untersuchen lassen. Aber auch bestimmte Ansichten auf die aktuelle Spielszene erlauben das Analysieren des Spiels. So lassen sich beispielsweise mit der Gitterdarstellung verborgene Objekte entdecken, die dort gar nicht hingehören und nur überflüssige Rechenzeit verbraten.</p>
<p><a href="http://www.youtube.com/watch?v=KtF9zPxXvK8" target="_blank">Der </a><strong><a href="http://www.youtube.com/watch?v=KtF9zPxXvK8" target="_blank">Frame Analyzer</a></strong> geht dann richtig in die Tiefe und lässt jedes einzelne Bild eines Spiels analysieren. So kann man anhand der DirectX-Drawcalls feststellen, welche Bereiche eines Frames besonders viel Rechenzeit beanspruchen und diese Bereiche gegebenenfalls optimieren. So zeigen beispielsweise versteckte Objekte hohes Optimierungspotenzial, da sie zum Gameplay nichts beitragen, aber trotzdem Rechenzeit kosten. Um die möglichen &#8220;Störenfriede&#8221; zu eliminieren, kann man aber auch experimentell vorgehen, indem man einzelne Parameter ausschaltet um zu sehen, wie sich das auf die Szene und die Renderleistung auswirkt.</p>
<p>Das dritte Tool schließlich, <strong><a href="http://www.youtube.com/watch?v=KjHd36UeS1A" target="_blank">Platform View</a></strong>, ist zum einen &#8220;neu&#8221; in der Version 3.0 von Intel GPA und bietet zum anderen einen detaillierten Blick auf den Parallelisierungsgrad des Spiels. Dabei kann man sich sämtliche Threads anzeigen lassen, die gerade aktiv sind und diese in der Detailansicht genau analysieren. So lässt sich beispielsweise herausfinden, warum die CPU auf die GPU warten muss oder auch anders herum.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/das-war-die-gdce-2010-videointerviews-und-mehr-teil-3/08/2010/&via=sw_devtwits&text= Das war die GDCE 2010: Videointerviews und mehr, Teil 3&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/das-war-die-gdce-2010-videointerviews-und-mehr-teil-3/08/2010/&via=sw_devtwits&text= Das war die GDCE 2010: Videointerviews und mehr, Teil 3&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/das-war-die-gdce-2010-videointerviews-und-mehr-teil-3/08/2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parallelprogrammieren lernen mit Schach</title>
		<link>http://www.software-dev-blog.de/parallelprogrammieren-lernen-mit-schach/07/2010/</link>
		<comments>http://www.software-dev-blog.de/parallelprogrammieren-lernen-mit-schach/07/2010/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 14:42:11 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Workshop]]></category>

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

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1262</guid>
		<description><![CDATA[Disclaimer: Dieser Beitrag ist ein Extrakt des Artikels &#8220;Mehrkern-Beschleuniger&#8221;, der in der mac-developer 1/2010 erschienen ist. Autor dieses Beitrags ist Maximilian Götzfried. Ende August war ich bei Apple, um ein wenig mehr über deren Multicore-Beschleuniger Grand Central Dispatch zu erfahren. Diese in Snow Leopard implementierte Technik erlaubt es Anwendungsentwicklern, mit relativ wenig Aufwand, ihre Anwendungen [...]]]></description>
			<content:encoded><![CDATA[<p><em>Disclaimer: Dieser Beitrag ist ein Extrakt des Artikels &#8220;Mehrkern-Beschleuniger&#8221;, der in der <a href="http://www.mac-developer.de/" target="_blank">mac-developer</a> 1/2010 erschienen ist. Autor dieses Beitrags ist Maximilian Götzfried.</em></p>
<p>Ende August war ich bei Apple, um ein wenig mehr über deren Multicore-Beschleuniger <a href="http://www.software-dev-blog.de/mac-os-x-106-erleichtert-die-multicore-programmierung/08/2009/">Grand Central Dispatch</a> zu erfahren. Diese in Snow Leopard implementierte Technik erlaubt es Anwendungsentwicklern, mit relativ wenig Aufwand, ihre Anwendungen multicore-tauglich zu machen. Und das ohne größeren Programmieraufwand, sondern lediglich mithilfe der C-API und den NSOperation-Klassen.</p>
<p>Das Tolle an GCD ist deren einfache Verwendung: Anstatt selbst Threads auf Basis von Tasks oder anderen Objekten zu erzeugen, kümmert sich GCD selbst darum. Das bedeutet aber für den Software-Entwickler, dass er sich für eine optimale Ausnutzung der vorhandenen Prozessorressourcen grundsätzlich Gedanken machen muss über die Programmlogik. Das Resultat seines überarbeiteten Programms sind einzelne Tasks, die je nach Programmablauf an die vorhandenen Multithreading-Queues übergeben werden können, wo sie von GCD bestmöglich verarbeitet werden.</p>
<p>Wie bereits angedeutet, stellt GCD zwei Möglichkeiten zur Verfügung, Programmcode zu multithreaden: Mithilfe der NSOperation-Klasse und der C-API. Beides soll kurz beleuchtet werden.</p>
<p><span style="color: #993300;"><em><strong>NSOperation: Warteschlangentechnik für asynchrone Tasks</strong></em></span><br />
Für das asynchrone, also zeitversetzte Ausführen von Anwendungen ist lediglich das Erstellen von NSOperation-konformen Objekten erforderlich, die dann an die zugehörige Warteschlange übergeben werden, die die Queue nach dem FIFO-Prinzip verarbeitet. Hierfür werden Tasks im Hintergrund ausgeführt, pausiert und zu Ende geführt. Es ist sogar möglich, die Anzahl der maximalen Threads festzulegen, was in Extremfällen ein einziger sein kann. Natürlich erlaubt GCD die ständige Rückkehr zum Main Thread.</p>
<p><span id="more-1262"></span>Sehr hilfreich ist auch das &#8220;Verketten&#8221; mehrerer Threads, um so bestimmte Abhängigkeiten zu definieren. Hierzu gehört auch die Möglichkeit, Thread zu priorisieren. Darüber hinaus lassen sich NSOperation-Threads mit Rückgabewerten definieren, die während des Programmablaufs dann weiter verwendet werden können.</p>
<p><span style="color: #993300;"><em><strong>Grand-Central-Dispatch-API</strong></em></span><br />
Neben den NSOperation-Klassen erlaubt die GCD-API das direkte Verwenden der vorhandenen Funktionen. Hierfür kann man entweder eigene Queues erzeugen oder auf die globale Warteschlange zugreifen. Es existieren drei globale Queues, die sich lediglich in ihrer Priorität unterscheiden. Daneben gibt es natürlich auch eine Main Queue, die die Steuerung des Main Threads übernimmt.</p>
<p>Im Gegensatz zu den globalen Queues funktionieren eigene Warteschlange rein seriell, womit sie beispielsweise in Bereichen eingesetzt werden können, die bis dato mit Hilfe von Locks überwacht wurden. Queues werden blockweise gefüllt, der zugehörige Code wird asynchron im Hintergrund ausgeführt. Für eine problemlos Rückkehr zur Main Queue sollte jeder Block eine Callback-Funktion aufweisen, die auf das &#8220;Hauptprogramm&#8221; verweist. Natürlich lassen sich Queues auch pausieren (suspend) und weiter ausführen (resume).</p>
<p><span style="color: #993300;"><em><strong>Weitere wichtige GCD-Techniken</strong></em></span><br />
Neben den Klassen und APIs stehen weitere Techniken in GCD zur Verfügung, die man als Entwickler kennen sollte. So ermöglichen beispielsweise Semaphore die bessere Kontrolle bgrenzter Ressourcen. Aber auch Deadlocks lassen sich dank GCD besser vermeiden, Blöcke können zeitlich gesteuert genutzt werden, Systemereignisse lassen sich effizient und einfach überwachen und vieles mehr.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/apps-unter-mac-os-x-multicore-tauglich-machen/12/2009/&via=sw_devtwits&text=Apps unter Mac OS X multicore-tauglich 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/apps-unter-mac-os-x-multicore-tauglich-machen/12/2009/&via=sw_devtwits&text=Apps unter Mac OS X multicore-tauglich 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/apps-unter-mac-os-x-multicore-tauglich-machen/12/2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wie .NET-Entwickler mit VTune Bottlenecks finden können</title>
		<link>http://www.software-dev-blog.de/wie-net-entwickler-mit-vtune-bottlenecks-finden-konnen/11/2009/</link>
		<comments>http://www.software-dev-blog.de/wie-net-entwickler-mit-vtune-bottlenecks-finden-konnen/11/2009/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 11:20:15 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[dotNET]]></category>
		<category><![CDATA[teched09]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1248</guid>
		<description><![CDATA[Vergangene Woche auf der Microsoft TechEd Europe 2009 hatten wir die Gelegenheit, uns von Rami Radi zeigen zu lassen, wie .NET-Entwickler mithilfe des Profiling- und Samplingtools VTune Performance Analyzer Schwachstellen in ihren Anwendungen aufspüren und beheben können. Dabei geht es beispielsweise sehr oft um Schleifenkonstrukte, die unverhältnismäßig viel CPU-Zeit in Anspruch nehmen, was mit den [...]]]></description>
			<content:encoded><![CDATA[<p>Vergangene Woche auf der <a href="http://www.software-dev-blog.de/teched09-erste-videoeindrucke-aus-berlin/11/2009/">Microsoft TechEd Europe 2009</a> hatten wir die Gelegenheit, uns von <a href="http://www.software-dev-blog.de/videochat-wie-net-entwickler-von-multihreading-profitieren/11/2009/">Rami Radi</a> zeigen zu lassen, wie .NET-Entwickler mithilfe des Profiling- und Samplingtools <a href="http://www.software-dev-blog.de/quellcode-schwachstellen-mit-intel-vtune-aufspuren/11/2008/">VTune Performance Analyzer</a> Schwachstellen in ihren Anwendungen aufspüren und beheben können. Dabei geht es beispielsweise sehr oft um Schleifenkonstrukte, die unverhältnismäßig viel CPU-Zeit in Anspruch nehmen, was mit den richtigen Tricks gar nicht notwendig wäre. Für alle, die also in Zukunft mehr aus ihrer Software herausholen wollen, sei dieser Video-Workshop wärmstens empfohlen.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="520" height="292" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/FGi5tzD5ihI&amp;hl=de_DE&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="520" height="292" src="http://www.youtube.com/v/FGi5tzD5ihI&amp;hl=de_DE&amp;fs=1&amp;" allowscriptaccess="always" 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/wie-net-entwickler-mit-vtune-bottlenecks-finden-konnen/11/2009/&via=sw_devtwits&text=Wie .NET-Entwickler mit VTune Bottlenecks finden können&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/wie-net-entwickler-mit-vtune-bottlenecks-finden-konnen/11/2009/&via=sw_devtwits&text=Wie .NET-Entwickler mit VTune Bottlenecks finden können&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/wie-net-entwickler-mit-vtune-bottlenecks-finden-konnen/11/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multicore-Workshop mit Jeffrey Richter parallel zur Basta</title>
		<link>http://www.software-dev-blog.de/multicore-workshop-mit-jeffrey-richter-parallel-zur-basta/09/2009/</link>
		<comments>http://www.software-dev-blog.de/multicore-workshop-mit-jeffrey-richter-parallel-zur-basta/09/2009/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 10:35:47 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Konferenz]]></category>
		<category><![CDATA[Workshop]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1158</guid>
		<description><![CDATA[Von 21. bis 25. September findet in Mainz die Basta! 2009 statt, eine der größten unabhängigen Entwicklerkonferenzen in diesem Land. Gerne würde ich ja dort hinfahren, um mir die eine oder andere Session anzuhören und darüber zu bloggen. Besonders interessant finde ich natürlich den Multicore-Workshop von Jeffrey Richter, der parallel zur Basta an drei Tagen [...]]]></description>
			<content:encoded><![CDATA[<p>Von 21. bis 25. September findet in Mainz die <a title="Mehr Infos zur Basta! 2009" href="http://www.software-dev-blog.de/basta-spring-2009-c40-visual-studio-2010-und-mehr/12/2008/" target="_blank">Basta! 2009</a> statt, eine der größten unabhängigen Entwicklerkonferenzen in diesem Land. Gerne würde ich ja dort hinfahren, um mir die eine oder andere Session anzuhören und darüber zu bloggen. Besonders interessant finde ich natürlich den <a title="Mehr Infos zum Multicore-Workshop von Jeffrey Richter" href="http://entwickler-akademie.de/codecamps/workshop-jeffrey-richter" target="_blank">Multicore-Workshop von Jeffrey Richter</a>, der parallel zur Basta an drei Tagen stattfindet.</p>
<p>Nun ist es aber so, dass ich von 21. bis 27. September in San Francisco weilen werde, um mich ebenfalls an drei Tagen auf dem <a title="Mehr Infos zur IDF 2009" href="http://www.intel.com/IDF/" target="_blank">Intel Developer Forum</a> über die neuesten Entwicklungen aus dem Hause Intel in Sachen Programmierung und mehr zu informieren. Und da ich leider nicht an zwei Orten gleichzeitig sein kann, habe ich mir schon mal den <a title="Das Basta!-Programm auf einen Blick" href="http://it-republik.de/konferenzen/planer/basta09_timetable.html" target="_blank">Workshop-Plan</a> ein wenig genauer angesehen. Darüber hinaus habe ich weitere Infos bei der Veranstalterin der Basta angefragt. Hoffentlich bekomme ich etwas zugeschickt. Damit ich es mit euch teilen kann.</p>
<p>Bis dahin lohnt sich auf jeden Fall ein kurzer Blick in die geplanten Inhalte des Power-Workshops von Jeffrey:</p>
<p>Der Titel des Ganzen lautet &#8220;Mastering .NET and Preparing for the Multi-Core Revolution&#8221;, findet von Montag bis Mittwoch von jeweils 9 bis 18 Uhr im Hotel Contel Mainz statt und kostet regulär 1.550 Euro. Falls sich drei Kollegen aus demselben Unternehmen anmelden, kommt der Workshop 100 Euro günstiger. Und für alle, die sich <a title="Zum Anmeldeformular" href="https://www.entwickler.com/ssl/formtool/index.php?id=66" target="_blank">noch heute anmelden</a>, gibt&#8217;s ein Netbook mit sämtlichen Ausgaben des <em>dot.NET</em> Magazins obendrauf.</p>
<p><span id="more-1158"></span>Für das Geld bekommt man eine ganze Menge: Freien Eintritt zu Basta,  Rundum-Verpflegung und ein Zertifikat der Entwickler-Akademie &#8211; und obendrein macht ihr euch fit für das Multicore-Zeitalter. Dabei geht es um folgende Inhalte:</p>
<ul>
<li>So gehe ich richtig mit Programmierfehlern mithilfe der Ausnahmebehandlung (exception handling) um.</li>
</ul>
<ul>
<li>So implementiert der C#-Compiler anonyme Methoden und Lambda-Funktionen.</li>
</ul>
<ul>
<li>So ermöglicht und unterstützt C# die funktionale Programmierung.</li>
</ul>
<ul>
<li>Sinn und Bedeutung von Threads und wie sich diese positiv auf die Leistungsfähigkeit einer Anwendung auswirken.</li>
</ul>
<ul>
<li>So vereinfacht der CLR-Threadpool die Programmierung von C#-Anwendungen und beschleunigt diese.</li>
</ul>
<ul>
<li>So führt Windows synchrone und asynchrone I/O-Operationen aus &#8211; wie .NET-Entwickler dies zu ihren Gunsten ausnutzen können.</li>
</ul>
<ul>
<li>So teste ich ein parallel programmiertes C#-Programm mithilfe von .NET-Bordmitteln.</li>
</ul>
<p>Diese und viele weitere Aspekte der Parallelprogrammierung werden also im Detail besprochen. Und, ist das nix?!</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-workshop-mit-jeffrey-richter-parallel-zur-basta/09/2009/&via=sw_devtwits&text=Multicore-Workshop mit Jeffrey Richter parallel zur Basta&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-workshop-mit-jeffrey-richter-parallel-zur-basta/09/2009/&via=sw_devtwits&text=Multicore-Workshop mit Jeffrey Richter parallel zur Basta&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-workshop-mit-jeffrey-richter-parallel-zur-basta/09/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

