Data Parallelism Whitepapers and Tutorials

Whitepapers




Ct Technology: A Flexible Parallel Programming Model for Multicore and Many-Core Architectures

Abstract: Microprocessor design and manufacturing process innovations continue to improve software application performance. However, there is a new challenge of reducing the power consumption while maximizing its performance. To address this challenge, multicore and many-core processors are being designed with power efficiency as one of the main design criteria. Multicore/many-core benefits can be fully realized by writing explicit parallel code. Some of the approaches include writing code using Windows and POSIX threads APIs, MPI, and OpenMP shared memory threaded programming models supported by compilers. However, usage of threads and vector instructions to write the best parallel code requires a great deal of expertise from the programmer. Some of the CPU and GPU programming models available today try to address the challenge by providing implicit/ explicit threading models and streaming data parallelism APIs. Intel Ct provides an abstract scalable API that allows users to focus on development of algorithms rather than becoming experts in the art of wringing out the last bit of performance. In this article, we highlight features of the Ct framework and provide code examples.


Ct: A Flexible Parallel Programming Model for Tera-scale Architectures

Abstract: Processor architecture is evolving towards more software-exposed parallelism through two features: multiple cores and wider SIMD ISA. At the same time, graphics processing units (GPUs) are gradually adding more general purpose programming features. Two key software development challenges arise from these trends. First, how do we mitigate the increased software development complexity that comes with exposing parallelism to developers? Secondly, how do we provide portability across (increasing) core counts and SIMD ISA?


Future-Proof Data Parallel Algorithms and Software on Intel® Multi-Core Architecture

Abstract: Developers face new challenges with multi-core software development. The first of these challenges is a significant productivity burden particular to parallel programming. A big contributor to this burden is the relative difficulty of tracking down data races, which manifest non-deterministically. The second challenge is parallelizing applications so that they effectively scale with new core counts and the inevitable enhancement and evolution of the instruction set. This is a new and subtle change to the benefit of backwards compatibility inherent in Intel® Architecture (IA): performance may not scale forward with new micro-architectures and, in some cases, may regress. We assert that forward-scaling is an essential requirement for new programming models, tools, and methodologies intended for multi-core software development.


Programming Option Pricing Financial Models with Ct

Abstract: Option pricing and risk assessment are important techniques in modern financial engineering. Increasingly, financial engineers are exploring how to implement computation-intensive option pricing models efficiently on evolving modern architectures. This application note describes how to use the Ct programming model to implement several option pricing models-namely, the Black-Scholes, Binomial Tree and Monte Carlo models. We demonstrate how these financial models can be ported to Ct with minimal effort in order to achieve forward-scaling high performance on Intel multi-core platforms.


Tutorials




Intel's Ct Technology: High-Productivity Throughput Computing on Multicore and Manycore Processors

Abstract: Intel's Ct Technology provides a generalized data parallel programming solution that frees application developers from dependencies on particular hardware architectures. It produces scalable, portable, and deterministic parallel implementations from a high-level specification of a computation. Ct Technology is able to harvest both short vector (SIMD) and thread-level parallelism from code in a single source file. It provides portability across multiple current and future processor architectures, and can automatically adapt applications to differences in instruction sets, vector widths, core counts, and cache architecture.  It offers ease of use through a high-productivity API that does not require extensive training and significantly reduces programming time and effort. It is ideal for applications that require data-intensive mathematical computations such as those found in medical imaging, digital content creation, financial analytics, energy, data mining, science and engineering. In this talk we will present the basics of the Ct Technology and supporting tools and then walk through an example application.


Simplify Data Parallelization with Intel's Ct Technology

Abstract:
 Intel offers comprehensive software optimization development tools for Windows* Visual Studio* developers. Now our suite of tools is broadening to address data parallelism with a new high level programming model.  A product based on Intel's Ct Technology will be the focus of this discussion. We'll introduce C++ programmers to the benefits of applying the Ct programming model to their data parallel code. Come hear how to develop highly-parallelized and scalable software that takes advantage of Intel's current and future multi-core processors. We hope to engage in a conversation with attendees on how Ct can be applied to assist programmers in creating productive and performance sensitive parallelized applications. We'll also discuss real world parallelization challenges via examples from a variety of performance sensitive applications.

For more complete information about compiler optimizations, see our Optimization Notice.