A warm welcome to the Software Performance Engineering and Multicore Programming course by Uplatz.
Software Performance Engineering (SPE) is a systematic method for constructing software systems to meet performance objectives. It is a systematic, quantitative approach to the cost-effective development of software systems to meet performance requirements. SPE is a software-oriented approach that focuses on architecture, design, and implementation choices. SPE gives you the information you need to build software that meets performance requirements on time and within budget.
SPE uses quantitative analysis techniques to predict and evaluate performance implications of design and implementation decisions. The process begins early in the software lifecycle and uses quantitative methods to identify satisfactory combinations of requirements and designs, and to eliminate those that are likely to have unacceptable performance, before developers begin implementation. SPE continues through the detailed design, coding, and testing stages to predict and manage the performance of the evolving software, and to monitor and report actual performance against specifications and predictions. SPE methods cover performance data collection, quantitative analysis techniques, prediction strategies, management of uncertainties, data presentation and tracking, model verification and validation, critical success factors, and performance design principles.
SPE provides an engineering approach to performance, eliminating the issues of performance-driven development and fix-it-later. SPE uses model predictions to evaluate trade-offs in software functions versus hardware costs. The models assist developers in controlling resource requirements by selecting architecture and design alternatives with acceptable performance characteristics. They aid in tracking performance throughout the development process and prevent problems from surfacing late in the life cycle (typically during performance and stress testing).
Multicore Programming refers to the approach of creating concurrent systems for deployment on multicore processor and multiprocessor systems. A multicore processor system is a single processor with multiple execution cores in one chip. By contrast, a multiprocessor system has multiple processors on the motherboard or chip. Multicore programming focuses on the following key elements:
Task Parallelism
Data parallelism
Pipelining
Structured grid
Software Performance Engineering and Multicore Programming - Course Curriculum
Software Performance Engineering
Introduction to Multicore Programming
Multithreaded parallelism and Performance Measures
Analysis of Multithreaded Algorithms
Issues in Parallelization
Synchronizing without locks and concurrent data structures
Cache Complexity
Montgomery Trick
Space Vs Time Cache Vs Memory
Experience in coding high performance numeric libraries
FFT Based Polynomial Arithmetic on Multicore
Parallel Programming for Many high-performance Architectures
Memory Hierarchy Optimization-I
Memory Hierarchy Optimization-II
Writing Correct Programs
Floating Point
Applications
Dynamic Scheduling Sorting
Virtual Machines
Hypervisor
Multicore Computing
Multicore Programming-I
Multicore Programming-II
Multicore Programming-III
Multicore Programming-IV
Multicore Programming-V
29
26
TAKE THIS COURSE