Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

#1 design flaw of Python for numerics: arrays are not a first class type.


I think numpy more or less solved this problem. And how does it really affect efficiently solve some problem?


The question is not "can these problems be more or less solved" with Cython or Numpy, but: we shouldn't have these problems in the first place. We haven't talked about deployement yet, which is another wart of Python. I guess it can also be kind of solved with another lib/tooling yet-to-come, but how many of these things are we going to pile, whereas a newer language could get it right, or at least, better, from the word go?


But I don't think Julia is going to so well-rounded in face of those problems. Why deployment is hard?

Because Python has so many C/Fortran external dependencies.

Is Julia going to change it? By itself maybe, but currently it still borrows from Python in order to enrich its ecosystem, so basically adding even more layers. That for me, speaks to the volume that language is not really the pain here, library is.

Real-world problems are ugly deep down to its core and the requirements and constraints are every changing. Who thought GPU programming will be such a big deal just 5 years ago, if not DNN revolution completely turning thing around? And I don't think Julia's improvement is really prepared for this. Even more, if Tensorflow style data flow programming is better accepted, then probably any language could be used to just draw some the computation graph and the heavy lifting will be done by the framework anyway. It is going to be harder to persuade programmers to adapt a language just for the perks that is only peripheral.


Julia's GPU capabilities are _far_ better than python's. There are near complete, free wrappers for all the CUDA libraries. The same is not true for python (e.g. CUSPARSE).

This is a consequence of how easy it is to interface with languages like C in Julia. I.e. whenever a new CUDA library or change happens, it will take the Julia devs less effort to update their wrappers.

Add to this Julia's HPC support and it is by far the best offering if you want to do REPL style programming on a GPU cluster.


Wow! Thanks for the CUSPARSE.jl shoutout (I'm the maintainer of that package)!

I must take issue with "near complete" - CUSOLVER.jl, my other CUDA wrapper, is missing a lot of the RF (refactorization) functionality and doesn't really have a pretty high level API yet. The doc and testing situation is also pretty bad. Everyone else's packages in JuliaGPU (the overarching GPU org on GitHub) are in a much better state.

You are right, though, that writing CUDA bindings in Julia is very easy - so easy that I can do it! It's also thanks to packages like Clang.jl, which make it easy for us to automate the procedure of wrapping the low-level interfaces.

Finally I must add the caveat that although I should test CUSPARSE.jl and CUSOLVER.jl with MPI (and GPUDirect) I've been extremely busy recently and not able to do so. If anyone wants to help out in this regard I would be very appreciative!


Thanks for the word of caution!

I've been using the remotecall functions rather than MPI (bunged my code into ClusterUtils.jl). Don't know how I'd use GPUDirect with this strategy.

The packages based on CUDArt.jl all seem to work with remotes. So long as you don't fetch a pointer to memory on a remote device.


This is a good argument. But that is not a market where majority Python programmers are.

Once the wrappers are done, for most developers, it becomes the matter to layering those build blocks building their own functionality. It is not a strong enough argument that people should use Julia because it is a better language to write wrapper. Let alone that Python wrappers for data science stuff is already like a de-facto builtin.

Not saying Python is perfect, but IMHO, Julia is not hitting the right spot in order to really stand up against Python.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: