Re:Torch7 – Scientific computing for LuaJIT
by benjaminva on Sunday June 22, 2014 @04:30PM
(#7929089)
Thanks to Luajit, the code you are writing will be compiled to efficient byte code which runs very fast. It's because Lua as a language is simple enough to produce light bytecode that can run in the CPUs cache.
Numpy will always do the job, but when speed is really critical, you might want to look into it.
[ Parent
| on HN ]
Re:Torch7 – Scientific computing for LuaJIT
by deanjones on Sunday June 22, 2014 @05:50PM
(#7929351)
I'm not an expert in LuaJIT, but it sounds unlikely that the performance characteristics of torch7 are due to the efficiency of Lua bytecode. The speed with which you can train NNs will be dominated by the performance of the linear algebra libraries which are utilised by the numerical optimisation algorithms (SGD, L-BFGS and the like). Almost everyone ends up using some variant of the BLAS libraries for this.
Someone I met recently said this (in rough words): "When I'm writing rough code in lua, it's completely acceptable to do a couple of for loops here and there without a disaster in speed. With python, this was a complete meltdown"
I'm not saying it all boils down to just this quote, but I thought it was interesting and wanted to replay it here.
Re:Torch7 – Scientific computing for LuaJIT
by ravich2_7183 on Monday June 23, 2014 @04:26AM
(#7930819)
This is true, but there are a couple of easy workarounds for it: Cython and scipy.weave
We're making progress on that front with Numba:
http://numba.pydata.org
Specifically, LuaJIT has a very well-designed bytecode optimized for decoding and with specialization for types. The bytecode dispatch is hand-written in assembly which exploits this. And this is all even if your code never sees a JIT -- LuaJIT JIT'd numerical code is competitive in microbenchmarks.