<html>

<head>
  <meta charset="UTF-8">
  <title>TVM RPC Test Page</title>
</head>

<body>
  <h1>TVM Test Page</h1>
  <div id="log"></div>
  <canvas id="canvas"></canvas>
  <script>
    var Module = {};
    Module["canvas"] = document.getElementById("canvas");
  </script>
  <script src="identity_static.js"></script>
  <script src="tvm_runtime.js"></script>
  <script>
    var tvm = tvm_runtime.create(Module);
    tvm.logger = function (message) {
      console.log(message);
      var d = document.createElement("div");
      d.innerHTML = message;
      document.getElementById("log").appendChild(d);
    };

    function randomArray(length, max) {
      return Array.apply(null, Array(length)).map(function () {
        return Math.random() * max;
      });
    }

    setTimeout(function () {
      this.syslib = tvm.systemLib();
      this.identity = this.syslib.getFunction("identity");

      this.n = 16;
      this.a = randomArray(this.n, 1);
      this.ctx = tvm.context("opengl", 0);
      this.A = tvm.empty(this.n, "float32", ctx).copyFrom(this.a);
      this.B = tvm.empty(this.n, "float32", ctx);
      identity(this.A, this.B);

      this.a = this.A.asArray();
      this.b = this.B.asArray();
      for (var i = 0; i < n; ++i) {
        tvm.assert(this.a[i] == this.b[i]);
      }
      this.identity.release();
    }, 1000);

  </script>
</body>

</html>