On successful completion of the curricular unit, students will be able to demonstrate the following knowledges, capacities and skills: -to characterize and evaluate in qualitative and quantitative terms the architectures of HPC systems that are relevant to the scientific community - to analyse, measure and evaluate the performance of computer systems in the execution of compute and data intensive applications - to develop and/or modify science/engineering computer applications aiming to improve performance and scalability.
1. Sequential Computing 1.1 The Von Neumann architecture 1.2 Numerical data representation 1.3 Memory Hierarchies 1.4 Multicore architectures 1.5 Locality and data reuse 1.6 Programming strategies for high performance 1.7 Performance metrics and measurement techniques 2 Parallel Computing 2.1 Instruction Level Parallelism 2.2 Parallel Computers Architectures 2.3 Different types of memory access 2.4 Interconnection topologies 2.5 Granularity of parallelism 2.6 Parallel programming 2.7 Performance evaluation 2.7 Efficiency of parallel computing 2.8 Multi-threaded architectures 2.9 GPU computing 3 Case study analysis
Teaching methodologies: - lectures with presentation of key concepts with examples - class discussion of scientific papers - lectures/talks by computational science/engineering researchers - lab classes to analyse and solve case studies, with later open presentation and discussion - participation in an international research internship, at Univ. Texas at Austin Evaluation elements: - a written test with several development or problem-solving questions (weight: ~40%) - written essays on complementar subjects (weight: ~20%) - practical lab workss, including report writing and oral discussion of results (weight: ~40%).
• David Patterson, John Hennessy, Computer Architecture. A Quantitative Approach, 5th Ed., Morgan Kaufmann, 2011 • David Kirk and Wen-mei Hwu, Programming Massively Parallel Processors, A Hands-on Approach, Morgan Kaufmann, 2010
- Explain, in due context, the concepts of Modelling and Simulation. - Apply numerical methods and algorithms to a representative set of computational physics problems - Discuss the algorithms complexity and their efficient implementation in a parallel programming environment, using heterogenous platforms (multicore CPU, multicore CPU-GPU, etc.). - Solve 3 Case studies, with controlled complexity,using Monte Carlo methods, numerical resolution of PDEs and Fourier analysis. - Understand and discuss the algorithms complexity, from a point of view of an efficient implementation, in an eScience perspective. - Understand and discuss the issues that Modelling and Simulation seek to solve, from the viewpoint of the physical meaning of the solutions. - Acquire, through exemple, a teamwork capacity in a multi-disciplinary environment.
1. Computational Physics and e-Science, definitions and issues. Models, simulation and computational experiences, adimensional variables; consequences of the internal representation and algorithms. 2. Monte Carlo: random number generation. Deterministic randomness. Applications with a termodinamichs model. Sampling methods. Applications in diffusion problems. 3. Partial Differencial Equations (PDEs): electrostatic potencials electrostática and wave propagation. Maxwell: EM waves and the FDTF algorithm. 4. Diffusion: numerical integration of the diffusion equation and boundary conditions. 5. Fourier analysis of non linear oscillations. FFT algorithm. Fourier series resolution of the Laplace equation.
Contents will be taught in lectures, based on oral and written communication and the resolution of at least 3 case studies, in teamwork activities grouped in 3/4 students. Support material will be provided through the elearning platform. Student's assessment elements will include public presentation and private discussion of the teamwork case studies.
[1] R.H.Landau, M.J. Paez, C.C. Bordeianu, A Survey of Computational Physics, Introductory Computational Science, Princeton University Press, 2008. [2] P.O.J. Scherer, Computational Physics, Simulation of Classical and Quantum Systems, Springer, 2010. [3] D. Frenkel, B. Smit, Understanding Molecular Simulations, From Algorithms to Applications, Academic Press, 2002. [5] M. Quinn, Parallel Programming in C with MPI and OpenMP, McGraw-Hill, 2003. [6] D.B. Kirk, W.W. Hwu, Programming Massively Parallel Processors: A Hands-on Approach, Nvidea, Morgan Kaufmann, 2010. [7] William H. Press, Saul A. Teukolsky,William T. Vetterling, Brian P. Flannery, Numerical Recipes: The Art of Scientific Computing,3rd. Ed., Cambridge, 2007.
A student who successfully complete this UC must be able to demonstrate that it has acquired the following competences: • Identify existing techniques for storing and processing data in large scale • Apply techniques for extraction of knowledge on continuous data streams • Use tools / libraries for common data processing and analysis of large-scale and continuous • Develop / implement algorithms for (parallel) processing on distributed data
• Concepts of knowledge extraction, machine learning and data mining: clustering, association rules, classification and regression models, algorithms and rules on induction trees, artificial neural networks, support vector machines, evaluation / estimation error models of learning, meta-learning: selection of models, sets of models. • Mining data stream; processing streams, data aggregation techniques; stream clustering, detection of changes in streams; applications in continuous data (eg financial markets) • Mining graphs and networks • Systems for large-scale data storage: storage of unstructured data, data grids, cloud computing and storage; processing parallel / distributed data • Case study analysis of large-scale scientific data: data analysis on Computational Biology; financial data analysis • Data visualization: principles and applications
The UC is taught with a weekly 2H theoretical session and a session laboratory of 1H. In theoretical sessions are taught the fundamentals and concepts. The sessions are primarily theoretical exposition. The laboratory sessions are to consolidate the knowledge acquired in the theoretical sessions, by solving exercises. The various exercises allow students to consolidate the knowledge through the design and implementation of the most common algorithms for analysis and processing of scientific data. The laboratory sessions also serve to clarify doubts. The evaluation is done through practical assignment.
Data Mining. Pratical Machine Learning tools and techniques. (third edition) Ian Witten & Eibe Frank, Morgan Kaufman 2011. Knowledge Discovery from Data Streams J. Gama (2010), Chapman & Hall/CRC Press Scientific Data Mining and Knowledge Discovery: Principles and Foundations, Mohamed Medhat Gaber, Springer, 2009
A student who successfully complete this UC must be able to demonstrate that it has acquired the following competences: • Identify the theoretical mathematical and numerical methods studied • Identify the different levels (complexity, numerical robustness, etc.) strengths and weaknesses of the methods • Develop sequential and parallel implementations, use numerical libraries and discuss the performance and efficiency obtained • Identify, in parallel numerical algorithms, possible problems of load balancing and / or high cost of communication between the computing elements
• Monte Carlo methods: sequential and parallel random number generators, applications of the method of Monte Carlo • Matrix multiplication: sequential and parallel implementations in message-passing model • Systems of linear equations: Gaussian elimination, iterative methods, convergence analysis, sequential and parallel implementations • finite difference method: numerical solution of differential equations that arise in particular problems "classics" (vibration of a string, heat diffusion) • Fast Fourier Transform: Fourier analysis, the transformed DDT (discrete) and FFT, sequential and parallel algorithms.
The UC is taught with a weekly 2H theoretical session and a session laboratory of 1H. In theoretical sessions are taught the fundamentals and concepts. The sessions are primarily theoretical exposition. The laboratory sessions are to consolidate the knowledge acquired in the theoretical sessions, by solving exercises. The various exercises allow students to consolidate the knowledge through the implementation of common numeric methods. The laboratory sessions also serve to clarify doubts. The evaluation is done through practical assignment and an exam.
Parallel Scientific Computing in C++ and MPI: A Seamless Approach to Parallel Algorithms and their Implementation, George Em Karniadakis and Robert M. Kirby II, Cambridge University Press, 2003 Matrix Computations, G. Golub, C. F. Van Loan, 3rd. Ed., John Wiley & Sons, 1996