CONCURRENT, PARALLEL AND CLOUD PROGRAMMING

Vittorio SCARANO CONCURRENT, PARALLEL AND CLOUD PROGRAMMING

0522500102
DIPARTIMENTO DI INFORMATICA
EQF7
COMPUTER SCIENCE
2020/2021



YEAR OF DIDACTIC SYSTEM 2016
SECONDO SEMESTRE
CFUHOURSACTIVITY
432LESSONS
216LAB
Objectives
KNOWLEDGE AND UNDERSTANDING
THE LEARNING RESULTS TO ACHIEVE ARE

- PRINCIPLES AND BASIC CHARACTERISTICS OF ALGORITHMS AND PARALLEL AND DISTRIBUTED SYSTEMS AND ON CLOUD, AND THE TECHNIQUES FOR THEIR PERFORMANCE EVALUATION
- STRUCTURE OF MODERN OPERATING SYSTEMS, PARALLEL AND MULTICORE ARCHITECTURES AND COMPUTER NETWORKS

THE STUDENTS WILL GAIN KNOWLEDGE IN:
- CONCURRENT PROGRAMMING: MAIN ISSUES ANALYSIS AND A STUDY OF THE MOST IMPORTANT CONCURRENT DATA STRUCTURES (LIST, QUEUES, HASH TABLES, PRIORITY QUEUES, ETC.)
- PARALLEL SCHEDULING.
- PRINCIPLES OF THE ARCHITECTURE OF MULTIPROCESSORS AND MULTI-CORES.
- PARALLEL PROGRAMMING: MESSAGE PASSING AND SHARED MEMORY ARCHITECTURES. MPI, POINT TO POINT COMMUNICATION, BLOCKING AND NON BLOCKING. COLLECTIVE COMMUNICATION. USAGE OF MPI ON A CLUSTER.
- BENCHMARKING OF PARALLEL APPICATIONS IN MPI ON COUD

APPLYING KNOWLEDGE AND UNDERSTANDING
THE LEARNING RESULTS TO ACHIEVE ARE
- DESIGN A DISTRIBUTED SYSTEM AND EVALUATE ITS PERFORMANCES
- DEVELOP APPLICATIONS IN CONCURRENT AND PARALLEL CONTEXT

THE STUDENTS WILL BE ABLE TO:
- ANALYZE THE COMPLEXITY AND PROVE CORRECTNESS OF ALGORITHMS ON CONCURRENT DATA STRUCTURES.
- DESIGN AND WRITE SIMPLE PROGRAMS IN MPI AND BENCHMARKING THEM ON CLOUD AWS
Prerequisites
THE STUDENT MUST HAVE ACQUIRED KNOWLEDGE ON THE ARCHITECTURE OF NETWORKS AND TCP / IP PROTOCOLS AND CLIENT/SERVER PROGRAMMING. THE STUDENT MUST ALSO HAVE A SIGNIFICANT PROGRAMMING EXPERIENCE IN JAVA AND C AND OPERATING SYSTEMS, AND MUST BE ABLE TO USE PROFICUOSULY AN INTEGRATED DEVELOPMENT ENVIRONMENT.
Contents
(FOR EACH ARGUMENT WE INDICATE THE HOURS OF TEACHING (FRONT LESSON F) AND LABORATORY (L))

•INTRODUCTION TO CONCURRENT PROGRAMMING 2F
•MUTUAL EXCLUSION 4F
•CONCURRENT OBJECTS 2F
•SPIN LOCKS 2F
•MONITORS 4F
•LINKED LIST 4F
•CONCURRENT QUEUE 4F
•SCHEDULING AND WORK DISTRIBUTION 4F
•INTRODUCTION TO PARALLEL PROGRAMMING 2F
•MPI: CONCEPTS 1F
•COMMUNICATION POINT-TO-POINT IN MPI: BLOCKING AND NON-BLOCKING COMMUNICATION 1F+4L
•NON CONTIGUOUS DATA IN MPI 1F + 4L
•COLLECTIVE COMMUNICATION IN MPI 1F+4L
•USING A CLUSTER IN MPI 2L
•CLOUD COMPUTING ON AWS 2L
Teaching Methods
THE COURSE IS MADE UP BY A FOUNDATIONAL PART (4 CFU 32 HOURS) , DEALING WITH THE PRINCIPLES OF CONCURRENT COMPUTING (ALGORITHMS AND DATA STRUCTURE) PARALLEL COMPUTING (MPI PROGRAMMING) AND CLOUD COMPUTING (AMAZON AWS) AND A PRACTICAL PART (2 CFU 16 HOURS) DEALING WITH THE DEVELOPMENT OF SIMPLE PARALLEL APPLICATIONS IN C-MPI AND THEIR BENCHMARKING ON AMAZON CLOUD.
Verification of learning
IX EXAM SESSIONS DURING THE WHOLE ACADEMIC YEAR, IN ADDITION TO TWO SPECIAL ONES RESERVED TO STUDENTS WHO LACK A FEW EXAMS FOR THEIR DEGREE. EACH SESSION IS PROVIDED WITH A PROJECT TEST (THAT MUST BE COMPLETED WITHIN A MONTH) AND AN ORAL TEST. THE RESULTING MARK IS CALCULATED USING A WEIGHTED AVERAGE OF THE TWO TEST MARKS.

Texts
•"THE ART OF MULTIPROCESSOR PROGRAMMING", M. HERLIHY E N. SHAVIT.
•"JAVA CONCURRENCY IN PRACTICE". BRIAN GOETZ ET AL.
•"PARALLEL PROGRAMMING IN C WITH MPI AND OPENMP", MICHAEL J. QUINN
•"AN INTRODUCTION TO PARALLEL PROGRAMMING", PETER PACHECO
•MPI TUTORIAL, ARTICLES AND ADDITIONAL MATERIAL ON THE WEBSITE
More Information
INFORMATION ABOUT EACH CLASS AND EAMPLES DISCUSSED DURING THE COURSE ARE AVAILABLE ON THE FACULTY LEARNING PLATFORM, WITH TRACES OF EXAMS AND OTHER SUPPORTING MATERIAL (PROGRAMMING MANUALS, TUTORIALS, READING MATERIAL)
HTTP://ELEARNING.INFORMATICA.UNISA.IT/EL-PLATFORM
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2022-05-23]