The Nineteenth International Conference on

Parallel Architectures and Compilation Techniques (PACT)

Vienna, Austria, September 11-15, 2010

Programming Ct – Porting Applications to Future Multicore

Tutorial given by Michael Klemm and Peter Hinsbeeck on Saturday, September 11, 2010, 8:30 am – 5:00 pm, Sitzungssaal


Material of this tutorial will shortly be available for download:

Both files contain the same stuff and differ only in the compression algorithms.


Intel® Ct Technology supports a high-level, generalized and portable programming model for data-parallel programming. It simplifies the efficient parallelization of computations over large data sets. Programmers do not need to focus on the implementation details of their data-parallel program, but instead can express a program's algorithms in terms of operations on collections of data. Ct's deterministic semantics avoid race conditions and deadlocks by design, improving reliability and maintainability, and can be used for both rapid prototyping and production-stable codes.

Ct manages the complexity of mapping the high-level description of the program's operations onto an efficient implementation by employing JIT compilation techniques. Its internal JIT compiler dynamically optimizes a program to whatever hardware is used for execution, automatically emitting vectorized and multi-threaded code appropriate for that hardware's microarchitecture. With Ct's JIT compiler it becomes possible to efficiently execute the program on multiple computing platforms (e.g. Intel® SSE, Intel® AVX) without recompiling the application. Ct's JIT compiler is also the key to support upcoming execution environments without the need to recompile a program: updating the Ct library alone, without recompilation of the application, will suffice to enable future platforms.

In this tutorial, we introduce to the participants the programming model and the execution environment of Intel® Ct Technology. We provide an in-depth guide to the basic building blocks of the Ct language: scalar types, dense and sparse vector data types, vector operations, elemental functions, and control flow. We present how Ct fits into an application's control flow and can be used to express different levels of abstraction. Based on real-world scientific codes and other examples, we then show how to construct data-parallel algorithms from these basic building blocks. We demonstrate how to smoothly move an existing sequential code base to a parallel code base. In addition, we illustrate how to make use of external libraries such as the Intel® Math Kernel Library. We close the tutorial with a live demonstration of performance and scalability analysis as well as performance optimization of Ct applications.

Topics Covered:

The topics covered will include the following items:

About Michael Klemm:

Since 2008, Michael Klemm is part of Intel's Software and Services Group, Developer Relations Division. His focus is on High Performance & Throughput Computing Enabling. Michael obtained an M.Sc. with honors in Computer Science in 2003. He received a Doctor of Engineering degree (Dr.-Ing.) in Computer Science from the Friedrich-Alexander-University Erlangen-Nuremberg, Germany. Michael's research focus was on compilers and runtime optimizations for distributed systems. His areas of interest include compiler construction, design of programming languages, parallel programming, and performance analysis and tuning. Michael is a member of ACM and IEEE, and is an active member of the OpenMP Language Committee.

About Peter Hinsbeeck:

Peter Hinsbeeck is a Senior Technical Consulting Engineer with Intel's Innovative Software Education team, charged with enabling the academic community to adopt parallel programming into undergraduate curricula. In addition to participating in commercial software and software tools development, Peter has been responsible for various aspects of user training on Intel tools and technologies including, course and content creation, instructor development, as well as managing the world-wide class delivery team for Intel Software College. Peter studied Computer Science at the University of Oregon where he earned a Bachelor of Science (BS) in Applied Mathematics. He also holds a Masters in Business Administration (MBA) from Portland State University.

© Copyright 2009-2010, PACT 2010. Sponsor logos are copyrighted by their respective companies and institutions.