Native Tensor support

kai zhu kaizhu256 at gmail.com
Sun Jan 28 15:58:48 UTC 2018


for stuff like machine-learning, using web-assembly / asm.js on an existing c/c++ library is probably more practical than trying to roll your own in javascript.

here are some pre-compiled (in asm.js) binaries using fann you can download and run directly in nodejs:
https://github.com/kaizhu256/node-fann-lite/tree/examples/external/examples <https://github.com/kaizhu256/node-fann-lite/tree/examples/external/examples>
https://github.com/kaizhu256/node-fann-lite/blob/examples/external/examples/Makefile#L20 <https://github.com/kaizhu256/node-fann-lite/blob/examples/external/examples/Makefile#L20>

performance-wise, the asm-variants running in nodejs train about 4x slower than their native c-compiled counterparts

> On Jan 28, 2018, at 10:54 PM, Robert Eisele <robert at xarg.org> wrote:
> 
> The capabilities of the language itself are growing with each version. It's not that the first version of JavaScript would not be appropriate for today's web applications, but since we identify regular patterns in a language, we are able to add more layers of abstraction. But not only syntactic features can be abstracted to describe what the programmer wants with as little code as possible to give the engines more room for optimization, also the standard library should get extended. And I mean, it gets extended quite a lot - so tensors could be just one of these additions.
> The link of J Decker is a good starting reference https://github.com/yiransheng/tensor-ops-js <https://github.com/yiransheng/tensor-ops-js>
> It's not hard to use the features of JavaScript to implement a library like this. The hard part is to make an API like this as fast as possible to meet future demands for web applications. And this is the purpose of a standard library: 1) Providing regular functionalities without the need of external dependencies (e.g. libraries) and 2) Making them as fast and accurate as possible on a given machine.
> 
> And I think all these points make tensors a good fit for Web Assembly.
> 
> Robert
> Am 28.01.18 um 15:08 schrieb Michał Wadas:
>> Why should be it included in standard library?
>> 
>> Are there widely used  libraries providing similar capabilities?
>> 
>> Why is it preferable to implementing tensor operations in Web Assembly? 
>> 
>> 
>> On 27 Jan 2018 2:50 am, "Robert Eisele" <robert at xarg.org <mailto:robert at xarg.org>> wrote:
>> Hello,
>> 
>> Allocating multi-dimensional arrays in Javascript is only possible by building each dimension individually. In addition to being a very tedious job, a developer has no control over memory usage, which in general is likely to be very high.
>> 
>> Seeing an array algebraically as a vector, typed arrays have already created the ability to work more efficiently and memory-consciously with lists of numbers. A natural extension of this is not just a matrix, but a tensor.
>> 
>> I would like to suggest tensors as a native language construct in ES. This would have the advantage that developers could write highly parallelizable code independently of WebGL. As an API one could introduce the following classes in analogy to typed arrays:
>> 
>> - IntXTensor
>> - UintXTensor
>> - FloatXTensor
>> 
>> Where X is one of {8, 16, 32, 64}. To make these tensor objects really effective, it is necessary to introduce meaningful operations, maybe similar to the features of TensorFlow. I think by introducing tensors in the browser (but also node.js), a wide range of new applications open up. For example, working with deep learning right in the browser or calculating filters on images without having to write shaders for them.
>> 
>> The most important thing probably is having a way of storing high dimensional data in the browser without worrying about the memory footprint, even for complex applications.
>> 
>> What do you think about it?
>> 
>> Robert Eisele
>> 
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
>> https://mail.mozilla.org/listinfo/es-discuss <https://mail.mozilla.org/listinfo/es-discuss>
>> 
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180128/92342189/attachment.html>


More information about the es-discuss mailing list