What is the Tribble Effect?
The original Star Trek episode 'Trouble with Tribbles' was not exactly my favorite episode. Far from it as a matter of fact. But now it has revitalized itself for me because 'the trouble' in this episode describes a very fascinating situation.
If you don't recall the episode or if you are not a fan of the original Star Trek, here is the summary:
The U.S.S. Enterprise receives an order to protect a shipment of quadrotriticale grain that is stored on a space station. Quadrotriticale grain is to be transported to Sherman's planet that is currently struck with a famine. At the same time the Klingons (enemies of the Federation) are taking shore leave on that same space station. The Federation Undersecretary for Agriculture believes the Klingons may try to steal the grain.
A space trader, Cyrano Jones, gives Uhura (Enterprise's communication officer) a purring ball of fluff known as a tribble. Tribbles are born pregnant and the more they eat the more they multiply. They inevitably get into the storage compartment and eat all of the grain. But what they soon discover is the bins that were once full of the quadrotriticale grain are now full of dead tribbles. McCoy (ship's doctor) determines that the grain was impregnated with a virus that builds up inert matter in the bloodstream. The more grain the tribble ate the more inert matter built up. Eventually the tribble while gorging on the grain fails to ingest enough nourishment. So the fascinating situation as described by Captain Kirk is:
In a storage compartment full of grain, they starved to death.
The tribbles were consuming what they needed to survive but instead of surviving, they died. You are expecting one result (the survival of the tribbles) and the conditions to produce that result is present (access to the grain) but the opposite is what is produced (death of the tribbles). This is what I call the Tribble Effect:
A state in which the conditions for a desired result is present but the opposite is produced.
In a previous blog 'How many threads are enough' we referred to the adage, 'you can never have enough processors' as not being true. The question being how many processes, tasks, or threads should a program be divided into? At what point does adding more threads, processors or computers to the computation pool slow things down instead of speeding them up? Is there an optimal number of processors for any given parallel program? Once you keep adding threads or utilizing more processors and performance starts to decline, at that point you have reached the Tribble Effect.
We see the Tribble Effect in other situations as well. Consider this, we have access to more information than at any point in our history. Yet, in seems to be the case as Cameron and I see it, some pockets of the public are less informed than ever. Is this the Tribble Effect in action? Do you see other cases of the Tribble Effect?
This Week's Multicore Reading List
Advanced Computer Science and Ruby and Rails
Performance Optimization for the Atom Architecture
The focus of multi-core processor tuning is on the effective use of parallelismParBenCCh 1.0 Parallel C++ Benchmarking Suite
Parallel Patterns in Seismic Duck: Part 3
- Quick Evaluation Guide: Locate a Hotspot and Optimize It
- Quick Evaluation Guide: Eliminate Memory Errors and Improve Program Stability
- Quick Evaluation Guides: Optimize an Existing Program by Introducing Parallelism
- Case Study RTT: Driving Automotive Design Innovation, Efficiency, and Cost Savings
- Case Study Sentinelle: Achieving Early and Accurate Detection of Cancer
- Intel Parallel Studio; Download the free eval today!
- Parallelism Breakthrough Video Series; Watch and learn more about Intel® Parallel Studio
- 2009 Intel Software Webinar Series; View On-Demand webinars
- Coding for Multi-core Processes; Intel® Compiler Pro eBook
- Performance Through Parallelism; Intel® Tuning for Vista eBook
- Intel® Software Network; Connect with developers and Intel engineers
-
September 13, 2010
The goal of the Third International Workshop on Parallel Programming Models and Systems Software for High-End Computing is to bring together researchers and practitioners in parallel programming models and systems software for high-end computing architectures. Please join us in a discussion of new ideas, experiences, and the latest trends in these areas at the workshop.
Parallel Architectures and Compilation Techniques
-
September 11-15, 2010
The International Conference on Parallel Architectures and Compilation Techniques (PACT) is a premier international forum for the presentation of research results in parallel computing. As a multi-disciplinary conference that brings together researchers from the hardware and software areas, PACT brings together researchers and practitioners in parallel systems to present ground-breaking research related to parallel systems ranging across instruction-level parallelism, thread-level parallelism, multiprocessor parallelism and large scale systems.
IDF2010
-
September 13-15, 2010
The Intel Developer Forum 2010 is your opportunity to collaborate with thousands of key industry players. Hear from more than 150 leading technology companies from around the world. Ask questions, get answers, experience live demonstrations, and more. Between the highly informative Keynotes, Technology and Industry Insights, Intel Fellows Live & Uncensored and Technical Sessions (including lectures, interactive panels, hands-on labs and Hot Topic Q&As), this year's IDF has everything you need to stay on top of the latest technology trends.
-
February 12-16, 2011
The Symposium on Principles and Practice of Parallel Programming is a forum for leading work on all aspects of parallel programming, including foundational and theoretical aspects, techniques, tools, and practical experiences. In the context of the symposium, "parallel programming" encompasses work on concurrent and parallel systems (multicore, multithreaded, heterogeneous, clustered systems, distributed systems, and large scale machines). Given the rise of parallel architectures into the consumer market (desktops, laptops, and mobile devices), PPoPP is particularly interested in work that addresses new parallel workloads, techniques and tools that attempt to improve the productivity of parallel programming, and work towards improved synergy with such emerging architectures.


