All Projects → sdiehl → Numpile

sdiehl / Numpile

Licence: mit
A tiny 1000 line LLVM-based numeric specializer for scientific Python code.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Numpile

Python Lectures
IPython Notebooks to learn Python
Stars: ✭ 355 (+4.11%)
Mutual labels:  jupyter-notebook, tutorial, ipython-notebook
Cryptocurrency Analysis Python
Open-Source Tutorial For Analyzing and Visualizing Cryptocurrency Data
Stars: ✭ 278 (-18.48%)
Mutual labels:  jupyter-notebook, tutorial
Generative models tutorial with demo
Generative Models Tutorial with Demo: Bayesian Classifier Sampling, Variational Auto Encoder (VAE), Generative Adversial Networks (GANs), Popular GANs Architectures, Auto-Regressive Models, Important Generative Model Papers, Courses, etc..
Stars: ✭ 276 (-19.06%)
Mutual labels:  jupyter-notebook, tutorial
Scikit Learn Videos
Jupyter notebooks from the scikit-learn video series
Stars: ✭ 3,254 (+854.25%)
Mutual labels:  jupyter-notebook, tutorial
Notebooks Statistics And Machinelearning
Jupyter Notebooks from the old UnsupervisedLearning.com (RIP) machine learning and statistics blog
Stars: ✭ 270 (-20.82%)
Mutual labels:  jupyter-notebook, ipython-notebook
Pytorch Image Classification
Tutorials on how to implement a few key architectures for image classification using PyTorch and TorchVision.
Stars: ✭ 272 (-20.23%)
Mutual labels:  jupyter-notebook, tutorial
100 Days Of Ml Code
100-Days-Of-ML-Code中文版
Stars: ✭ 16,797 (+4825.81%)
Mutual labels:  jupyter-notebook, tutorial
Asmjit
Machine code generation for C++
Stars: ✭ 2,874 (+742.82%)
Mutual labels:  compiler, jit
Geopandas Tutorial
Tutorial on geospatial data manipulation with Python
Stars: ✭ 306 (-10.26%)
Mutual labels:  jupyter-notebook, tutorial
Sars tutorial
Repository for the tutorial on Sequence-Aware Recommender Systems held at TheWebConf 2019 and ACM RecSys 2018
Stars: ✭ 320 (-6.16%)
Mutual labels:  jupyter-notebook, tutorial
Vscodejupyter
Jupyter for Visual Studio Code
Stars: ✭ 337 (-1.17%)
Mutual labels:  jupyter-notebook, ipython-notebook
Deep Learning Keras Tensorflow
Introduction to Deep Neural Networks with Keras and Tensorflow
Stars: ✭ 2,868 (+741.06%)
Mutual labels:  jupyter-notebook, tutorial
Understanding Nn
Tensorflow tutorial for various Deep Neural Network visualization techniques
Stars: ✭ 261 (-23.46%)
Mutual labels:  jupyter-notebook, tutorial
Generative Adversarial Networks
Tutorial on GANs
Stars: ✭ 275 (-19.35%)
Mutual labels:  jupyter-notebook, tutorial
Lightbeam
Lightbeam has moved and now lives in the Wasmtime repository!
Stars: ✭ 253 (-25.81%)
Mutual labels:  compiler, jit
Pytorch Lesson Zh
pytorch 包教不包会
Stars: ✭ 279 (-18.18%)
Mutual labels:  jupyter-notebook, tutorial
Scipy Cookbook
Scipy Cookbook
Stars: ✭ 326 (-4.4%)
Mutual labels:  jupyter-notebook, ipython-notebook
Cranelift
Cranelift code generator
Stars: ✭ 2,485 (+628.74%)
Mutual labels:  compiler, jit
Openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,802 (+721.7%)
Mutual labels:  compiler, jit
Enso Archive
Looking for Enso, the visual programming language? ➡️ https://github.com/enso-org/enso
Stars: ✭ 305 (-10.56%)
Mutual labels:  compiler, jit

Numpile

A tiny 1000 line LLVM-based numeric specializer for scientific Python code.

You really shouldn't use this for anything serious, it's just to demonstrate how you might build one of these things from scratch. There's a lot of untapped potential and low hanging fruit around selective embedded JIT specialization for array expression languages in the SciPython space.

Installing

Numpile requires numpy and llvmlite (the latter includes needed LLVM libraries). You can either try to install them using your OS package manager, or alternatively, using pip:

$ pip install llvmlite
$ pip install numpy

Usage

import numpy as np
from numpile import autojit


@autojit
def dot(a, b):
    c = 0
    n = a.shape[0]
    for i in range(n):
        c += a[i] * b[i]
    return c


a = np.arange(100, 200, dtype='int32')
b = np.arange(300, 400, dtype='int32')
result = dot(a, b) 
print(result)

License

Released under the MIT License. Copyright (c) 2015, Stephen Diehl

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].