1,227 Posts served
5,086 Conversations started
|
I have more than 25 years of software engineering experience, with the focus since 1993 being on development of multithreaded high-volume data processing and mathematical modeling and simulation systems, on Unix and Windows platforms, programming in C, Fortran, and C++. In addition to developing software, I work for O'Reilly Media as an online community manager, editor, and blogger/writer. |
The March Threading Building Blocks poll suggests that the developer community is learning about TBB, but not that many developers are actively applying TBB in actual projects. The poll asked: At what project level are you currently applying TBB? 81 people participated in the poll, making the following selections: 75.3% (61 votes) - Just getting started (learning about [...]
I just finished adding new information to the Threading Building Blocks entry on Wikipedia (http://en.wikipedia.org/wiki/Threading_Building_Blocks). I added information on what's happened since TBB became an open source project, and I also added two new sections: Open Source Operating Systems that Offer TBB Packages Open Source Projects that Apply TBB I consider Wikipedia one of the greatest new [...]
In my last post I talked about the availability of Threading Building Blocks packages in Debian Linux, Ubuntu Linux, and the Fedora Project. In this post, I'll investigate TBB's availability in other Linux distributions and also in FreeBSD. Commercial TBB supported Linux distros The Commercial TBB site includes a System Requirements section that identifies several Linux [...]
Most of the people I've conversed with who are developing applications using Threading Building Blocks are working on Linux platforms. On the #tbb IRC channel, I've talked with people who are working with TBB on Gentoo, Debian, and Ubuntu Linux, and I'm sure several other distributions are represented as well. Threading Building Blocks can be [...]
In my recent "Superlinearity Is Impossible; We Just Don't Always Think Correctly" I argued that algorithmic processing superlinearity is impossible. It might appear that a parallel application was achieving superlinearity, but that appearance was due to factors other than the algorithm itself engendering a more efficient computation. For example, memory access might be more [...]
An article in this past Saturday's Wall Street Journal (WSJ) titled "Racing to Gain Edge On Multicore Chips" talks about an effort being jointly funded by Intel and Microsoft for research on programming techniques suited for multi/many core computers. The article talks about the predicted many-core future: Intel and rival Advanced Micro Devices Inc. [...]
I just received the April 2008 edition of Dr. Dobb's Journal (in my physical mailbox), and in this issue Herb Sutter continues his discussion of super linearity (where parallelizing a function produces a greater performance improvement than the number of applied processing cores). Here's Herb's article: "Super Linearity and the Bigger Machine". I've thought a [...]
The Threading Building Blocks development team has moved to a weekly development release schedule recently: there have already been two early March releases following the February 26 release that I blogged about in my last post. In this post, I aim to catch up with the development team! 2008 March 4 TBB Development release The CHANGES [...]
The tbb20_20080226oss development release of Threading Building Blocks includes the following changes (as listed in the CHANGES file included with the release): Introduced tbb_allocator to select between standard allocator and tbb::scalable_allocator when available. Removed spin-waiting in pipeline and concurrent_queue. Improved performance of concurrent_hash_map by using tbb_allocator. Improved support for Intel® Thread Checker. Various improvements to code, tests, examples and Makefiles. I [...]
My last post about hacking Threading Building Blocks into Cygwin ended with an "Unknown OS" error in file src/tbb/tbb_misc.h. This was a good sign because it meant I had things configured correctly enough for my Cygwin GCC compiler to actually start building TBB. To reiterate, what I'm trying to do is indeed a "hack"; I'm [...]
My first blog post about Threading Building Blocks and Cygwin didn't include "Hacking" in the title -- but that's definitely what I'm doing at this point, so this and subsequent posts will be titled that way. If/when I reach the point where I know how to build and use TBB within the Cygwin environment, [...]
I've seen a lot of interest within the Threading Building Blocks community in using TBB on "Unix-on-Windows" platforms, such as Cygwin, MinGW (Minimalist GNU for Windows), and UWIN. I'll be getting back to my "Building Threading Building Blocks on UWIN" investigation soon; but this morning I'm taking a look at TBB and the Cygwin [...]
A new Threading Building Blocks download category has been added to the TBB Download tab: Extras. The Extras category will have downloads "that may be useful in addition to the Intel Threading Building Blocks software downloads." The first Extras download is the msvs_plugin, which "provides a simple mechanism to set up and use TBB with [...]
Adrien Guillon, founder of the YetiSim open source project, and Deborah Loach (co-designer of YetiSim) will be presenting a poster session titled "YetiSim: A C++ Simulation Framework Executing State Diagrams Instead of Coroutines" at the Spring Simulation Multiconference 2008 (SpringSim'08), April 14-17, in Ottawa, Canada. The YetiSim project applies Threading Building Blocks to parallelize [...]
The February Threading Building Blocks poll indicates that the TBB algorithms (parallel_for, parallel_reduce, pipeline, etc.) are the components that are most widely used by developers at this time. 48 developers participated in the poll. The specific poll question was: Which class of TBB component have you applied the most thus far? The response options and results [...]
A new commercial-aligned version of open source Threading Building Blocks was posted on the TBB Download tab yesterday. The new version is tbb20_017oss. I compared the tbb20_017oss source with the source code for the previous commercial aligned release (tbb20_014oss) and found not too many significant differences, if you're talking about the number of lines [...]
Installing and configuring Threading Building Blocks for use in developing Windows applications using Visual Studio is getting easier, thanks to Dave Vanden Bout, owner of the /// Parallelism Panorama /// blog. In his latest entry, "Making TBB a bit easier...", Dave talks about and offers for download a TBB project template for Visual C++ [...]
More evidence of the penetration of Threading Building Blocks into Computer Science and Engineering departments at colleges and universities: last night, a University of Michigan Computer Science undergraduate student came onto the #tbb IRC channel (on FreeNode.net), telling us: I just finished an exam on concurrency and TBB, got to exploring and saw mention [...]
I just received the March edition of Dr. Dobb's Journal (yes, I still get the printed version). Inside, there is an article by Herb Sutter titled "Going Superlinear". The article posits what at first glance appears to be a rather curious, and perhaps far-fetched, concept: the notion that N processors can produce a performance [...]
A new Threading Building Blocks development release is posted on the TBB Download site every week or two. The last release that I covered in a blog post was December's tbb20_20071218oss release. There have been three new development releases thus far in 2008. In this post I'll try to catch up with the development [...]
While scanning for blog posts about Threading Building Blocks tonight, I came across a nice little tutorial about "Getting started with TBB" (on Windows). The post describes the procedure the author used to get the tbb20_014oss commercial aligned release installed and working in the Windows environment. The author used three free Microsoft software components to [...]
Day 2 of the Money:Tech Conference included an interview / conversation with Richard Bookstaber, author of the book "A Demon of our own Design". The book was included in the bag of goodies that was given out to conference attendees. One thing I learned at Money:Tech is that the financial markets have become increasingly dominated [...]
Day one of the Money:Tech Conference covered many different aspects of modern investing and technology. While it's clear that computation algorithms and automation have become a significant component of institutional investing, many in the audience, along with some speakers, identified themselves as either being on the "money side" or on the "tech side." Tim O'Reilly [...]
I received an interesting email this morning, the Dr. Dobb's Report, a newsletter I subscribe to. The lead article is titled "Swarm Algorithms and (Better) Digital Photos." Whenever I see something like this, I am immediately reminded of the potential benefits of multicore processors on home computers. Surely, if there's a way to improve [...]
The January Threading Building Blocks poll asked developers to select the area where we'll see the most important software development technology advance in 2008. The 43 responses produced no clear consensus. Here is the actual poll statement and the results: The most important software development technology advance in 2008 will involve: 32% (14 votes) - Scalable [...]
Continuing my effort to create an application that has a Python GUI and a back-end C++ computation engine that is threaded using Threading Building Blocks, I followed the instructions in the "Boost.Python Build and Test HOWTO" about how to relocate my Boost.Python "quickstart" application, so I can modify it as I'd like. The relocation [...]
In my last post, I installed the Boost C++ libraries onto my Windows machine, and verified that the installation was successful. Now it's time to get Boost.Python operational, so I can get closer to my objective of creating a Threading Building Blocks application that is run using a Python user interface. The Boost installer created [...]
Several months ago, I began working on integrating Threading Building Blocks with scripting languages, such as Perl and Python. In the past week I've reexamined this problem from a new point of view: focusing on a single scripting language, rather than trying to come up with a single solution that will work for multiple [...]
There have been two Threading Building Blocks development releases since I created my TBB open source release versions matrix. In this post, I'm going to take a look at the first of these releases, the tbb20_20071218oss release. tbb20_20071218oss changes All TBB releases now come with a CHANGES file that is located in the top level directory [...]
I came across a very interesting blog post as I was perusing the Net last night. Bob Warfield, who writes the SmoothSpan Blog, which focuses primarily on SaaS and Web 2.0, posted a very interesting blog titled "Apple, MacWorld, User Experience, and the Multicore Crisis". Bob seems to agree with several points that I've repeatedly [...]
You may have noticed some recent changes and additions to the Threading Building Blocks site in the past month or so. But in case you haven't seen everything new, I'll point out some of the changes in this post. TBB open source documentation The TBB Documentation tab has a new look, and new documents. Originally, the [...]
The upcoming Money:Tech Conference (February 6-7, New York City) didn't attract my attention initially. The conference home page subtitles the conference "Where Web 2.0 Meets Wall Street" -- which implies something other than the type of problem we try to solve using Threading Building Blocks. My view about the conference changed during my recent investigations [...]
In my last post I mentioned that Sadiq Jaffer had created Ubuntu Bug #181137, requesting syncing of the Debian TBB packages into Ubuntu Hardy Heron, which is scheduled to be released in late April. Despite the fact that the Hardy Heron Debian import freeze occured on December 13, the Ubuntu team has chosen to sync [...]
My last post ended with me having used Debian's apt package manager to install the libtbb2 and tbb-examples packages on my Debian 4.0 (Etch) machine. When I attempted to make the examples, error messages were displayed, including missing *.h include file messages. Had it not been so late at night, I would have continued my [...]
In my last post, "Threading Building Blocks Debian Linux Packages", I successfully added Debian TBB package maintainer Roberto Sanchez's personal Debian Etch package site to my /etc/apt/sources.list on my Debian 4.0 (Etch) system. One more step was necessary in order for me to be able to actually access Roberto's packages: apt-get update This is necessary to [...]
Threading Building Blocks has been packaged for installation on Debian Linux systems using Debian's apt (Advanced Packaging Tool) package manager. I found out about this on the #tbb IRC channel from the Debian TBB package maintainer, Roberto Sanchez. TBB packages are available for the sid (unstable) Debian release at http://packages.debian.org/source/sid/tbb. The packages are based on the [...]
The results of the most recent Threading Building Blocks poll suggest that most developers believe that multithreaded applications will begin to dominate the marketplace any time between now and the next five years. The poll, which ran from December 5, 2007 through January 2, 2008, asked: When will multithreaded apps begin to dominate the [...]
A quick note for developers who try to build Threading Building Blocks on an Itanium processor system running Linux and GCC; if you get an error stating something like this: make[2]: ias: Command not found there is probably a solution available. The ias command is attempting to invoke the Itanium Assembler program, to build the assembler portion of [...]
In my last post, I outlined the Threading Building Blocks build structure. In this post, I'll look at the makefiles for a particular platform. Once you understand how these makefiles are organized, you'll have a roadmap for porting TBB to new platforms. I'll use Linux with GCC as the example platform for this post. The makefiles [...]
My work on building Threading Building Blocks on UWIN led me to a fairly detailed study of the TBB build structure. Having studied this, and not finding documentation of it elsewhere, I thought I'd share what I've learned thus far, before I return to my UWIN work. The TBB build directory When you download and unpack a [...]
Part 3 of my investigation of how to build Threading Building Blocks on the UWIN platform ended with a an error message telling me that include file cstddef could not be found. The reason for this was immediately apparent when I opened up the include/tbb/tbb_stddef.h file that calls for cstddef. There I saw: #include <cstddef> /* [...]
In Part 2 of this series on building Threading Building Blocks on the UWIN platform, I had reached the point where much had been resolved; but my UWIN build was returning "unknown" as the value of the TBB runtime variable. The next step was to trace how runtime gets set and figure out what I [...]
I'm continuing to work on building Threading Building Blocks from the source within a UWIN environment on my quad-core Windows system. What I've realized since my Part 1 post, is that what I'm doing is somewhat akin to a "port" of TBB. It's maybe not completely a port, but I am working with a set [...]
For years I have installed the open source UWIN package, developed by AT&T Research and others, on all my Windows systems. I like having Unix tools available for use whenever I consider it more convenient to use them than Windows tools. Some recent installs onto my quad-core Windows system broke my UWIN 4.1 installation. Attempts to [...]
If you visit the Threading Building Blocks Downloads tab, you'll notice some changes. For the first time, there are now releases designated as "Stable Release," in addition to the "Commercial Aligned Release" and "Development Release." The "Stable" category has been there from the start, but there were previously no releases that carried that designation. TBB release [...]
I've posted a new poll on the Threading Building Blocks home page. In a September poll, more than half of the respondants said they expect 16-core PCs to be available for under $1000 in 2012. If this actually happens, there's going to be a lot of idle hardware in homes and offices -- unless a [...]
In the most recent Threading Building Blocks poll, a strong majority of respondants stated that the percent of today's developers who know how to develop multithreaded code is 10% or less. The specific question asked was: What percent of developers today know how to develop multithreaded code? The results for each response option were: 110 votes (70%) - 10% [...]
On the Threading Building Blocks IRC channel (#tbb on FreeNode) this morning, a question was asked about memory, specifically cache. The question came up: are there any good references on how to program to effectively utilize cache? A while later, the article series "What every programmer should know about memory" by Ulrich Drepper was suggested by [...]
In my first code walk post about the Threading Building Blocks Convex Hull example problem, I walked through the code that sets up the problem, including initialization of a sample data set. In my next post, I displayed the created input data set in image form. In this post, I'll continue walking through the code [...]
Yesterday Microsoft announced the "Parallel Extensions to the .NET FX CTP" (Community Technology Preview). Called ParallelFX for short, the new technology runs on .NET FX 3.5, relying on features available in C# 3.0 and Visual Basic 9.0. I've downloaded .NET FX 3.5 and ParallelFX and started looking into what ParallelFX offers, in comparison with Threading Building [...]
In my conversations with the Threading Building Blocks community, people have said that more code samples would be helpful. To organize the available TBB code samples, a new TBB Code Samples page has been posted. The page categorizes the currently available TBB code samples, including the examples that come with the source download and some [...]
The latest Threading Building Blocks development release (tbb20_20071030oss) includes an important new feature: the parallel_do component. You can read some of the discussion that led to the development of parallel_do in the "Making parallel_while Better?" thread in the TBB Forum. This discussion is continued in the "parallel_do: the replacement to parallel_while" thread. Why parallel_do? Among the points [...]
This morning a new Threading Building Blocks user came online on the #tbb IRC channel, with some questions about how to build TBB on Ubuntu. The developer had downloaded the latest Threading Building Blocks development release (tbb20_20071030oss), unpacked the tbb20_20071030oss_src.tar.gz file, entered the created directory, and typed make. Ubuntu's arch omission Here's the result the developer received [...]
The SC07 Conference in Reno, Nevada comes to a close today. No, I'm not there, but I found out that some people on the Threading Building Blocks team are attending, so I took a look a look. The conference program is a 229-page PDF document that contains abstracts of tutorials, papers, poster presentations, panels, etc. [...]
You may have noticed a change that was in place on the Threading Building Blocks download pages for a few days recently, where when you clicked a "Download" link (see, for example, the 20071030 Development Release page), a Javascript function was activated, asking for your email address (optional). You can't see this popup now, because [...]
I ended my last post with a promise to provide some graphics that would illustrate the type of data that is created as the input for the Threading Building Blocks Convex Hull example problem. I modified the program to print the data points created by the call to initialize_buf() in main() in the convex_hull_sample.cpp file, then [...]
In my last post I talked about the convex hull problem and some of the algorithms researchers have invented to solve it. In this post, I begin looking at the solution that comes with the Threading Building Blocks example problems. The TBB convex_hull_sample.cpp program (found in the examples/parallel_reduce subdirectory) applies the QuickHull algorithm to solve convex [...]
I was browsing the examples that are part of the Threading Building Blocks source code download, seeking an example that illustrates how to apply the concurrent_vector component, and my grep executions brought me to the examples/parallel_reduce/convex_hull directory. This directory contains the source code for two programs that apply the QuickHull algorithm to solve convex hull [...]
The latest Threading Building Blocks poll, which ended on November 5, shows that a significant number of developers are interested in contributing to the TBB code base. 44% of the votes cast in the poll indicated the developer would like to occasionally or actively participate in TBB development. The poll question was: "To what degree do [...]
In this post, I'll look at the code that applies the Threading Building Blocks pipeline class to a simple problem. I talked about the task that the text_filter.cpp example (available with the TBB source code download) solves in my last post. There, we found that a task that sounds simple often can have unexpected complexity [...]
As promised in my "The Future of Data Center Pipeline Processing" post, I'm continuing my investigation of the Threading Building Blocks pipeline component, using the text_filter.cpp example that is provided with the TBB source download as my test case. Statement of the problem The task that is performed by the text_filter.cpp example is simple enough: read a text [...]
"A panel of programming language experts sees parallel programming as the next hurdle," according to an eWeek report about the Object-Oriented Programming, Systems, and Languages (OOPSLA) 2007 conference. C# creator Anders Hejlsberg said: "Going forward, the big challenge we have today is we have to really think deeply about programming for concurrency. The models we have [...]
I've worked for a long time in data centers where very large amounts of incoming data are processed through a chain of software applications, many of them applying complex algorithms and mathematical models, then finally reducing the data to produce a set of graphical and tabular end products the investigator can review to assess quality [...]
As soon as I started the Threading Building Blocks #tbb channel (on the FreeNode IRC network), I saw that TBB is a technology that is immediately attractive to graduate and undergraduate students. It's true that the participants in an IRC chat room are not statistically representative of the full software developer population; but, in a [...]
In earlier posts I reviewed three of the four winning submissions to the "Coding with TBB" contest that was launched at OSCON and which completed on August 31. In this post I look at the fourth winning entry, AJ Guillon's YetiSim. YetiSim is: a discrete event simulation library for C++ built with Intel's Threading Building Blocks. YetiSim [...]
While ThreadingBuildingBlocks.org is the central site for "all things TBB," I've noticed that quite a few people have attempted to download Threading Building Blocks from the SourceForge.net/projects/tbb site. Before today, when such downloads were attempted, it would appear that a standard SourceForge download was about to begin -- but then it would hang, with no [...]
I was browsing the the schedule for this week's Web 2.0 Summit (which I'm not attending), and I was struck by the fact that in my quick perusal I saw no mention of multicore processors and the implications of that revolution on the future of the Web. Multicore may be in there somewhere, but it [...]
The near-term product roadmap for the Threading Building Blocks project has been posted. This is an opportunity to for developers to learn about the current direction of TBB development efforts, and also to ask questions or comment on the current plan. Ongoing TBB development The planned and ongoing TBB development can be divided into five main categories: I/O [...]
A new Intel contest that's perfectly suited for Threading Building Blocks developers is now under way. The Intel Threading Challenge invites you to "thread your way to prizes." Josh Bancroft announced the contest yesterday in his "Developer Contest: Win a Mac Book Pro in the Intel Threading Challenge" blog post. I'll fill in some of [...]
Threading Building Blocks Commercial Aligned Version 20_014 is now available on the TBB Commercial Aligned Release Downloads page. The primary changes in this version, compared with the previous commercial aligned release (20_010), are as follows: additional platform support removal of some unneeded warning messages new function: blocked_range3d Platform support The term "commercial aligned" means this is a version of Threading [...]
If you read this blog, chances are you're interested in parallel programming, concurrency, multicore processors, clusters, etc. This Fall, Intel is presenting a series of webinars, in association with Dr. Dobbs Journal. I received notification in an email. The series sounds very interesting, so I thought I'd post the information here. The webinar series is [...]
The results of the latest ThreadingBuildingBlocks.org poll clearly state that the people who chose to vote believe that low-end PCs will have many processing cores five years from now (in 2012). Here are the final results of the (unscientific) poll, which ran from September 13 through September 30: How many processing cores will a [...]