Hands-on: Optimising heat equation solver
In this exercise you can practice different optimization techniques with the heat equation solver.
The code for the exercise is located under under
Creating a Cython extension
setup.py for creating a Cython version of
module, and use it from the main program
How much does simple Cythonization (i.e. diminishing the interpreting
overhead) improve the performance?
Based on the profile in the performance measurement exercise optimise the most time consuming part of the algorithm. If you did not finish the profiling exercise, you can look at example profile here.
Utilize all the tricks you have learned so far (type declarations, fast array indexing, compiler directives, C functions, …).
Investigate and comment how the different optimizations affect the performance. You
can use applications own timers and/or timeit. Annotated HTML-report with
cython -a … can be useful when tuning performance.
When finished with the optimisation, compare the performance to Python/NumPy model solution (in
numpy/heat-equation), which uses array operations. You can play around also with larger input data as provided in
© CC-BY-NC-SA 4.0 by CSC - IT Center for Science