Intel Go Parallel
Intel
Getting Started Concurrent Programming Community And Opinion Tools and Tips Advanced Concepts Go Parallel RSS Feed
What does the future hold for concurrency? What will happen to the tools and techniques around concurrent programming? In part two of our series, concurrency guru Herb Sutter talks about these issues and what developers need to be reading to understand concurrency.

In part one of our interview with the concurrency whisperer, Herb Sutter discussed concurrent vs. parallel, migration and scalability of applications. In this final installment he looks into his crystal ball with an eye towards the future and gives developers hints for the resources they need to be better concurrent programmers. More...
Results from the front lines of parallel programming show a promising new shift in attitudes towards concurrency: Developers are increasingly aware of the importance of maximizing multi-core performance, and they see the value of abstractions in helping them get there. »
Intel's James Reinders finds more software developers are interested in concurrency, but they have a new excuse for not diving in: No time. Is this an improvement on the old complaint (concurrency is too difficult) or is an excuse just an excuse? »
Applications that are ripe for pipelining are file compression by directory and performing complex convolutions on video frames.

In our first installment of the Featured Algorithm series, we looked at parallel_for, a popular and easy way to start using Intel Threading Building Blocks to gain performance increases on multi-core platforms. Next, we focus on the pipeline component. A pipeline functions like a factory assembly line, running a stream inputs through a series of filters. Read more »
Intel's James Reinders looks into the algorithms that form the heart of threading building blocksa C++ template library for parallel programming. Play the video >>
Intel's James Reinders delves further into threading building blocks a C++ template library for parallel programming. Play the video >>
Threading serial applications isn't a trivial task. But to take advantage of today's multi-core processors and parallel architectures, you need to think about serializing your applications. This whitepaper will help you in understanding the risks in converting a serial application to a multithreaded one and discusses mitigating those risks with the latest programming tools and techniques available today.
The Threading Methodology used at Intel has four major steps: Analysis, Design & Implementation, Debugging, and Performance Tuning. These steps are used to create a multithreaded application from a serial base code. While the use of software tools for the first, third, and fourth steps is well documented, there hasn't been much written about how to do the Design & Implementation part of the process.
Developing applications for multi-core processors will require developers to introduce threading into their software to allow more instructions to be executed simultaneously. But how you go about doing this really depends upon your objectives, knowledge and how soon you need to deploy your application.
While threading can be a challenge, new software development tools help simplify the process by identifying thread correctness issues and performance opportunities. We present a methodology that has been used to successfully thread many applications and discuss tools that can assist in developing multi-threaded applications.
This paper describes the performance analysis phase of the threading methodology we presented in our previous paper, "Best Practices for Developing and Optimizing Threaded Applications."
Mimicking the Carnegie Mellon Capability Maturity Model for defining software development organizations' efficiency, several authors have proposed threading maturity levels to evaluate developers' understanding of this difficult topic. The idea is simple enoughperhaps too simple?
Download this eBook of our 6-part series on managing multi-core projects. Chapters include:
  • HPC on the Parallelism Frontier
  • HPC Project Implementation
  • Multi-Core Development in the Enterprise
  • The Enterprise Development Cycle Meets Multi-Core
  • Desktop Software Considerations
  • Diving Deeper on Consumer Software
  • HPC may be on the leading edge, but key advice like going parallel early, thinking strategically, and spreading knowledge throughout the team applies to all development managers. This is part one of a planned six-part series on managing multi-core development projects.
    Multi- and many-core chips are entering the mainstream—and one of the first software development authorities to take note was C++ expert Herb Sutter. Thanks to his practical insights, a new generation may grok concurrency sooner than previously thought possible.
    Threading Building Blocks (TBB) is now open sourced and supported by some very impressive veteran parallelism experts. Come check it out.
    Performance gains did not come about solely because of increasing transistor densities. They have also relied heavily on another physical factor that is closely related to transistor size: processor clock frequency. Learn what Intel is doing to improve performance even further.
    The Intel® Threading for Multi-Core Community provides technical information, tools, conversation and support for the development of parallel programs and multi-threaded applications on multi-core and multi-processor platforms.
    This paper discusses the approach to parallelize the Data Encryption Standard (DES) algorithm with Intel® Threading Building Blocks and how it can scale for future processors.
    This whitepaper provides a high-level overview of debugging on Intel processor-based platforms for technical decision makers. It catalogues the relevant debuggers and describes the features and benefits of each with references to additional information.
    Explicit threading methods, such as Windows or POSIX threads, use library calls to create, manage, and synchronize threads. Use of explicit threads requires an almost complete restructuring of affected code. On the other hand, OpenMP is a set of pragmas, API functions, and environment variables that enable you to incorporate threads into your applications at a relatively high level. Find where parallelism can be implemented effectively within a serial application.
    The industry shift to increasing levels of hardware parallelism through higher numbers of execution cores in mainstream processors requires change on the part of software makers. One key requirement is to look ahead to the hardware resources that are likely to be available in the future and to make appropriate architectural decisions in advance to accommodate them. This paper contributes to the discussion about planning for those developments.
    Grid computing based on Web services provides a compelling means for enterprises to create High-Performance Computing infrastructures. Adding to the inherent cost/performance advantages of grid networks based on Intel® Xeon® processors and/or Itanium® processors, building solutions from pre-existing Web services adds efficiency and simplifies the addition of standards-based core functionality to those systems. For those organizations that want expert external guidance in the development of such systems, Intel® Solution Services, Intel Corporation’s worldwide professional services organization, offers assistance that can range from minor decision support to full consulting and design services.
    "Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97 percent of the time: premature optimization is the root of all evil."        —Donald Knuth (adapted from C. A. R. Hoare)
    Creating multithreaded applications requires more than just the compiler, regardless of the operating system. That's why Intel has filled the gap with the release of Intel C++ and Fortran Compiler Professional Edition 10.0, bundling the compiler with key libraries to simplify multi-threaded application development and continuing to provide multi-threaded software development tools that support multi-core processors.
    How Can Theory of Constraints Help in Software Optimization?
    Performance Scaling in the Multi-Core Era
    » More Personalized Content
    Can Google Make Concurrency Commonplace?
    With the April 7, 2008 preview release of Google App Engine, a new legion of Web developers may rethink their let-them-eat-cake take on concurrency. Google App Engine is a novel developer tool for building and running scalable web applications on Google's infrastructure. But this ain't a free lunch, folks. Read more...
    May 6
    Cluster nodes can be quickly replaced or rebuilt if problems arise. ICR clusters provide fully automated installation of nodes, as required by the specification. It also assures that a single binary application can run on different interconnects. This seminar will demonstrate available ICR solutions requiring minimal IT management.
    More...
    May 13
    A systematic approach to symptom analysis can help solve multi-core performance and correctness issues. We will cover a set of symptoms and their possible causes. These include slowdown despite adding cores or increasing the number of threads, slowdown when giving threads larger pieces of work, slowdown due to scheduling issues, and slowdown/errors due to synchronization, etc.
    More...
    What concurrency info do you need right now?
    (Choose your top answer.)
    An introduction
    Threading basics
    Advanced parallelism concepts
    Optimization tools and techniques

    View Results
    Past Votes
    DevX Intel Go Parallel Update

    More Newsletters