Python’s Journey to Petascale: An Introduction to PyFR
IEEE Computer Society Team
Share this on:
Python is a popular high-level scripting language used in a wide range of application areas. However, its adoption in the field of high-performance computing (HPC) has been limited due to the lackluster performance of pure Python code, which is slower than analogous C code.
Nevertheless, Python is increasingly considered a first-class language for HPC due to trends in user-friendly codes, heterogeneous modern hardware, and the increasing complexity of contemporary architectures.
API Design and Error Handling in HPC Applications
In the past, HPC applications were primarily used by a small group of users, and the user experience was not a top priority. However, as HPC has become more popular, usability has become an important consideration.
In recent years, application programming interfaces (APIs) have become an essential aspect of HPC, and Python has a rich standard library that adheres to conventions, making it easier for Python developers to pick up new APIs and the interface between them. Python also has robust error-handling mechanisms that meet the requirements of error handling in API code.
Python applications have a different I/O pattern than compiled language applications when it comes to startup time. This is because they typically import dozens of modules spread out across hundreds of files, which can result in a lot of I/O. However, the availability of solid-state drives, parallel file systems, and containerization have minimized the impact of Python I/O patterns.
Python’s Global Interpreter Lock (GIL) is also famous for restricting Python applications to one thread, making it difficult for Python applications to use multicore processors. But even though the GIL has a substantive impact on several classes of Python applications, HPC codes are typically not one of them as they tend to eschew threads for mostly historical reasons.
PyFR: Python as a First-Class Language for HPC
An example of how Python is used in high-performance computing is PyFR, which is used to solve complex equations in fluid dynamics. It does this by dividing the problem into smaller parts and solving each part. PyFR uses a technique called FR, where the problem is discretized into a mesh of small elements, and each element has its own set of points called solution and flux points. The software then interpolates between these points to solve the problem.
To achieve high performance, PyFR uses specialized techniques to perform matrix multiplication and point-wise operations. PyFR can run on different hardware and be scaled up to run on multiple machines. The performance is comparable to C++ code, making PyFR an exemplar of Python in HPC.