loopy

A code generator for array-based code on CPUs and GPUs

https://github.com/inducer/loopy

Science Score: 59.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    19 of 37 committers (51.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.2%) to scientific vocabulary

Keywords

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

Keywords from Contributors

parallel-computing shared-memory pyopencl computer-algebra expression-tree symbolic-computation term-rewriting heterogeneous-parallel-programming parallel-algorithm sorting
Last synced: 6 months ago · JSON representation

Repository

A code generator for array-based code on CPUs and GPUs

Basic Info
Statistics
  • Stars: 613
  • Watchers: 23
  • Forks: 78
  • Open Issues: 175
  • Releases: 3
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
Created over 11 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.rst

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/actions/workflows/ci.yml/badge.svg
    :alt: Github Build Status
    :target: https://github.com/inducer/loopy/actions/workflows/ci.yml
.. image:: https://badge.fury.io/py/loopy.svg
    :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.10672274

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 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 `__

Owner

  • Name: Andreas Klöckner
  • Login: inducer
  • Kind: user
  • Location: Champaign, IL
  • Company: Scientific Computing, CS@UIUC

GitHub Events

Total
  • Create event: 39
  • Release event: 2
  • Issues event: 20
  • Watch event: 33
  • Delete event: 37
  • Issue comment event: 87
  • Push event: 250
  • Pull request event: 111
  • Pull request review event: 88
  • Pull request review comment event: 116
  • Fork event: 5
Last Year
  • Create event: 39
  • Release event: 2
  • Issues event: 20
  • Watch event: 33
  • Delete event: 37
  • Issue comment event: 87
  • Push event: 250
  • Pull request event: 111
  • Pull request review event: 88
  • Pull request review comment event: 116
  • Fork event: 5

Committers

Last synced: 10 months ago

All Time
  • Total Commits: 5,433
  • Total Committers: 37
  • Avg Commits per committer: 146.838
  • Development Distribution Score (DDS): 0.481
Past Year
  • Commits: 204
  • Committers: 8
  • Avg Commits per committer: 25.5
  • Development Distribution Score (DDS): 0.265
Top Committers
Name Email Commits
Andreas Kloeckner i****m@t****t 2,822
Kaushik Kulkarni k****d@g****m 1,205
Matt Wala w****1@i****u 310
jdsteve2 j****2@i****u 259
Isuru Fernando i****2@i****u 150
arghdos a****s@g****m 131
Dominic Kempf d****f@i****e 92
tj-sun t****0@g****m 77
Nick n****s@u****u 68
James Stevens j****2@p****u 67
Tim Warburton t****r@c****u 58
Matthias Diener m****r@i****u 42
Alexandru Fikl a****l@g****m 36
Nicholas Christensen n****2@i****u 27
Lawrence Mitchell l****e@w****k 20
Connor Ward c****0@i****k 8
Machine Owner o****r@d****n 8
zachjweiner z****r@g****m 7
Thomas Gibson g****0@h****m 6
Sophia Vorderwuelbecke s****8@i****k 6
Timothy A. Smith t****4@i****u 6
Lucas C Wilcox l****s@s****m 5
Marcel Koch m****h@u****e 3
xywei w****6@g****m 3
Addison J. Alvey-Blanco a****o@g****m 3
Nick k****2@i****u 2
Sebastian Hegmann s****n@n****e 2
Chris Malone c****e@g****m 1
Tim Warburton t****r@s****) 1
Tim Warburton t****r@b****) 1
and 7 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 66
  • Total pull requests: 300
  • Average time to close issues: about 2 months
  • Average time to close pull requests: about 2 months
  • Total issue authors: 16
  • Total pull request authors: 17
  • Average comments per issue: 1.52
  • Average comments per pull request: 1.1
  • Merged pull requests: 238
  • Bot issues: 0
  • Bot pull requests: 3
Past Year
  • Issues: 19
  • Pull requests: 117
  • Average time to close issues: 2 days
  • Average time to close pull requests: 2 days
  • Issue authors: 5
  • Pull request authors: 11
  • Average comments per issue: 0.68
  • Average comments per pull request: 0.85
  • Merged pull requests: 89
  • Bot issues: 0
  • Bot pull requests: 3
Top Authors
Issue Authors
  • inducer (20)
  • kaushikcfd (13)
  • isuruf (8)
  • connorjward (6)
  • matthiasdiener (4)
  • nkoskelo (3)
  • nchristensen (2)
  • dm-maxar (2)
  • dham (1)
  • miguelcoolchips (1)
  • nicknytko (1)
  • JHopeCollins (1)
  • wence- (1)
  • certik (1)
  • majosm (1)
Pull Request Authors
  • inducer (124)
  • matthiasdiener (47)
  • kaushikcfd (47)
  • isuruf (24)
  • alexfikl (18)
  • connorjward (10)
  • nkoskelo (7)
  • a-alveyblanc (6)
  • nchristensen (5)
  • dependabot[bot] (3)
  • emmanuel-ferdman (2)
  • sv2518 (2)
  • thilinarmtb (1)
  • majosm (1)
  • nicknytko (1)
Top Labels
Issue Labels
Pull Request Labels
dependencies (3) github_actions (3)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 3,066 last-month
  • Total docker downloads: 18
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 21
    (may contain duplicates)
  • Total versions: 9
  • Total maintainers: 1
pypi.org: loopy

A code generator for array-based code on CPUs and GPUs

  • Versions: 8
  • Dependent Packages: 0
  • Dependent Repositories: 21
  • Downloads: 3,066 Last month
  • Docker Downloads: 18
Rankings
Dependent repos count: 3.2%
Docker downloads count: 4.6%
Average: 8.7%
Dependent packages count: 10.0%
Downloads: 17.0%
Maintainers (1)
Last synced: 6 months ago
conda-forge.org: loopy

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.

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Stargazers count: 16.2%
Forks count: 21.1%
Average: 30.6%
Dependent repos count: 34.0%
Dependent packages count: 51.2%
Last synced: 6 months ago

Dependencies

.github/workflows/autopush.yml actions
  • actions/checkout v3 composite
.github/workflows/ci.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
requirements.txt pypi
  • cgen *
  • codepy *
  • fparser *
  • genpy *
  • islpy *
  • ply >=3.6
  • pymbolic *
  • pyopencl *
  • pytools *
  • scipy *
setup.py pypi
  • Mako *
  • cgen >=2016.1
  • codepy >=2017.1
  • colorama *
  • genpy >=2016.1.2
  • https *
  • immutables *
  • islpy >=2019.1
  • numpy >=1.19
  • pymbolic >=2022.1
  • pyrsistent *
  • pytools >=2022.1.7