Loopy: Transformation-Based Generation of High-Performance CPU/GPU Code ======================================================================= .. image:: https://gitlab.tiker.net/inducer/loopy/badges/master/pipeline.svg :alt: Gitlab Build Status :target: https://gitlab.tiker.net/inducer/loopy/commits/master .. image:: https://dev.azure.com/ak-spam/inducer/_apis/build/status/inducer.loopy?branchName=master :alt: Azure Build Status :target: https://dev.azure.com/ak-spam/inducer/_build/latest?definitionId=10&branchName=master .. image:: https://badge.fury.io/py/loo.py.png :alt: Python Package Index Release Page :target: https://pypi.org/project/loo.py/ Loopy lets you easily generate the tedious, complicated code that is necessary to get good performance out of GPUs and multi-core CPUs. Loopy's core idea is that a computation should be described simply and then *transformed* into a version that gets high performance. This transformation takes place under user control, from within Python. It can capture the following types of optimizations: * Vector and multi-core parallelism in the OpenCL/CUDA model * Data layout transformations (structure of arrays to array of structures) * Loop unrolling * Loop tiling with efficient handling of boundary cases * Prefetching/copy optimizations * Instruction level parallelism * and many more Loopy targets array-type computations, such as the following: * dense linear algebra, * convolutions, * n-body interactions, * PDE solvers, such as finite element, finite difference, and Fast-Multipole-type computations It is not (and does not want to be) a general-purpose programming language. Loopy is licensed under the liberal `MIT license `_ and free for commercial, academic, and private use. All of Loopy's dependencies can be automatically installed from the package index after using:: pip install loo.py In addition, Loopy is compatible with and enhances `pyopencl `_. --- Places on the web related to Loopy: * `Python package index `_ (download releases) Note the extra '.' in the PyPI identifier! * `Documentation `_ (read how things work) * `Github `_ (get latest source code, file bugs) * `Wiki `_ (read installation tips, get examples, read FAQ) * `Homepage `_