Writing A Technical Article, Pt. 3: Research Begins...

I'm not one of those people for whom the task of composition is a somewhat mechanical extension of increasingly detailed outlines. Nonetheless, research consumes between 80-90% of the time I spend on a technical article (note I said time and not effort -- subjectively, writing text is two or three times …

more ...

Writing A Technical Article, Part 2: Gathering Tools

Probably the biggest difference between academic and commercial writing is this: academic writing is almost always concerned with algorithms and process, commercial writing is almost always driven by a specific set of technologies. In this case, I'm being paid by AMD to explain integration of CodeAnalyst and Eclipse CDT. So …

more ...

C++0x to Incorporate Standard Threading Model

The working groups of the C++0x committee are working hard to complete a major new standard for C++ (there's a big meeting here in Kona in October). If you're not intimate with C++, you may be surprised that such an important language has not had a standard threading model …

more ...

Dynamic Language Runtime / IronRuby Inst-analysis

That Microsoft was going to increase support for dynamic languages is no surprise: they've been talking about that since (at least) PDC '03 and various hires and initiatives have clearly been in the works. I haven't seen the DLR yet, but my big question is: what version / runtime / patch level …

more ...

Exceptions in the Manycore Era

Here's some interesting reading on the challenges of and possible strategies for dealing with exceptions in concurrent versions of C++. The try...catch...finally model of exception handling introduces its own control flow. How will that interact with concurrent models in which you're passing around a "future" (essentially, an IOU …

more ...

When Things Go Awry Writing

I've been writing a series of articles for DevX on concurrent programming. The final installment was supposed to be "Multicore for multimedia." Plan A was to speed up the MAD (MPEG Audio Decoder) processing library using OpenMP. That went well enough except for the fact that the code was so …

more ...

Concurrent Programming in C# Intro

DevX has published my introductory article on concurrent programming in C# (a companion piece to my earlier article on C++/CLI and OpenMP). The interesting thing is that OpenMP makes parallel constructs easier to express in C++ than is possible in C#. On the other hand, C#'s memory management …

more ...

Article on Using OpenMP with C++/CLI

My latest article on DevX shows how easy it is (in the best case) to use OpenMP with C++/CLI. OpenMP is a low-level library to help create concurrent operations. One of things I talk about in the article is that it is at the finest-grain (loops) and the coarsest-grain …

more ...

Example of Surprising Closure Behavior

::: {style="font-size: 10pt; background: white; color: black; font-family: courier new"} What do you expect to be outputted from this program (note that line 19 captures the outer variable "i")?

[    1]{style="color: #2b91af"} [using]{style="color: blue"} System;

[    2]{style="color: #2b91af"} [using]{style="color: blue"} System.Collections.Generic;

[    3 …

more ...

ParallelApply: Distribute Calculations Over Multicore / Processors

This code applies a BackgroundFunction to elements of an IEnumerable using the ThreadPool. If you don't know what that means, it's probably not of interest to you:

::: {style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: Courier New"} [   10]{style="COLOR: #2b91af"}     [delegate]{style="COLOR: blue"} [void]{style="COLOR: blue"} [BackgroundFunction …

more ...