319 karma · joined August 25, 2012
Here is a recent presentation showing Bokeh (from Python) along with data-shading to visualize billions of points quickly: http://www.slideshare.net/continuumio/visualizing-billions-o...
Here is another presentation showing integration of Bokeh with R to visualize geographical data from another group: http://ryanhafen.com/blog/rbokeh-gmap
0.11 and above releases of Bokeh contain a server that provides a very nice application model that can be synchronized between browser and server for allowing data scientists to build interactive plotting-based applications in the browser. Here are some simple examples of that: http://demo.bokehplots.com/
It still requires some coding but it is very powerful. There are a lot of examples in the Bokeh gallery and in examples directory: https://github.com/bokeh/bokeh/tree/master/examples .
There are several devs on Bokeh mailing list eager to help and the company behind Bokeh (http://continuum.io) can provide more significant help if you need it.
The author is definitely helping people learn about LLVM and how it can be used with Python --- which is great, because this is exactly what Numba is: http://numba.pydata.org. But, please don't start another "Numba". Just come help us improve the current one.
However, their timelines are too short. It makes me feel like they don't really understand what it's going to take.
A good start would be the C++ library libdynd which was designed to potentially be used from Javascript.
NumPy has much more than vectors and matrices. Does Javascript have operator overloading?
A C++ target for Numba would also be of interest if anyone wants to participate in the development. Numba 0.15.1 was just released this week: https://github.com/numba/numba/tree/0.15.1 http://numba.pydata.org
conda install numba
Yes, we are a company and do sell things, but our commitment to open source is backed by many, many years of significant contributions to the community. We give as much away as we can, and sell to those who need more.
While you certainly buy more from us, Anaconda itself will always be free as long as we can continue to make it.
However, it's not there yet. Armin could bring himself to say this in this post: "It's there, it kinda works, and it's probably worth your time."
Conda is not perfect (it needs more people building conda binaries as well as a few pull requests to add https improvements) --- but I will confidently say "it is there, it does work now, and it is worth your time"
This is especially true with a package repository like exists at http://repo.continuum.io and the many personal repositories at http://binstar.org.
People that have used conda for deployment (especially of complex C-dependencies in the NumPy and PyData stack) are saving time and effort today.
In particular look at the `conda package` command for an easy way to bundle up any non-conda packages across a homogeneous environment.
Getting a conda package from can be as simple as
`conda build --build-recipe <pypi-name>`
This is why we include it in Linux versions of Anaconda.
But it describes a specific reason why using a high-level language to directly program the GPU can be extremely useful --- you can easily build, test, and iterate on execution order to improve performance. Hardware is changing, and we need better tools to write code for it.
The author uses CUDA Python, but you could do similar things with PyCUDA --- it's the emphasis on the scheduling that is the relevant point.
Note that the array-expressions previously in numbapro only have been moved to numba (our plan for all premium products is to move features into open source as we get funds to support that).
If you never are resorting to using C/C++ or Fortran, then Numba is not necessarily going to be helpful for you.
I don't think we are trying to mislead. We are simply showing examples that illustrate what Numba can be used for. Of course your code does not have many for-loops in it because you never could write code like that and have it be fast in Python. The big-deal about Numba is that now you can. You don't have to rely on a C/C++ library that either write or get someone else to write for you. You can just use Python.
I agree with you about the "unrolling". I don't recommend adding for-loops when good vectorized expressions work. Keep using them as we will be able to do a better job of parallelizing that code in the future. However, when you can't vectorize and for-loops are all you have, Numba is great.
We have spent some time on optimizing NumPy expressions like you describe and some array expressions can be translated down to equivalent LLVM loops. But most of the effort in that direction has been happening in the Blaze project which is generalizing NumPy so it can deal with much larger data but still produce optimized code from those vector expressions. This actually requires a re-thinking of how NumPy is implemented from the ground up.
Right now, I agree that Cython and pure C++ is still the best approach if you have a case which Numba does not yet quite solve. However, I expect this to change over the next 6-12 months as Numba is getting a lot of attention both inside of Continuum and externally at several industrial-strength locations.
Our goal is that Numba can replace (almost all) Cython and raw C-extensions or even Go-extensions faster than other language approach will be able to build a run-time and ecosystem the equivalent of what is available with Python.
The roadmap (which includes Go-like channels and go-routines) as well as compiled class-support is here: http://numba.pydata.org/numba-doc/dev/roadmap.html
The project is open-source and contributions and contributors are welcome to join.
Some of you might find the roadmap particularly interesting. It's an open-source project eager for input from others...
Slide deck: https://speakerdeck.com/pyconslides/numba-a-dynamic-python-c...
IPython notebook examples: https://www.wakari.io/nb/travis/numba https://www.wakari.io/nb/travis/Using_Numba
https://www.wakari.io/nb/travis/Using_Numba https://www.wakari.io/nb/travis/numba
And the slides from PyCon Talk: https://speakerdeck.com/pyconslides/numba-a-dynamic-python-c...
We think conda is a useful tool, and have freed it for use by everyone.
Perhaps something like pip + a better virtualenv + wheel would be close, but we needed something that works now.