Python has gained a lot of attention by the high performance computing community as an easy-to-use, elegant scripting language for rapid prototyping and development of flexible software. At the same time, there is an ever-growing need for more compute power to satisfy the demand for higher accuracy simulation or more detailed modeling. The Intel(R) Xeon Phi(TM) coprocessor strives to provide additional compute power for floating-point intensive codes, while maintaining the programmability of the traditional Intel(R) Xeon(R) platform.
This paper presents a Python module to handle offloads to the Intel Xeon Phi coprocessor from Python code. It provides an easy-to-use interface to invoke compute kernels on the coprocessor, while handling data transfers in a flexible yet performant way. The paper discusses how the Python module can be utilized to offload key kernels in the Python-based open source electronic-structure simulation software GPAW. Micro-benchmarks show that the solution imposes only marginal overheads on the kernel invocations.