Concurrent Programming with Threads Tutorial
Level of Presentation: 50% Begineer, 30% Intermediate, 20% Advanced
Abstract:
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