<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div>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.</div><div><br class=""></div><div>here are some pre-compiled (in asm.js) binaries using fann you can download and run directly in nodejs:</div><div><a href="https://github.com/kaizhu256/node-fann-lite/tree/examples/external/examples" class="">https://github.com/kaizhu256/node-fann-lite/tree/examples/external/examples</a></div><div><a href="https://github.com/kaizhu256/node-fann-lite/blob/examples/external/examples/Makefile#L20" class="">https://github.com/kaizhu256/node-fann-lite/blob/examples/external/examples/Makefile#L20</a></div><div><br class=""></div><div>performance-wise, the asm-variants running in nodejs train about 4x slower than their native c-compiled counterparts</div><div class=""><br class=""></div><div><blockquote type="cite" class=""><div class="">On Jan 28, 2018, at 10:54 PM, Robert Eisele <<a href="mailto:robert@xarg.org" class="">robert@xarg.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" class="">
  
  <div text="#000000" bgcolor="#FFFFFF" class=""><p class="">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.<br class="">
    </p><p class="">The link of J Decker is a good starting reference <a href="https://github.com/yiransheng/tensor-ops-js" class="">https://github.com/yiransheng/tensor-ops-js</a></p><p class="">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.</p><p class="">And I think all these points make tensors a good fit for Web
      Assembly.</p><p class="">Robert<br class="">
    </p>
    <div class="moz-cite-prefix">Am 28.01.18 um 15:08 schrieb MichaƂ
      Wadas:<br class="">
    </div>
    <blockquote type="cite" cite="mid:CAMEnU0DCy1e4ECU3joiJP=8z8JN0ZiuZjnJtDfCv-5c_pA1DPQ@mail.gmail.com" class="">
      <div dir="auto" class="">
        <div class="">Why should be it included in standard library?
          <div dir="auto" class=""><br class="">
          </div>
          <div dir="auto" class="">Are there widely used  libraries providing
            similar capabilities?</div>
          <div dir="auto" class=""><br class="">
          </div>
          <div dir="auto" class="">Why is it preferable to implementing tensor
            operations in Web Assembly? </div>
          <br class="">
          <div class="gmail_extra"><br class="">
            <div class="gmail_quote">On 27 Jan 2018 2:50 am, "Robert
              Eisele" <<a href="mailto:robert@xarg.org" moz-do-not-send="true" class="">robert@xarg.org</a>> wrote:<br type="attribution" class="">
              <blockquote class="quote" style="margin:0 0 0
                .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br class="">
                <br class="">
                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.<br class="">
                <br class="">
                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.<br class="">
                <br class="">
                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:<br class="">
                <br class="">
                - IntXTensor<br class="">
                - UintXTensor<br class="">
                - FloatXTensor<br class="">
                <br class="">
                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.<br class="">
                <br class="">
                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.<br class="">
                <br class="">
                What do you think about it?<br class="">
                <br class="">
                Robert Eisele<br class="">
                <br class="">
                ______________________________<wbr class="">_________________<br class="">
                es-discuss mailing list<br class="">
                <a href="mailto:es-discuss@mozilla.org" target="_blank" moz-do-not-send="true" class="">es-discuss@mozilla.org</a><br class="">
                <a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank" moz-do-not-send="true" class="">https://mail.mozilla.org/listi<wbr class="">nfo/es-discuss</a><br class="">
              </blockquote>
            </div>
            <br class="">
          </div>
        </div>
      </div>
    </blockquote>
    <br class="">
  </div>

_______________________________________________<br class="">es-discuss mailing list<br class=""><a href="mailto:es-discuss@mozilla.org" class="">es-discuss@mozilla.org</a><br class="">https://mail.mozilla.org/listinfo/es-discuss<br class=""></div></blockquote></div><br class=""></body></html>