Concurrent Programming with Threads Tutorial

Level of Presentation: 50% Begineer, 30% Intermediate, 20% Advanced
Multithreaded and distributed computing are gaining a wide popularity in the area of high performance computing. Availability of high performance computer networks and sophisticated software environments are allowing to perform parallel/concurrent computing on commodity hardware. Recently, threads have become powerful entities to express parallelism on these shared memory multiprocessor (SMPs) and multicomputer (MPPs/Clusters) systems. In multiprocessors, threads are primarily used to simultaneously utilize all the available processors whereas, in uniprocessor/multicomputer system, threads are used to utilize system resources effectively by ex- ploiting the asynchronous behavior (i.e., opportunity for computation and communication overlap) of threads. These factors have given an impetus for further popularity of multithreading.

This tutorial aims at addressing the issues related to multithreading by taking a few popular thread models supported by POSIX, Solaris, and Java, and distributed computing by taking OSF/DCE as a model. Multithreaded hardware architectures and multithreaded operating systems with example systems will also be discussed. All the topics will be dealt from basic with suitable multithreaded programming examples. This allows one to appreciate how multithreading will benefit for high performance computing. At the end of this tutorial, you should be able to evaluate the suitability of threads to your application, and you should be able to use the literature/documentation supplied by your vendor and start with development of multithreaded code. This tutorial is targeted at acade- micians, application programmers, systems and server designers, operating systems and programming environment developers.

Concurrent Programming with Threads
(Hardware, Operating System, and Programming)

Part A: Overview of Computing

Eras of Computing
Computing Paradigms
Grand Challenging Applications
Introduction to parallel, distributed and multithreaded computing
Computing Architecture models: hardware and software perspective
Laws of caution
Multithreaded operating systems
Levels of Programming
Modes of Parallelism:
Divide and conquer techniques
Data, process, and farming approach to parallelism

Part B: Multithreaded Computing

Multithreaded hardware architectures
Threads concept
Computational Model
Multithreading and its benefits
Multithreading on uniprocessor system
Multithreading on multiprocessor system
Multithreaded Operating Systems:
Microkernel based multithreaded operating systems:
Concepts, design, and example systems such as Solaris and Mach. Multithreaded Programming:
Threads fundamentals, benefits, kernel and threads interaction, threads scheduling, grain size of a thread, thread model, thread abstractions, computational model, processes and threads, thread structure, operations on threads, threads standards.
Threads API: POSIX and Solaris Threads
Examples related thread creation, control, synchronization, cleanup, sched- uling, matrix operations, sorting searching, filter utilities, and threads debugging.

Tutorial Slides