ORSYS, La Grande Arche, Paroi Nord, 92044 Paris La Défense cedex. Tél : +33 (0)1 49 07 73 73. Fax : +33(0)1 49 07 73 78 page 2
Hands-on course , day(s)
Ref : MUC
Participants
Pre-requisites
Good knowledge of one of
the three languages aimed in
this course (Java, C#, C++).
Basic knowledge on concepts
of multicore development.
> Application Development > Java / JEE
OBJECTIVES
At the end of this course you'll have a better comprehension of Multicore architecture and programming:
multithreaded and multi process design techniques are presented along with languages dedicated to parallel
task programming. You'll also deal with synchronization constraints and, especially on how to avoid issues
when manipulating data.
1) Introduction
2) Application Design
3) Threads
4) Process
5) Parallel task programming
6) Conclusion
Workshop
BOUML, an open source application, will be used for UML design; Visual Studio express#for C# and C++
programming; NetBeans# 6.x for Java. All demonstration samples will be based on UML, Java, C++ and DOT
Net.
1) Introduction
- The stakes of Multicore Programming in coming years.
- General view on technologies that will be used: processes, threads parallelism.
- Reminder of how a processor works.
- #Hyper threaded# architecture.
- INTEL# and AMD# processor architecture.
- Nvidia# and ATI# architecture.
- Preparing for synchronization aspects: common cases.
2) Application Design
- Design importance.
- Parallel Tasking (ex: calculation).
- Use of asynchronous mechanisms: processes, threads...
- From scratch application development: precautions and design.
- Avoiding #singletons#.
- Modifying an existing Multicore application: some of the issues.
- Making a correct choice of architecture: good balance between synchronization and performance.
- Choosing between multiprocess and multithread design.
3) Threads
- Thread organization in a system.
- Threads in systems and languages (sample: Java, .NET and C++).
- Thread contribution to industry applications.
- Thread scheduling in systems: #round robin# algorithm.
- Stacks management and #call stack# in threads.
- Multithreaded debuggers: ex Visual Studio andNetBeans#.
- Synchronization management objects: critical sections, Mutexesand Semaphores.
- #Thread safe# development.
- Development rules for multithreaded applications.
- Threading API in Windows, Java and DOT Net.
- POSIXAPI.
Workshop
Threads and synchronization in DOT Net, Java and C++.
4) Process
- Memory addressing in processes.
- Multi process approach criteria.
- Overview of Inter Process Communication (IPC) techniques.
- Debugging Multi Process applications;new tools (ex: Visual Studio 2005).
- Multi Process: benefits and drawbacks of the technique.
- Unique feature: #AppDomain# in DOT Net.
Workshop
Asynchronous tasks management through Windows API.
5) Parallel task programming
- Features and aims of parallel tasking.
- #Parallel FX#: the DOT Net library for parallel tasking.
- PFX architecture and spirit.
- TPL componentsand PLINQ.