getkeops / keops

KErnel OPerationS, on CPUs and GPUs, with autodiff and without memory overflows
https://www.kernel-operations.io
MIT License
1.04k stars 65 forks source link

Outlook for Julia bindings? #144

Open zsteve opened 3 years ago

zsteve commented 3 years ago

Hi Jean, Wondering what is the prospect for getting KeOps to interface with Julia? If nothing so far, this is something that I'd be interested in taking a look at, since this library is super useful and it would be great to have compatibility with Julia! Thanks, Stephen

jeanfeydy commented 3 years ago

Hi @zsteve ,

Thanks for your interest in the library!

As of today, we don't have the Julia expertise that is needed to implemented such a front-end - but we'd be more than happy to support and work with you on this, just like we did with @gdurif for RKeOps. As far as I can tell, writing a Julia interface should be fairly straightforward (probably easier than TensorFlow, which is discussed in #135) if you have a good grasp of the Julia mechanism to call external C code and if we help you through the most complex compilation aspects.

A good friend of mine is also a biologist at the Francis Crick insitute and working with single-cell sequencing on a daily basis, which has prompted me to think quite a bit about the problems that you are interested in. I'm pretty sure that we'd have interesting things to discuss :-)

Would you be interested in having a Zoom call to talk about all of this?

Best regards, Jean

overshiki commented 2 years ago

Hi, Any progress so far? I am currently working on some dimension reduction techniques(like umap and tsne) in julia, and really looking forward knn method provided by keops(such an implementation is awesome for both the speed and numerical stability).

zsteve commented 2 years ago

Hi @jeanfeydy,

Sincere apologies for the embarrassingly long silence on this, and hope things are going well for you. I unfortunately ended up getting swamped with some quite demanding personal situations for most of 2021, and lost track of this thread of discussion. Has there been any progress on this front from your end? If not, I'm now in a much better position to look at this.

Thanks @overshiki for bumping this, btw.

Stephen

jeanfeydy commented 2 years ago

Hi @zsteve ,

Don't apologize of course! We didn't make progress on the Julia bindings, but are now extremely close to the release of KeOps v2.0 which makes everything (including compilation) much easier. @joanglaunes solved a final major bug yesterday, so we are now making final checks and hope to release this officially by the end of the week.

If you are available, we could discuss this anytime (@maltezfaria may also be interested). Needless to say, we would be very happy to welcome you and help as much as we can - it's just that none of us in the core dev team (@bcharlier, @joanglaunes, @gdurif) has any experience with Julia.

Best regards, Jean

P.S.: I would also be happy to discuss optimal transport packages, if you are still working on these.

zsteve commented 2 years ago

Hi @jeanfeydy,

Happy to discuss! and exciting to hear that a new version of KeOps is near. We can e.g. organize a Zoom call at some point in the next few weeks? I am located now in Melbourne, Aust. so meetings in European mornings work for me?

About optimal transport packages, yes! I am still working on those. I guess one end goal of this exercise is that we can eventually use LazyTensor-type arrays in the backend for those algorithms...

Stephen