chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
<html>
|
||||
<!--- Licensed to the Apache Software Foundation (ASF) under one -->
|
||||
<!--- or more contributor license agreements. See the NOTICE file -->
|
||||
<!--- distributed with this work for additional information -->
|
||||
<!--- regarding copyright ownership. The ASF licenses this file -->
|
||||
<!--- to you under the Apache License, Version 2.0 (the -->
|
||||
<!--- "License"); you may not use this file except in compliance -->
|
||||
<!--- with the License. You may obtain a copy of the License at -->
|
||||
|
||||
<!--- http://www.apache.org/licenses/LICENSE-2.0 -->
|
||||
|
||||
<!--- Unless required by applicable law or agreed to in writing, -->
|
||||
<!--- software distributed under the License is distributed on an -->
|
||||
<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
|
||||
<!--- KIND, either express or implied. See the License for the -->
|
||||
<!--- specific language governing permissions and limitations -->
|
||||
<!--- under the License. -->
|
||||
<!DOCTYPE html>
|
||||
|
||||
<head lang="en-US"></head>
|
||||
<title>TVM RPC Test Page</title>
|
||||
</head>
|
||||
|
||||
<meta http-equiv="origin-trial" content="Agx76XA0ITxMPF0Z8rbbcMllwuxsyp9qdtQaXlLqu1JUrdHB6FPonuyIKJ3CsBREUkeioJck4nn3KO0c0kkwqAMAAABJeyJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0Ojg4ODgiLCJmZWF0dXJlIjoiV2ViR1BVIiwiZXhwaXJ5IjoxNjkxNzExOTk5fQ==">
|
||||
|
||||
<script src="tvmjs_runtime.wasi.js"></script>
|
||||
<script src="tvmjs.bundle.js"></script>
|
||||
<script>
|
||||
// Global environment
|
||||
var tvmjsGlobalEnv = {};
|
||||
|
||||
function customLog(message) {
|
||||
console.log(message);
|
||||
const d = document.createElement("div");
|
||||
d.innerHTML = message;
|
||||
document.getElementById("log").appendChild(d);
|
||||
};
|
||||
|
||||
function clearLog() {
|
||||
const node = document.getElementById("log");
|
||||
while (node.hasChildNodes()) {
|
||||
node.removeChild(node.lastChild);
|
||||
}
|
||||
}
|
||||
|
||||
function initProgressCallback(report) {
|
||||
document.getElementById("rpc-progress-tracker-label").innerHTML = report.text;
|
||||
document.getElementById("rpc-progress-tracker-progress").value = report.progress * 100;
|
||||
}
|
||||
|
||||
function connectRPC() {
|
||||
const proxyUrl = document.getElementById("proxyUrl").value;
|
||||
const key = document.getElementById("proxyKey").value;
|
||||
const tensorCacheName = document.getElementById("cache-select").value;
|
||||
let tensorCacheUrl = new URL(tensorCacheName + "/", document.URL).href;
|
||||
let tensorCacheDevice = document.getElementById("tensorCacheDevice").value;
|
||||
|
||||
if (tensorCacheName == "none" || tensorCacheName === undefined) {
|
||||
tensorCacheUrl = "";
|
||||
}
|
||||
|
||||
// only works for once.
|
||||
const getImports = () => {
|
||||
return new EmccWASI();
|
||||
};
|
||||
|
||||
new tvmjs.RPCServer(
|
||||
proxyUrl, key, getImports, customLog,
|
||||
tensorCacheUrl, tensorCacheDevice, initProgressCallback,
|
||||
tvmjsGlobalEnv.asyncOnRPCServerLoad);
|
||||
}
|
||||
|
||||
async function loadCacheOption() {
|
||||
const select = document.getElementById("cache-select");
|
||||
try {
|
||||
const list = await (await fetch("/cache-list.json")).json()
|
||||
for (let i = 0; i < list.length; ++i) {
|
||||
const option = document.createElement("option");
|
||||
option.text = list[i];
|
||||
option.value = list[i];
|
||||
select.add(option);
|
||||
}
|
||||
if (list.length != 0) {
|
||||
select.value = list[0];
|
||||
}
|
||||
} catch (err) {}
|
||||
}
|
||||
</script>
|
||||
<script src="https://code.jquery.com/jquery-3.6.3.min.js" integrity="sha256-pvPw+upLPUjgMXY0G+8O0xUf+/Im1MZjXxxgOcBQBXU=" crossorigin="anonymous"></script>
|
||||
<script>
|
||||
$(function(){
|
||||
$("#includeRPCPlugin").load("rpc_plugin.html");
|
||||
});
|
||||
</script>
|
||||
<body onload="loadCacheOption()">
|
||||
<h1>TVM WebSocket RPC Server</h1>
|
||||
To use this page
|
||||
<ul>
|
||||
<li>Run "make" and "npm run bundle" to create the libraries.</li>
|
||||
<li>
|
||||
run "python -m tvm.exec.rpc_proxy --example-rpc=1" to start proxy.
|
||||
</li>
|
||||
<li>Click Connect to proxy.</li>
|
||||
<li>run "python tests/python/websock_rpc_test.py" to run the rpc client.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Options</h2>
|
||||
Proxy URL <input
|
||||
name="proxyrl"
|
||||
id="proxyUrl"
|
||||
type="text"
|
||||
value="ws://localhost:8888/ws"
|
||||
/><br />
|
||||
RPC Server Key <input
|
||||
name="serverkey"
|
||||
id="proxyKey"
|
||||
type="text"
|
||||
value="wasm"
|
||||
/><br />
|
||||
TensorCache -
|
||||
<select name="cache-name" id="cache-select">
|
||||
<option value="none">none</option>
|
||||
</select>
|
||||
CacheDevice -
|
||||
<select name="cache-device" id="tensorCacheDevice">
|
||||
<option value="webgpu">webgpu</option>
|
||||
<option value="cpu">cpu</option>
|
||||
</select>
|
||||
<br />
|
||||
<button onclick="connectRPC()">Connect To Proxy</button>
|
||||
<button onclick="clearLog()">Clear Log</button>
|
||||
<div id="progress">
|
||||
<label id="rpc-progress-tracker-label"> </label> <br>
|
||||
<progress id="rpc-progress-tracker-progress" max="100" value="100"> </progress>
|
||||
</div>
|
||||
<div id="includeRPCPlugin"></div>
|
||||
<div id="log"></div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user