Of Course The Transformers are Multicore with SMT technology

Moore's Law, Amdahl's Law, Murphy's Law. It's getting to be a bit much.

Some want to make faster chips, while others think that slower chips in greater quantity are the ticket. The arguments over power consumption vs. performance vs. cost can become very squirrly. I just want to know whether the Decepticons and Autobots are multicore -- and if they are multicore, what operating systems do they run and what programming languages were used in the process of getting them to do what they do so fast.

After all, the Decepticons and Autobots are probably a bigger factor in where the parallel question is leading than any of those Laws. I know that sounds a little on the far side of complexity, but just think about it. It will make complete sense in the morning. However, I can say this that our insatiable appetite for immersion will always require more processing power than we currently have, no matter how much processing power that is. Massive parallelism is a necessary inevitability and the Decepticons and Autobots are the proof in the pudding.

If I had to be the one to program the Decepticons and Autobots, I would undoubtedly use C++. In particular, a C++ implementation that is based on the new ISO standard for C++. For now the new standard is referred to as C++0x. It will probably be considered "official" later this year or in 2010, with the final ISO blessing somewhere late 2010 or early 2011. I would use a new C++ implementation because the new C++ standard has direct support for concurrency by way of threading facilities, atomic classes/operations, and other goodies. Also, I would venture to guess that to program the Decepticons and Autobots I would have to talk directly to the hardware at some point and C++ is a good language when you have both high-level and low-level programming (hardware) on the menu. The other reason that I would pick C++ is that it supports multiparadigm programming. Meaning that I'm not stuck with any one programming metaphor. I can use object-oriented, generic, structured, and logic programming techniques along with Spaghetti code (where required). Because of the template library approach that C++ takes, it can also support programming paradigms that haven't been thought of yet. This is good because many of the new paradigms necessary to handle massive parallelism are still on the drawing board. C++ is designed to be extensible which makes it the prime candidate for getting Optimus Prime to do what we need him to do.

C++ and it's STL are also the basis for the STAPL, short for the "Standard Template Adaptive Parallel Library". STAPL (when it gets here) is going to support powerful parallelism and distributed programming models. We could look at the Transformers as autonomous agents in a distributed cluster operating in parallel. In which case STAPL would be just what the doctor ordered. We will have more to say about STAPL but at the moment the new C++ concurrency support and tuple container support has Tracey and I in a tizzy, albeit a good tizzy. GCC is adding support for the new C++ standard, we were just dabbling in GCC 4.3 and there were bits and pieces of the new standard implemented (for experimental use mainly).

Although our focus for the moment is on Level 1 parallelism and deconstructing the complexity of the problem model in Level 1, at some point we do get to the nitty gritty and at that point C++ is always in the mix (beware there are others). If in fact the Decepticons and Autobots are multicore (and we think that has to be the case) then we vote for C++ as the most realistic choice for the heavy lifting.


Real World Parallelism Webinar Series
  • November 17, 2009
    Visual Effects for Animation - presented by DreamWorks Animation
    Speaker: Ron Henderson (Bio)

    Ron Henderson manages the FX Tools group at DreamWorks Animation, where he is responsible for developing physical simulation and procedural modeling tools. These systems have been used for key visual effects in recent films such as Kung Fu Panda and Monsters vs. Aliens (March 2009).

    Prior to joining DreamWorks in 2002 he was a senior scientist at Caltech with a joint appointment to the Applied Math and Aeronautics departments, where he worked on efficient techniques for the direct numerical simulation of fluid turbulence.

    Abstract:
    In this webinar, Ron Henderson will show examples of visual effects, from hair and feathers to smoke and fire, from a variety of DreamWorks Animation feature films. He will discuss in general terms the kinds of techniques used to achieve particular visual effects. Finally, Henderson will show a detailed breakdown of the dam-breaking scene from Madagascar: Escape 2 Africa, demonstrating how different elements of key frame animation, simulation, and rendering are combined in a real production shot.

  • December 1, 2009
    A Quick and Easy Way to Parallelize a Legacy Codebase with Intel® Threading Building Blocks (TBBs)
    Speaker: Bernard Laberge, Avid, Senior Principal Engineer (Bio)

    Bernard Laberge is a senior principal engineer in the video editors division at Avid. During his seven years with the company he has been actively involved in the replacement of the legacy video processing engines used by Avid editors with a common hardware-abstracted, component-based video processing engine currently running on the CPU with SIMD optimized code, GPU, and dedicated hardware.

    Abstract:
    Learn how to overcome the limitations of a thread-based scheduler, including dealing with the absence of recursive parallelism support and the inefficient handling of unbalanced processing load. Bernard Laberge addresses how Avid resolved the expensive refactoring of their thread-based scheduler into a task-based solution by choosing Intel® Threading Building Blocks (TBBs). He explores how Avid was able to easily integrate the Intel TBBs into their video editor applications and more than 5 million lines of code.

  • December 15, 2009
    How to Use Intel® Parallel Studio to Streamline Code Development in a Multicore Environment
    Speaker: Matt Dunbar, Director for Performance Technology, SIMULIA (Bio)

    Matt Dunbar is the director for performance technology at SIMULIA. Since joining the company in 1993, he has worked on parallelization of the Abaqus suite of products, initially for shared memory architectures and more recently for distributed memory architectures. Dunbar has also been intimately involved in selecting both the hardware and software tools used in the development of the Abaqus product line.

    Abstract:
    Resolve elusive, costly multithreading errors quickly and efficiently with Intel® Parallel Studio. While many coding problems that lead to bugs in software applications are typically straightforward logic errors, errors in managing memory and in multithreading code can sometimes take weeks to months to diagnose and fix. Matt Dunbar explores how and why taking advantage of multicore processors through multithreaded code is critical for compute-intensive applications. While spotlighting his work on SIMULIA's Abaqus finite element solver, Dunbar addresses the need for multicore execution and shares his experiences using Intel Parallel Studio to streamline code development in a multicore environment.