Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/inducer/loopy
A code generator for array-based code on CPUs and GPUs
https://github.com/inducer/loopy
array code-generation code-generator code-optimization code-transformation cuda ispc loop-optimization multidimensional-arrays opencl performance performance-analysis prefix-sum python reduction scan scientific-computing
Last synced: 6 days ago
JSON representation
A code generator for array-based code on CPUs and GPUs
- Host: GitHub
- URL: https://github.com/inducer/loopy
- Owner: inducer
- License: mit
- Created: 2014-05-29T04:03:35.000Z (over 10 years ago)
- Default Branch: main
- Last Pushed: 2025-01-16T19:28:01.000Z (12 days ago)
- Last Synced: 2025-01-22T07:37:08.090Z (7 days ago)
- Topics: array, code-generation, code-generator, code-optimization, code-transformation, cuda, ispc, loop-optimization, multidimensional-arrays, opencl, performance, performance-analysis, prefix-sum, python, reduction, scan, scientific-computing
- Language: Python
- Homepage: http://mathema.tician.de/software/loopy
- Size: 12.3 MB
- Stars: 596
- Watchers: 21
- Forks: 73
- Open Issues: 168
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
- Citation: CITATION.cff
Awesome Lists containing this project
README
Loopy: Transformation-Based Generation of High-Performance CPU/GPU Code
=======================================================================.. image:: https://gitlab.tiker.net/inducer/loopy/badges/main/pipeline.svg
:alt: Gitlab Build Status
:target: https://gitlab.tiker.net/inducer/loopy/commits/main
.. image:: https://github.com/inducer/loopy/workflows/CI/badge.svg?branch=main
:alt: Github Build Status
:target: https://github.com/inducer/loopy/actions?query=branch%3Amain+workflow%3ACI
.. image:: https://badge.fury.io/py/loopy.png
:alt: Python Package Index Release Page
:target: https://pypi.org/project/loopy/
.. image:: https://zenodo.org/badge/20281732.svg
:alt: Zenodo DOI for latest release
:target: https://zenodo.org/doi/10.5281/zenodo.10672274Loopy 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 moreLoopy 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 computationsIt 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 loopy
In addition, Loopy is compatible with and enhances
`pyopencl `_.---
Places on the web related to Loopy:
* `Python package index `_ (download releases)
* `Documentation `_ (read how things work)
* `Github `_ (get latest source code, file bugs)
* `Homepage `_
* `Benchmarks `_