Welcome to Scientific Computing using Python - 2. High Performance Computing in Python

Description:

Many research projects involve scientific computing for analyzing [big] data and/or simulating complex systems. This makes it necessary have a systematic approach to obtaining well-tested and documented code. Further, we see an increased interest in reproducible research, which allows other researchers the opportunity to dig further into others research results as well as easy access to results and improving productivity by reusing code and software.

This is a course in scientific computing using the increasingly popular programming language Python. Python is gaining popularity in science due to a number of advantages such as having a rich set of libraries for computing and data visualization, excellent performance optimizing possibilities, standard tools for simple parallel computing, fast development cycle and high productivity – just to name a few. Python is open source and as such an asset for any researcher following the reproducible research paradigm.

This course covers the main area: High performance computing.

High performance computing:
1.Profiling1.Memory profiling
2.Time profiling (function based / line based)

2.Performance optimization1.Numba (just in time compilation)
2.Cython (compiled Python via C-extensions)
3.SWIG (C integration with Python)
4.Fortran wrapping using f2py

3.Parallel computing1.Theoretical aspects (Amdahls and Gustaf-Barsis law)
2.Parallel computing methodologies
3.Distributed computing and shared memory computing
4.Parallel computing in Python


Audience: The targeted audience is mainly engineers or similar with an interest in developing robust, portable and high quality code for various scientific computing purposes. By this we mean code to solve actual problems where [lots of] floating-point computations are needed.

Prerequisites: Participants must have some experience in programming Python. If not, there is an introductory course "Scientific Computing Using Python - 1. Python + Scientific Computing". Further, some basic skills in general use of a computer are expected. The tools applied work best using Linux or Mac OSX – Microsoft Windows may experience challenges when using parallel computing. We have USB memory sticks, from which you can boot Ubuntu Linux and run Python directly from the memory stick. These can be borrowed if you like.


Criteria for assessment: A standard mini-project must be delivered (5-10 pages description) in addition to the developed code. The code must include testing/validation, and performance evaluation of parallel computing. An acceptable mini-project and at-least 75% participation is required to pass the course.


Learning objectives: After completing the course the participants will:
1.Know how to use methods and software for performance optimization.
2.know when and how to apply parallel computing for scientific computing.


Organizer: Associate Professor Thomas Arildsen, Department of Electronic Systems

Lecturers: Ian Ozsvald, ModelInsight, UK

ECTS: 2

Time: 8-9 June, 2015, 9:00-16:00

Place: Aalborg University, Fredrik Bajers Vej 7E/3 Room 109

Zip code: 9220

City: Aalborg Ø

Number of seats: 25

Deadline: 18 May, 2015

Important information concerning PhD courses
We have over some time experienced problems with no-show for both project and general courses. It has now reached a point where we are forced to take action. Therefore, the Doctoral School has decided to introduce a no-show fee of DKK 5,000 for each course where the student does not show up. Cancellations are accepted no later than 2 weeks before start of the course. Registered illness is of course an acceptable reason for not showing up on those days. Furthermore, all courses open for registration approximately three months before start. This can hopefully also provide new students a chance to register for courses during the year. We look forward to your registrations.