<?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>Tim Anderson's ITWriting &#187; c++</title>
	<atom:link href="http://www.itwriting.com/blog/category/c/feed" rel="self" type="application/rss+xml" />
	<link>http://www.itwriting.com/blog</link>
	<description>Tech writing blog</description>
	<lastBuildDate>Thu, 02 Sep 2010 12:36:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Embarcadero All-access: a better way to deploy developer tools?</title>
		<link>http://www.itwriting.com/blog/2405-embarcadero-all-access-a-better-way-to-deploy-developer-tools.html</link>
		<comments>http://www.itwriting.com/blog/2405-embarcadero-all-access-a-better-way-to-deploy-developer-tools.html#comments</comments>
		<pubDate>Wed, 31 Mar 2010 09:29:44 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[embarcadero]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[all-access]]></category>
		<category><![CDATA[toolcloud]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/2405-embarcadero-all-access-a-better-way-to-deploy-developer-tools.html</guid>
		<description><![CDATA[<p>I have a call lined up with Embarcadero today, and wanted to catch up with their latest tools. It reminded me of something I’d intended to post about for some time, the Embarcadero All-Access system which allows no-touch install of many of its tools. Here is how it works. First, you run the All-Access <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/2405-embarcadero-all-access-a-better-way-to-deploy-developer-tools.html">Embarcadero All-access: a better way to deploy developer tools?</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/1079-embarcadero-rad-studio-2009-is-done.html' rel='bookmark' title='Permanent Link: Embarcadero RAD Studio 2009 is done'>Embarcadero RAD Studio 2009 is done</a></li>
<li><a href='http://www.itwriting.com/blog/2616-what-next-for-embarcadero-delphi-roadmap-with-mac-linux-published.html' rel='bookmark' title='Permanent Link: What next for Embarcadero Delphi? Roadmap with Mac, Linux support published.'>What next for Embarcadero Delphi? Roadmap with Mac, Linux support published.</a></li>
<li><a href='http://www.itwriting.com/blog/1536-survey-ranks-developer-tools-and-reveals-what-developers-care-about-most.html' rel='bookmark' title='Permanent Link: Survey ranks developer tools, and reveals what developers care about most'>Survey ranks developer tools, and reveals what developers care about most</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I have a call lined up with Embarcadero today, and wanted to catch up with their latest tools. It reminded me of something I’d intended to post about for some time, the <a href="http://www.embarcadero.com/products/all-access" target="_blank">Embarcadero All-Access system</a> which allows no-touch install of many of its tools. Here is how it works. First, you run the All-Access client:</p>
<p><a href="http://www.itwriting.com/blog/wp-content/uploads/2010/03/image18.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.itwriting.com/blog/wp-content/uploads/2010/03/image_thumb18.png" width="404" height="403" /></a> </p>
<p>I’m not showing all the available tools here: I count 17 currently. You’ll notice many of them are marked InstantOn. Let’s say I want to take a look at DBArtisan. I click the link and get a dialog:</p>
<p><a href="http://www.itwriting.com/blog/wp-content/uploads/2010/03/image19.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.itwriting.com/blog/wp-content/uploads/2010/03/image_thumb19.png" width="404" height="140" /></a> </p>
<p>This invites me to start a download. Click Yes and I get a download thermometer:</p>
<p><a href="http://www.itwriting.com/blog/wp-content/uploads/2010/03/image20.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.itwriting.com/blog/wp-content/uploads/2010/03/image_thumb20.png" width="404" height="44" /></a> </p>
<p>Once downloaded, I have to pass a license screen and enter a serial number. Presuming you have a current subscription, you can get a serial number by logging on to you Embarcadero account and requesting it there, where it is supplied instantly. This part of the process is similar to that used by Microsoft for MSDN subscriptions. It is a shame it is not built into the All Access desktop client, but a minor inconvenience.</p>
<p>Then the application runs.</p>
<p><a href="http://www.itwriting.com/blog/wp-content/uploads/2010/03/image21.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.itwriting.com/blog/wp-content/uploads/2010/03/image_thumb21.png" width="404" height="334" /></a> </p>
<p> No further setup, no install options, or any of the other complications that often accompany installing developer tools.</p>
<p>To be fair, I can think of other development tools that are pretty much download and run. Eclipse is usually good in this respect, at least until you try to get updates. Further, even with All Access there can be additional steps. Instant-on 3rd Rail, for example, does not install a Ruby runtime, so it is not really click and run: the Eclipse-based IDE runs, but you cannot start a project without getting a Ruby interpreter from somewhere.</p>
<p>Nevertheless, this is the closest I’ve seen to on-demand developer tools, short of the interesting browser-hosted tools that are emerging. Embarcadero now also calls it the ToolCloud. It is not just an easy install; this is application virtualisation:</p>
<blockquote><p>Aimed at simplifying deployment, enabling side-by-side versioning of products, and breaking down the barriers to use, InstantOn is also great in locked-down desktop environments, since the product does not affect any system files or system registry settings.</p>
</blockquote>
<p>says <a href="http://www.embarcadero.com/products/all-access/faq" target="_blank">the faq</a>.</p>
</p>
</p>
</p>
</p>
<p>Alongside the technical aspects, All-Access simplifies license management for a development team. You can install the server piece on your own network for full control.</p>
<p>This comes at a price of course. There are four subscription levels, from Bronze to Platinum, though even the Bronze gives you use of a wide range of tools including Delphi, C++ Builder, JBuilder, Rapid SQL, some parts of ER/Studio, 3rdRail and Delphi for PHP. Example price <a href="http://www.greymatter.com/product/Embarcadero/All-Access/376762" target="_blank">from Grey Matter</a> in the UK starts at £3188.57 for a 1-year Bronze concurrent license.</p>
<p>The interesting question: when can this be made into a generic tool that developers can use for deploying their own applications?</p>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/1079-embarcadero-rad-studio-2009-is-done.html' rel='bookmark' title='Permanent Link: Embarcadero RAD Studio 2009 is done'>Embarcadero RAD Studio 2009 is done</a></li>
<li><a href='http://www.itwriting.com/blog/2616-what-next-for-embarcadero-delphi-roadmap-with-mac-linux-published.html' rel='bookmark' title='Permanent Link: What next for Embarcadero Delphi? Roadmap with Mac, Linux support published.'>What next for Embarcadero Delphi? Roadmap with Mac, Linux support published.</a></li>
<li><a href='http://www.itwriting.com/blog/1536-survey-ranks-developer-tools-and-reveals-what-developers-care-about-most.html' rel='bookmark' title='Permanent Link: Survey ranks developer tools, and reveals what developers care about most'>Survey ranks developer tools, and reveals what developers care about most</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/2405-embarcadero-all-access-a-better-way-to-deploy-developer-tools.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Intel&#8217;s compiler underperforms on other CPUs: artificial impairment versus failure to optimise</title>
		<link>http://www.itwriting.com/blog/2031-how-intels-compiler-underperforms-on-other-cpus-artificial-impairment-versus-failure-to-optimise.html</link>
		<comments>http://www.itwriting.com/blog/2031-how-intels-compiler-underperforms-on-other-cpus-artificial-impairment-versus-failure-to-optimise.html#comments</comments>
		<pubDate>Mon, 04 Jan 2010 10:04:03 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[intel]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/2031-how-intels-compiler-underperforms-on-other-cpus-artificial-impairment-versus-failure-to-optimise.html</guid>
		<description><![CDATA[Last month the US Federal Trade Commission sued Intel for anti-competitive practices; and in my post on the subject I tried to make sense of part of the FTC’s complaint <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/2031-how-intels-compiler-underperforms-on-other-cpus-artificial-impairment-versus-failure-to-optimise.html">How Intel&#8217;s compiler underperforms on other CPUs: artificial impairment versus failure to optimise</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/2465-intels-compiler-is-best-for-amd-too-says-software-director.html' rel='bookmark' title='Permanent Link: Intel&rsquo;s compiler is best for AMD too says software director'>Intel&rsquo;s compiler is best for AMD too says software director</a></li>
<li><a href='http://www.itwriting.com/blog/2018-us-federal-trade-commission-sues-intel.html' rel='bookmark' title='Permanent Link: US Federal Trade Commission sues Intel'>US Federal Trade Commission sues Intel</a></li>
<li><a href='http://www.itwriting.com/blog/113-bloor-on-the-failuure-of-antivirus-products.html' rel='bookmark' title='Permanent Link: Bloor on the failure of antivirus products'>Bloor on the failure of antivirus products</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Last month the US Federal Trade Commission sued Intel for anti-competitive practices; and in my <a href="http://www.itwriting.com/blog/2018-us-federal-trade-commission-sues-intel.html">post on the subject</a> I tried to make sense of part of the FTC’s complaint, that:</p>
<blockquote><p>Intel secretly redesigned key software, known as a compiler, in a way that deliberately stunted the performance of competitors’ CPU chips.</p></blockquote>
<p>A few days ago Agner Fog <a href="http://www.agner.org/optimize/blog/read.php?i=49">wrote an article</a> that sheds some light on the subject:</p>
<blockquote><p>The reason is that the compiler or library can make multiple versions of a piece of code, each optimized for a certain processor and instruction set, for example SSE2, SSE3, etc. The system includes a function that detects which type of CPU it is running on and chooses the optimal code path for that CPU. This is called a CPU dispatcher. However, the Intel CPU dispatcher does not only check which instruction set is supported by the CPU, it also checks the vendor ID string. If the vendor string says &#8220;GenuineIntel&#8221; then it uses the optimal code path. If the CPU is not from Intel then, in most cases, it will run the slowest possible version of the code, even if the CPU is fully compatible with a better version.</p></blockquote>
<p>Fog also notes a clause in Intel’s <a href="http://download.intel.com/pressroom/legal/AMD_settlement_agreement.pdf">November 2009 settlement with AMD</a> [PDF] in which the company undertakes not to:</p>
<blockquote><p>include any Artificial Performance Impairment in any Intel product, or require any Third Party to include an Artificial Performance Impairment &#8230; “Artificial Performance Impairment” means an affirmative engineering or design action by Intel (but not a failure to act) that (i) degrades the performance or operation of a Specified AMD product (ii) is not a consequence of an Intel Product Benefit and (iii) is made intentionally to degrade the performance or operation of a Specified AMD product.</p></blockquote>
<p>It is a fine distinction. At what point does failure to optimise constitute “affirmative engineering”? What riles developers is that even when an non-Intel CPU reports support for an optimisation such as <a href="http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions">SSE</a>, the Intel-compiled code will not use it unless it is an Intel CPU. You could argue that this is an inaction (failure to optimise) rather than an action (deliberately running slower); but the end result is the same, worse performance on non-Intel processors.</p>
<p>The obvious practical solution is to use other compilers, but for certain types of work Intel’s compiler is considered the best.</p>
<p>Has Intel now agreed to do a better job? You tell me; I don’t think the clause quoted above tells us one way or another. I do think it is legitimate for the government to press Intel at least to take advantage of obvious optimisations on third-party processors, since this benefits everyone. Even so, Intel will always optimise best for its own CPUs and that is to be expected.</p>
<p>Performance tests are another issue. It is deceptive to produce test results showing performance differences without also revealing that in one case the code is optimised, and in another it is not. That said, if Intel has a smart optimisation that is specific to its own CPUs, there is no reason why it should not trumpet the fact. This is a matter of disclosure.</p>
<p>Finally, developers take note: if you are compiling for a general market that might or might not be using Intel CPUs, maybe the Intel compiler is not the best choice.</p>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4eb01846-4375-4d33-b11d-199ea528348d" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">Technorati Tags: <a rel="tag" href="http://technorati.com/tags/intel">intel</a>,<a rel="tag" href="http://technorati.com/tags/sse">sse</a>,<a rel="tag" href="http://technorati.com/tags/ftc">ftc</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/2465-intels-compiler-is-best-for-amd-too-says-software-director.html' rel='bookmark' title='Permanent Link: Intel&rsquo;s compiler is best for AMD too says software director'>Intel&rsquo;s compiler is best for AMD too says software director</a></li>
<li><a href='http://www.itwriting.com/blog/2018-us-federal-trade-commission-sues-intel.html' rel='bookmark' title='Permanent Link: US Federal Trade Commission sues Intel'>US Federal Trade Commission sues Intel</a></li>
<li><a href='http://www.itwriting.com/blog/113-bloor-on-the-failuure-of-antivirus-products.html' rel='bookmark' title='Permanent Link: Bloor on the failure of antivirus products'>Bloor on the failure of antivirus products</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/2031-how-intels-compiler-underperforms-on-other-cpus-artificial-impairment-versus-failure-to-optimise.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Parallel Programming: five reasons for caution. Reflections from Intel&#8217;s Parallel Studio briefing.</title>
		<link>http://www.itwriting.com/blog/1343-parallel-programming-five-reasons-for-caution-reflections-from-intels-parallel-studio-briefing.html</link>
		<comments>http://www.itwriting.com/blog/1343-parallel-programming-five-reasons-for-caution-reflections-from-intels-parallel-studio-briefing.html#comments</comments>
		<pubDate>Thu, 23 Apr 2009 11:13:28 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/1343-parallel-programming-five-reasons-for-caution-reflections-from-intels-parallel-studio-briefing.html</guid>
		<description><![CDATA[<p>I’m just back from an Intel software conference in Salzburg where the main topic was Parallel Studio, a new suite which adds Intel’s C/C++ compiler, debugging and profiling tools into Visual Studio. To some extent these are updates to existing tools like Thread Checker and VTune, though there are new features such as memory <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/1343-parallel-programming-five-reasons-for-caution-reflections-from-intels-parallel-studio-briefing.html">Parallel Programming: five reasons for caution. Reflections from Intel&#8217;s Parallel Studio briefing.</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/2443-anders-hejlsberg-on-functional-programming-programming-futures.html' rel='bookmark' title='Permanent Link: Anders Hejlsberg on functional programming, programming futures'>Anders Hejlsberg on functional programming, programming futures</a></li>
<li><a href='http://www.itwriting.com/blog/2334-functional-programming-nosql-themes-at-qcon-london.html' rel='bookmark' title='Permanent Link: Functional programming, NOSQL themes at QCon London'>Functional programming, NOSQL themes at QCon London</a></li>
<li><a href='http://www.itwriting.com/blog/310-adobe-air-10-reasons-to-love-it-10-reasons-to-hate-it.html' rel='bookmark' title='Permanent Link: Adobe AIR: 10 reasons to love it, 10 reasons to hate it.'>Adobe AIR: 10 reasons to love it, 10 reasons to hate it.</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I’m just back from an Intel software conference in Salzburg where the main topic was <a href="http://software.intel.com/en-us/intel-parallel-studio-home/" target="_blank">Parallel Studio</a>, a new suite which adds Intel’s C/C++ compiler, debugging and profiling tools into Visual Studio. To some extent these are updates to existing tools like <a href="http://software.intel.com/en-us/intel-thread-checker/" target="_blank">Thread Checker</a> and <a href="http://software.intel.com/en-us/intel-vtune/" target="_blank">VTune</a>, though there are new features such as memory checking in Parallel Inspector (the equivalent to Thread Checker) and a new user interface for Parallel Amplifier (the equivalent to VTune). The third tool in the suite, Parallel Composer, is comprised of the compiler and libraries including <a href="http://www.intel.com/software/products/tbb" target="_blank">Threading Building Blocks</a> and Intel <a href="http://software.intel.com/en-us/intel-ipp/" target="_blank">Integrated Performance Primitives</a>. </p>
<p>It is a little confusing. Mostly Parallel Studio replaces the earlier products for Windows developers using Visual Studio; though we were told that there are some advanced features in products like VTune that meant you might want to stick with them, or use both. </p>
<p>Intel’s fundamental point is that there is no point in having multi-core PCs if the applications we run are unable to take advantage of them. Put another way, you can get remarkable performance gains by converting appropriate routines to use multiple threads, ideally as many threads as there are cores.</p>
<p>James Reinders, Intel’s Chief Evangelist for software products, introduced the products and explained their rationale. He is always worth listening to, and did a good job of summarising the <a href="http://www.ddj.com/architect/184405990" target="_blank">free lunch is over</a> argument, and explaining Intel’s solution.</p>
<p>That said, there are a few caveats. Here are five reasons why adding parallelism to your code might not be a good idea:</p>
<p><strong>1. Is it a problem worth solving?</strong> Users only care about performance improvements that they notice. If you have a financial analysis application that takes a while to number-crunch its data, then going parallel is a big win. If your application is a classic database forms client, it is probably a waste of time from a performance perspective. You care much more about how well your database server is exploiting multiple threads on the server, because that is likely to be the bottleneck.</p>
<p>There is a another reason to do background processing, and that is in order to keep the user interface responsive. This matters a lot to users. Intel said little about this aspect; Reinders told me it is categorised as convenience parallelism. Nevertheless, it is something you probably <strong>should</strong> be doing, but requires a different approach than parallelising for performance.</p>
<p><strong>2. Will it actually speed up your app?</strong> There is an overhead in multi-threading, as you now have to manage the threads as well as performing your calculations. The worst case, according to Reinders, is a dual-core machine, where you have all the overhead but only one additional core. If the day comes when we routinely have, say, 64 cores on our desktop or laptop, then the benefit becomes overwhelming.</p>
<p><strong>3. Is it actually desirable on a multi-tasking operating system?</strong> Consider this: an ideally parallelised application, from a performance perspective, is one that uses 100% CPU across all cores until it completes its task. That’s great if it is the only application you are running, but what if you started four of these guys (same or different applications) simultaneously on a quad-core system? Now each application is contending with others, there’s no longer a performance benefit, and most likely the whole system is going to slow down. There is no perfect solution here: sometimes you want an application to go all-out and grab whatever CPU it needs to get the job done as quickly as possible, while sometimes you would prefer it to run with lower priority because there are other things you care about more, such as a responsive operating system, other applications you want to use, or energy efficiency.</p>
<p>This is where something like Microsoft’s <a href="http://blogs.msdn.com/nativeconcurrency/archive/2009/02/04/concurrency-runtime-and-windows-7.aspx" target="_blank">concurrency runtime</a> (which Intel will support) could provide a solution. We want concurrent applications to talk to the operating system and to one another, to optimize overall use of resources. This is more promising than simply maxing out on concurrency in every individual application.</p>
<p><strong>4. Will your code still run correctly?</strong> Edward Lee argues in a well-known paper, <a href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.html" target="_blank">The Problem with Threads</a>, that multi-threading is too dangerous for widespread use:</p>
<blockquote><p>Many technologists are pushing for increased use of multithreading in software in order to take advantage of the predicted increases in parallelism in computer architectures. In this paper, I argue that this is not a good idea. Although threads seem to be a small step from sequential computation, in fact, they represent a huge step. They discard the most essential and appealing properties of sequential computation: understandability, predictability, and determinism. Threads, as a model of computation, are wildly nondeterministic, and the job of the programmer becomes one of pruning that nondeterminism. Although many research techniques improve the model by offering more effective pruning, I argue that this is approaching the problem backwards. Rather than pruning nondeterminism, we should build from essentially deterministic, composable components. Nondeterminism should be explicitly and judiciously introduced where needed, rather than removed where not needed.</p>
</blockquote>
<p>I put this point to Reinders at the conference. He gave me a rather long answer, saying that it is partly a matter of using the right libraries and tools (Parallel Studio, naturally), and partly a matter of waiting for something better:</p>
<blockquote><p>Law articulates the dangers of threading. Did we magically fix it or do we really know what we&#8217;re doing in inflicting this on the masses? It really come down to determinism. If programmers make their program non-deterministic, getting out of that mess is something most programmers can&#8217;t do, and if they can it&#8217;s horrendously expensive.</p>
<p>He&#8217;s right, if we stayed with Windows threads and Pthreads and programming at that level, we&#8217;re headed for disaster. What you need to see is tools and programming templates that avoid that. The evil thing is what we call shared mutable state. When you have things happening in parallel, the safest thing you can do is that they’re totally independent. This is one of the reasons that parallelism on servers works so well, in that you do lots and lots of transactions and they don&#8217;t bump into each other, or they only interface through the database. </p>
<p>Once we start opening up shared mutable state, encouraging threading, we set ourselves up for disaster. Parallel Inspector can help you figure out what disasters you create and get rid of them, but ultimately the answer is that you need to encourage people to use programming like <a href="http://openmp.org" target="_blank">OpenMP</a> or Threading Building Blocks. Those generally guide you away from those mistakes. You can still make them.</p>
<p>One of the open questions is can you come up with programming techniques that completely avoid the problem? We do have one that that we&#8217;ve just started talking about called Ct … but I think we&#8217;re at the point now where OpenMP and Threading Building Blocks have proven that you can write code with that and get good results.</p>
</blockquote>
<p>Reinders went on to distinguish between three types of concurrent programming, referring to some diagrams by Microsoft’s David Callaghan. The first is explicit, unsafe parallelism, where the developer has to do it right. The second is explicit, safe parallelism. The best approach according to Reinders would be to use functional languages, but he thinks it unlikely that they will catch on in the mainstream. The third type is implicit parallelism that’s safe, where the developer does not even have to think about it. An example is the math kernel library in IPP (Intel Integrated Performance Primitives) where you just call an API that returns the right answers, and happens to use concurrency for its work. </p>
<p>Intel also has a project called <a href="http://techresearch.intel.com/articles/Tera-Scale/1514.htm" target="_blank">Ct</a> (C/C++ for Throughput) which is a dynamic runtime for data parallelism, which Reinders considers also falls into the implicit parallelism category.</p>
<p>It was a carefully nuanced answer, but proceed with caution.</p>
<p><strong>5. Will your application need a complete rewrite?</strong> This is a big maybe. Intel’s claim is that many applications can be updated for parallelism with substantial benefits. A guy from <a href="http://www.nero.com" target="_blank">Nero</a> did a presentation though, and said that an attempt to parallelise one of their applications, a media transcoder, had failed because the architecture was not right, and it had to be completely redone. So I guess it depends.</p>
<p>This brings to mind another thing which everyone agrees is a hard challenge: how to design an application for effective parallelism. Intel has a tool in preparation called Parallel Advisor, to be part of Parallel Studio at a future date, which is meant to identify candidates for parallelism, but that will not be a complete answer.</p>
<h3>Go parallel, or not?</h3>
<p>None of the above refutes Intel’s essential point: that effective concurrent programming is essential to the future of computing. This is an evolutionary process though, and at this point there is every reason to be cautious rather than madly parallelising every piece of code you touch.</p>
<h3>Additional Links</h3>
<p>Microsoft has a handy <a href="http://msdn.microsoft.com/en-us/concurrency/default.aspx" target="_blank">Parallel Computing home page</a>.</p>
<p>David Callaghan: <a href="http://msdn.microsoft.com/en-us/magazine/cc872852.aspx" target="_blank">Design considerations for Parallel Programming</a></p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:aae8f9ef-980e-4416-9f75-95a743b73821" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/intel" rel="tag">intel</a>,<a href="http://technorati.com/tags/parallel+studio" rel="tag">parallel studio</a>,<a href="http://technorati.com/tags/james+reinders" rel="tag">james reinders</a>,<a href="http://technorati.com/tags/concurrency" rel="tag">concurrency</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/2443-anders-hejlsberg-on-functional-programming-programming-futures.html' rel='bookmark' title='Permanent Link: Anders Hejlsberg on functional programming, programming futures'>Anders Hejlsberg on functional programming, programming futures</a></li>
<li><a href='http://www.itwriting.com/blog/2334-functional-programming-nosql-themes-at-qcon-london.html' rel='bookmark' title='Permanent Link: Functional programming, NOSQL themes at QCon London'>Functional programming, NOSQL themes at QCon London</a></li>
<li><a href='http://www.itwriting.com/blog/310-adobe-air-10-reasons-to-love-it-10-reasons-to-hate-it.html' rel='bookmark' title='Permanent Link: Adobe AIR: 10 reasons to love it, 10 reasons to hate it.'>Adobe AIR: 10 reasons to love it, 10 reasons to hate it.</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/1343-parallel-programming-five-reasons-for-caution-reflections-from-intels-parallel-studio-briefing.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delphi and C++ Builder 2009 are available to order</title>
		<link>http://www.itwriting.com/blog/838-delphi-and-c-builder-2009-are-available-to-order.html</link>
		<comments>http://www.itwriting.com/blog/838-delphi-and-c-builder-2009-are-available-to-order.html#comments</comments>
		<pubDate>Mon, 25 Aug 2008 15:03:55 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[codegear]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/838-delphi-and-c-builder-2009-are-available-to-order.html</guid>
		<description><![CDATA[<p>I’m choosing my words carefully, because although the CodeGear/Embarcadero site is now showing Delphi 2009 as the current version, if you click through to the order page it only offers a pre-order. Still, it must be done or thereabouts. US prices are as follows:</p> <p>Delphi 2009: Pro $874.00;&#160; Enterprise $1974.00; Architect $3474.00</p> <p>C++ Builder <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/838-delphi-and-c-builder-2009-are-available-to-order.html">Delphi and C++ Builder 2009 are available to order</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/824-whats-new-in-delphi-2009.html' rel='bookmark' title='Permanent Link: What&rsquo;s new in Delphi 2009'>What&rsquo;s new in Delphi 2009</a></li>
<li><a href='http://www.itwriting.com/blog/1079-embarcadero-rad-studio-2009-is-done.html' rel='bookmark' title='Permanent Link: Embarcadero RAD Studio 2009 is done'>Embarcadero RAD Studio 2009 is done</a></li>
<li><a href='http://www.itwriting.com/blog/954-prism-official-delphi-language-comes-to-visual-studio.html' rel='bookmark' title='Permanent Link: Prism: official Delphi language comes to Visual Studio'>Prism: official Delphi language comes to Visual Studio</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I’m choosing my words carefully, because although the CodeGear/Embarcadero site is now <a href="http://www.codegear.com/products/delphi/win32">showing Delphi 2009 as the current version</a>, if you click through to the order page it only offers a pre-order. Still, it must be done or thereabouts. US prices are as follows:</p>
<p>Delphi 2009: Pro $874.00;&#160; Enterprise $1974.00; Architect $3474.00</p>
<p>C++ Builder 2009 costs the same; or you can get a bundle with both for a relatively small extra cost, eg. $1074.00 for Delphi <strong>and</strong> C++Builder Professional.</p>
<p>Curiously, an upgrade to Delphi 2009 Pro only costs $374.00 (57% discount), but an upgrade to Enterprise is $1274.00 (35% discount). I can’t make sense of this except on the basis that any product labelled “Enterprise” is presumed not price sensitive.</p>
<p>So what’s not in the Pro version? The Enterprise edition adds drivers for server databases in the dbExpress database framework, the DataSnap multi-tier application framework, and a full range of modeling diagrams. Architect bundles <a href="http://www.embarcadero.com/products/erstudio/index.html">ER/Studio</a> Developer Edition, Embarcadero’s database modeling tool, with support for a wide range of database servers. </p>
<p>In other words, the majority of Delphi’s features are in the Pro edition, which is really much the best value, though if you need DataSnap or client-server dbExpress then I guess you have no choice.</p>
<p>The big features here strike me as Unicode in the Visual Component Library; and the new language features, generics and anonymous methods. I’ve not yet looked at the product though, so watch this space.</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5d266b29-4f96-4f67-9f68-c169e549d528" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati tags: <a href="http://technorati.com/tags/delphi+2009" rel="tag">delphi 2009</a>, <a href="http://technorati.com/tags/codegear" rel="tag">codegear</a>, <a href="http://technorati.com/tags/embarcadero" rel="tag">embarcadero</a>, <a href="http://technorati.com/tags/c%2b%2b+Builder" rel="tag">c++ Builder</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/824-whats-new-in-delphi-2009.html' rel='bookmark' title='Permanent Link: What&rsquo;s new in Delphi 2009'>What&rsquo;s new in Delphi 2009</a></li>
<li><a href='http://www.itwriting.com/blog/1079-embarcadero-rad-studio-2009-is-done.html' rel='bookmark' title='Permanent Link: Embarcadero RAD Studio 2009 is done'>Embarcadero RAD Studio 2009 is done</a></li>
<li><a href='http://www.itwriting.com/blog/954-prism-official-delphi-language-comes-to-visual-studio.html' rel='bookmark' title='Permanent Link: Prism: official Delphi language comes to Visual Studio'>Prism: official Delphi language comes to Visual Studio</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/838-delphi-and-c-builder-2009-are-available-to-order.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Visual C++ Feature Pack includes major MFC update</title>
		<link>http://www.itwriting.com/blog/573-visual-c-feature-pack-includes-major-mfc-update.html</link>
		<comments>http://www.itwriting.com/blog/573-visual-c-feature-pack-includes-major-mfc-update.html#comments</comments>
		<pubDate>Fri, 11 Apr 2008 16:02:30 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/?p=573</guid>
		<description><![CDATA[<p>The Visual C++ 2008 Feature Pack is now available for download. It includes an update to MFC (Microsoft Foundation Classes), with classes for an Office Ribbon style interface (if you can live with the legal aspect) and other new GUI controls. There is also an implementation of&#160; the TR1 (Technical Report 1) standard (PDF), <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/573-visual-c-feature-pack-includes-major-mfc-update.html">Visual C++ Feature Pack includes major MFC update</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/620-substantial-net-visual-studio-update-in-service-pack-1.html' rel='bookmark' title='Permanent Link: Substantial .NET, Visual Studio 2008 update in Service Pack 1'>Substantial .NET, Visual Studio 2008 update in Service Pack 1</a></li>
<li><a href='http://www.itwriting.com/blog/591-microsofts-office-ui-patent-trap-watch-out-with-that-mfc-update.html' rel='bookmark' title='Permanent Link: Microsoft&#8217;s Office UI patent trap: watch out with that MFC update'>Microsoft&#8217;s Office UI patent trap: watch out with that MFC update</a></li>
<li><a href='http://www.itwriting.com/blog/536-moonlight-update-silverlight-2-on-linux-hardly-started.html' rel='bookmark' title='Permanent Link: Moonlight update: Silverlight 2 on Linux hardly started'>Moonlight update: Silverlight 2 on Linux hardly started</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The Visual C++ 2008 Feature Pack is now <a href="http://www.microsoft.com/downloads/details.aspx?familyid=D466226B-8DAB-445F-A7B4-448B326C48E7&amp;displaylang=en">available for download</a>. It includes an update to MFC (Microsoft Foundation Classes), with classes for an Office Ribbon style interface (if you can live with the <a href="http://www.itwriting.com/blog/?p=59">legal aspect</a>) and other new GUI controls. There is also an implementation of&nbsp; the TR1 (Technical Report 1) <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf">standard (PDF)</a>, an important update to the ISO 2003 C++ standard library.</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4593cab2-18aa-4ce8-a2ab-a087deeb652d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati tags: <a href="http://technorati.com/tags/microsoft" rel="tag">microsoft</a>, <a href="http://technorati.com/tags/visual%20c++%202008" rel="tag">visual c++ 2008</a>, <a href="http://technorati.com/tags/c++%20tr1" rel="tag">c++ tr1</a>, <a href="http://technorati.com/tags/office%20ribbon" rel="tag">office ribbon</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/620-substantial-net-visual-studio-update-in-service-pack-1.html' rel='bookmark' title='Permanent Link: Substantial .NET, Visual Studio 2008 update in Service Pack 1'>Substantial .NET, Visual Studio 2008 update in Service Pack 1</a></li>
<li><a href='http://www.itwriting.com/blog/591-microsofts-office-ui-patent-trap-watch-out-with-that-mfc-update.html' rel='bookmark' title='Permanent Link: Microsoft&#8217;s Office UI patent trap: watch out with that MFC update'>Microsoft&#8217;s Office UI patent trap: watch out with that MFC update</a></li>
<li><a href='http://www.itwriting.com/blog/536-moonlight-update-silverlight-2-on-linux-hardly-started.html' rel='bookmark' title='Permanent Link: Moonlight update: Silverlight 2 on Linux hardly started'>Moonlight update: Silverlight 2 on Linux hardly started</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/573-visual-c-feature-pack-includes-major-mfc-update.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
