-
Presentation
Presentation
The Parallel Programming Curricular Unit presents an approach to teaching parallel programming in heterogeneous environments. This approach allows a smooth transition from the sequential programming paradigm to parallel programming in heterogeneous environments, enabling students to extract better performance from current architectures. The programming language used allows portability, as well as being a free programming language standard, and enabling the use of all the resources of a heterogeneous architecture. The teaching approach is divided into two components, where the introductory component addresses the main features of the OpenCL programming language, the identification of hardware that supports OpenCL in a heterogeneous environment and the configuration of the development environment. The transition process supports applications with an increasing level of complexity, allowing the practical teaching of parallel programming in heterogeneous environments.
-
Class from course
Class from course
-
Degree | Semesters | ECTS
Degree | Semesters | ECTS
Bachelor | Semestral | 6
-
Year | Nature | Language
Year | Nature | Language
3 | Mandatory | Português
-
Code
Code
ULP452-22528
-
Prerequisites and corequisites
Prerequisites and corequisites
Not applicable
-
Professional Internship
Professional Internship
Não
-
Syllabus
Syllabus
Description of contents Introduction to parallel programming. Reasons that influenced the development of parallel computing. Division of parallel computing areas. Areas of coverage of parallel processing. Basic Parallel Programming Primitives: task control, communication and synchronization. Parallel architecture models. Division in relation to data flow. Division regarding the flow of instructions. Division in relation to the control mechanism. Commercial parallel machines. Parallel machines performance rating. Processor interconnection networks. Performance measures of parallel applications. Obtaining results from parallel applications. Computational cost. Speedup. Efficiency. Scalability. Exploitation of parallelism in programs. Parallel algorithm models. Implicit exploration. Explicit exploration. Parallel programming paradigms.
-
Objectives
Objectives
Study the parallel programming model to realize that it consists of a set of software technologies to express parallel algorithms and create applications compatible with systems that support parallel programming. In this context, the areas of applications, programming languages, compilers, library (computing), communication systems and parallel I/O are included. To overcome the difficulties of automatic parallelization, an appropriate parallel programming model is identified to develop applications on a parallel platform. Develop parallel programming models to be implemented in different ways: as libraries invoked from sequential programming languages, extended languages, or new execution models. Also, they can be categorized into two types of systems: shared memory and distributed memory systems.
-
Teaching methodologies and assessment
Teaching methodologies and assessment
Assessment methodology: Curricular Assessment: A global assessment test to be carried out at the end of the semester. Final Grade = Assessment test grade, with a weight of 70% in the final grade, and a minimum grade of 8 values. Practical work to be carried The curricular unit is structured into two main components that complement each other: theoretical and expository classes and practical and experimental classes. In theoretical classes, the defined programmatic contents are explored, and students are invited to actively participate in the class. In practical classes, work is proposed to apply the knowledge acquired in theoretical classes.out in the classroom, with a weight of 20% in the final grade. Attendance and participation in classes with a 10% increase. Minimum 70% of attendance in classes. Final Assessment: All students will be entitled to a final exam.
-
References
References
Czarnul, C. (2018). Parallel Programming for Modern High Performance Computing Systems. Taylor & Francis. ISBN: 9781138305953. Balaji, P. (2016). Programming Models for Parallel Computing. MIT Press. ISBN: 9780262528818. Grama, A. (2003). Introduction to parallel computing. 2. ed. Harlow, England: Addison Wesley. Dongarra, J.J. (2003). Sourcebook of parallel computing. 1. ed. Amsterdam: Morgan Kaufmann. Herlihy, M., Shavit, N. (2008). The art of multiprocessor programming. 1. ed. Burlington: Elsevier Morgan Kaufmann.
-
Office Hours
Office Hours
-
Mobility
Mobility
No