On Monday, December 14, 2015 at 11:46:33 AM UTC-8, Stefan Karpinski wrote: > > Once we switch to LLVM 3.7.1 > <https://github.com/JuliaLang/julia/issues/9336>, it will no longer > require a special build of Julia to use Cxx.jl. That is one of the reasons > why that issue is a high priority – a lot of work has gone into is lately > and it should happen in a few weeks. Once LLVM 3.7.1 proves stable on > master, we could even potentially backport the change to release-0.4 so > that you can use Cxx with 0.4 out of the box. >
Thanks for the status on this. > > Regarding using TensorFlow from languages other than Python, Keno and Tony > have looked into this in some depth and here's what they found. At first > glance TensorFlow's Python interface follows the design pattern that lots > of high quality interfaces to C++ do, which is the following: > > user Python code ⟺ > handwritten python API ⟺ > SWIG Python API ⟺ > C++ code > > > However, if you look a bit closer, it's actually the following: > > user Python code ⟺ > handwritten python API ⟺ > ProtoBuf generated serialization format ⟺ > SWIG generated Python API ⟺ > Hand Written C++ Interface ⟺ > (ProtoBuf if parsing ⟺) > C++ code > > > The interaction is considerably more involved than might be naively > imagined. This design resembles LLVM’s approach of having a well-defined, > serializable intermediate format, to serve as a stable interface between > high-level code and low-level computational libraries and regression tests. > However, the downside is that each high-level language has to implement its > own version of this. In Julia we have both PyCall and Cxx, so we can easily > interact with and reuse either the Python one or the C++ one. > > So the suggestion on TensorFlow’s website that having SWIG support alone > will immediately make it possible to use TensorFlow from various languages > appears to be somewhat misleading: SWIG is only used to wrap ~20 functions > which have a simple C interface. If you look at the TensorFlow source, > you'll see that there's about a 2:1 ratio of C++ to Python code, so in its > current incarnation, using TensorFlow from any language *without* Python > seems unlikely. Given that you can't use TensorFlow without Python, Julia > is in a good position since it's very good at talking to both Python and > C++. > > Interesting. > > On Mon, Dec 14, 2015 at 2:17 PM, Phil Tomson <philt...@gmail.com > <javascript:>> wrote: > >> TensorFlow is written in C++ and they use SWIG to generate wrappers for >> Python. There is no Julia target for SWIG, but looking at some discussions >> here seems to indicate that SWIG for Julia is kind of pointless given that >> things like Cxx.jl exist. >> >> However, Cxx.jl requires special dev versions of both Julia and LLVM so >> it's not an "out of the box" experience just yet. >> >> There was a thread on TensorFlow here a few weeks back, I'm wondering if >> anyone was was working on Julia/TensorFlow interoperability? >> >> Are there alternatives to Cxx.jl for this kind of thing? Will Cxx.jl ever >> be at the point where we can use it with a standard release of Julia? >> >> Phil >> > >