ya0guang opened a new issue #8439:
URL: https://github.com/apache/tvm/issues/8439


   When @mssun and me try to rebuild [wasm-standalone 
app](https://github.com/apache/tvm/tree/main/apps/wasm-standalone), we 
encountered several problems. Some of them were fixed TEMPORARILY, and we 
failed to get over some problems.
   
   ## My environment
   
   TVM: e3e03df3b6ad35ca81671284d229d1b37b032a27, default config, except 
`USE_LLVM ON`
   rustc: 1.53.0
   LLVM: 12.0.0
   Python: 3.9.5
   
   ## Problem 1: `build_graph_lib.py` doesn't work
   
   An error occurs when I tried to run the script (`LLVM_AR=llvm-ar python 
./build_graph_lib.py -O3 ./resnet50v1.onnx 
   `). The error message is:
   ```sh
   Traceback (most recent call last):
     File 
"/home/ya0guang/Code/tvm/apps/wasm-standalone/wasm-graph/tools/./build_graph_lib.py",
 line 79, in <module>
       build_graph_lib(args.model_file, args.opt_level)
     File 
"/home/ya0guang/Code/tvm/apps/wasm-standalone/wasm-graph/tools/./build_graph_lib.py",
 line 47, in build_graph_lib
       mod, params = _get_mod_and_params(model_file)
     File 
"/home/ya0guang/Code/tvm/apps/wasm-standalone/wasm-graph/tools/./build_graph_lib.py",
 line 37, in _get_mod_and_params
       return relay.frontend.from_onnx(onnx_model, shape_dict)
     File "/home/ya0guang/Code/tvm/python/tvm/relay/frontend/onnx.py", line 
3820, in from_onnx
       mod, params = g.from_onnx(graph, opset)
     File "/home/ya0guang/Code/tvm/python/tvm/relay/frontend/onnx.py", line 
3559, in from_onnx
       assert all(
   AssertionError: User specified the shape for inputs that weren't found in 
the graph: {'data': [1, 3, 224, 224], 'resnetv17_conv0_weight': [64, 3, 7, 7], 
'resnetv17_batchnorm0_gamma': [64], 'resnetv17_batchnorm0_beta': [64], 
'resnetv17_batchnorm0_running_mean': [64], 'resnetv17_batchnorm0_running_var': 
[64], 'resnetv17_stage1_conv0_weight': [64, 64, 1, 1], 
'resnetv17_stage1_conv0_bias': [64], 'resnetv17_stage1_batchnorm0_gamma': [64], 
'resnetv17_stage1_batchnorm0_beta': [64], 
'resnetv17_stage1_batchnorm0_running_mean': [64], 
'resnetv17_stage1_batchnorm0_running_var': [64], 
'resnetv17_stage1_conv1_weight': [64, 64, 3, 3], 
'resnetv17_stage1_batchnorm1_gamma': [64], 'resnetv17_stage1_batchnorm1_beta': 
[64], 'resnetv17_stage1_batchnorm1_running_mean': [64], 
'resnetv17_stage1_batchnorm1_running_var': [64], 
'resnetv17_stage1_conv2_weight': [256, 64, 1, 1], 
'resnetv17_stage1_conv2_bias': [256], 'resnetv17_stage1_batchnorm2_gamma': 
[256], 'resnetv17_stage1_batchnorm2_beta': [256], 'resnetv
 17_stage1_batchnorm2_running_mean': [256], 
'resnetv17_stage1_batchnorm2_running_var': [256], 
'resnetv17_stage1_conv3_weight': [256, 64, 1, 1], 
'resnetv17_stage1_batchnorm3_gamma': [256], 'resnetv17_stage1_batchnorm3_beta': 
[256], 'resnetv17_stage1_batchnorm3_running_mean': [256], 
'resnetv17_stage1_batchnorm3_running_var': [256], 
'resnetv17_stage1_conv4_weight': [64, 256, 1, 1], 
'resnetv17_stage1_conv4_bias': [64], 'resnetv17_stage1_batchnorm4_gamma': [64], 
'resnetv17_stage1_batchnorm4_beta': [64], 
'resnetv17_stage1_batchnorm4_running_mean': [64], 
'resnetv17_stage1_batchnorm4_running_var': [64], 
'resnetv17_stage1_conv5_weight': [64, 64, 3, 3], 
'resnetv17_stage1_batchnorm5_gamma': [64], 'resnetv17_stage1_batchnorm5_beta': 
[64], 'resnetv17_stage1_batchnorm5_running_mean': [64], 
'resnetv17_stage1_batchnorm5_running_var': [64], 
'resnetv17_stage1_conv6_weight': [256, 64, 1, 1], 
'resnetv17_stage1_conv6_bias': [256], 'resnetv17_stage1_batchnorm6_gamma': 
[256], 'resnetv17_stage1_batchnorm6_b
 eta': [256], 'resnetv17_stage1_batchnorm6_running_mean': [256], 
'resnetv17_stage1_batchnorm6_running_var': [256], 
'resnetv17_stage1_conv7_weight': [64, 256, 1, 1], 
'resnetv17_stage1_conv7_bias': [64], 'resnetv17_stage1_batchnorm7_gamma': [64], 
'resnetv17_stage1_batchnorm7_beta': [64], 
'resnetv17_stage1_batchnorm7_running_mean': [64], 
'resnetv17_stage1_batchnorm7_running_var': [64], 
'resnetv17_stage1_conv8_weight': [64, 64, 3, 3], 
'resnetv17_stage1_batchnorm8_gamma': [64], 'resnetv17_stage1_batchnorm8_beta': 
[64], 'resnetv17_stage1_batchnorm8_running_mean': [64], 
'resnetv17_stage1_batchnorm8_running_var': [64], 
'resnetv17_stage1_conv9_weight': [256, 64, 1, 1], 
'resnetv17_stage1_conv9_bias': [256], 'resnetv17_stage1_batchnorm9_gamma': 
[256], 'resnetv17_stage1_batchnorm9_beta': [256], 
'resnetv17_stage1_batchnorm9_running_mean': [256], 
'resnetv17_stage1_batchnorm9_running_var': [256], 
'resnetv17_stage2_conv0_weight': [128, 256, 1, 1], 
'resnetv17_stage2_conv0_bias': [128], 'resnetv17_sta
 ge2_batchnorm0_gamma': [128], 'resnetv17_stage2_batchnorm0_beta': [128], 
'resnetv17_stage2_batchnorm0_running_mean': [128], 
'resnetv17_stage2_batchnorm0_running_var': [128], 
'resnetv17_stage2_conv1_weight': [128, 128, 3, 3], 
'resnetv17_stage2_batchnorm1_gamma': [128], 'resnetv17_stage2_batchnorm1_beta': 
[128], 'resnetv17_stage2_batchnorm1_running_mean': [128], 
'resnetv17_stage2_batchnorm1_running_var': [128], 
'resnetv17_stage2_conv2_weight': [512, 128, 1, 1], 
'resnetv17_stage2_conv2_bias': [512], 'resnetv17_stage2_batchnorm2_gamma': 
[512], 'resnetv17_stage2_batchnorm2_beta': [512], 
'resnetv17_stage2_batchnorm2_running_mean': [512], 
'resnetv17_stage2_batchnorm2_running_var': [512], 
'resnetv17_stage2_conv3_weight': [512, 256, 1, 1], 
'resnetv17_stage2_batchnorm3_gamma': [512], 'resnetv17_stage2_batchnorm3_beta': 
[512], 'resnetv17_stage2_batchnorm3_running_mean': [512], 
'resnetv17_stage2_batchnorm3_running_var': [512], 
'resnetv17_stage2_conv4_weight': [128, 512, 1, 1], 'resnetv17_stage2
 _conv4_bias': [128], 'resnetv17_stage2_batchnorm4_gamma': [128], 
'resnetv17_stage2_batchnorm4_beta': [128], 
'resnetv17_stage2_batchnorm4_running_mean': [128], 
'resnetv17_stage2_batchnorm4_running_var': [128], 
'resnetv17_stage2_conv5_weight': [128, 128, 3, 3], 
'resnetv17_stage2_batchnorm5_gamma': [128], 'resnetv17_stage2_batchnorm5_beta': 
[128], 'resnetv17_stage2_batchnorm5_running_mean': [128], 
'resnetv17_stage2_batchnorm5_running_var': [128], 
'resnetv17_stage2_conv6_weight': [512, 128, 1, 1], 
'resnetv17_stage2_conv6_bias': [512], 'resnetv17_stage2_batchnorm6_gamma': 
[512], 'resnetv17_stage2_batchnorm6_beta': [512], 
'resnetv17_stage2_batchnorm6_running_mean': [512], 
'resnetv17_stage2_batchnorm6_running_var': [512], 
'resnetv17_stage2_conv7_weight': [128, 512, 1, 1], 
'resnetv17_stage2_conv7_bias': [128], 'resnetv17_stage2_batchnorm7_gamma': 
[128], 'resnetv17_stage2_batchnorm7_beta': [128], 
'resnetv17_stage2_batchnorm7_running_mean': [128], 
'resnetv17_stage2_batchnorm7_running_var': [1
 28], 'resnetv17_stage2_conv8_weight': [128, 128, 3, 3], 
'resnetv17_stage2_batchnorm8_gamma': [128], 'resnetv17_stage2_batchnorm8_beta': 
[128], 'resnetv17_stage2_batchnorm8_running_mean': [128], 
'resnetv17_stage2_batchnorm8_running_var': [128], 
'resnetv17_stage2_conv9_weight': [512, 128, 1, 1], 
'resnetv17_stage2_conv9_bias': [512], 'resnetv17_stage2_batchnorm9_gamma': 
[512], 'resnetv17_stage2_batchnorm9_beta': [512], 
'resnetv17_stage2_batchnorm9_running_mean': [512], 
'resnetv17_stage2_batchnorm9_running_var': [512], 
'resnetv17_stage2_conv10_weight': [128, 512, 1, 1], 
'resnetv17_stage2_conv10_bias': [128], 'resnetv17_stage2_batchnorm10_gamma': 
[128], 'resnetv17_stage2_batchnorm10_beta': [128], 
'resnetv17_stage2_batchnorm10_running_mean': [128], 
'resnetv17_stage2_batchnorm10_running_var': [128], 
'resnetv17_stage2_conv11_weight': [128, 128, 3, 3], 
'resnetv17_stage2_batchnorm11_gamma': [128], 
'resnetv17_stage2_batchnorm11_beta': [128], 
'resnetv17_stage2_batchnorm11_running_mean': [128], 
 'resnetv17_stage2_batchnorm11_running_var': [128], 
'resnetv17_stage2_conv12_weight': [512, 128, 1, 1], 
'resnetv17_stage2_conv12_bias': [512], 'resnetv17_stage2_batchnorm12_gamma': 
[512], 'resnetv17_stage2_batchnorm12_beta': [512], 
'resnetv17_stage2_batchnorm12_running_mean': [512], 
'resnetv17_stage2_batchnorm12_running_var': [512], 
'resnetv17_stage3_conv0_weight': [256, 512, 1, 1], 
'resnetv17_stage3_conv0_bias': [256], 'resnetv17_stage3_batchnorm0_gamma': 
[256], 'resnetv17_stage3_batchnorm0_beta': [256], 
'resnetv17_stage3_batchnorm0_running_mean': [256], 
'resnetv17_stage3_batchnorm0_running_var': [256], 
'resnetv17_stage3_conv1_weight': [256, 256, 3, 3], 
'resnetv17_stage3_batchnorm1_gamma': [256], 'resnetv17_stage3_batchnorm1_beta': 
[256], 'resnetv17_stage3_batchnorm1_running_mean': [256], 
'resnetv17_stage3_batchnorm1_running_var': [256], 
'resnetv17_stage3_conv2_weight': [1024, 256, 1, 1], 
'resnetv17_stage3_conv2_bias': [1024], 'resnetv17_stage3_batchnorm2_gamma': 
[1024], 'resnetv17_
 stage3_batchnorm2_beta': [1024], 'resnetv17_stage3_batchnorm2_running_mean': 
[1024], 'resnetv17_stage3_batchnorm2_running_var': [1024], 
'resnetv17_stage3_conv3_weight': [1024, 512, 1, 1], 
'resnetv17_stage3_batchnorm3_gamma': [1024], 
'resnetv17_stage3_batchnorm3_beta': [1024], 
'resnetv17_stage3_batchnorm3_running_mean': [1024], 
'resnetv17_stage3_batchnorm3_running_var': [1024], 
'resnetv17_stage3_conv4_weight': [256, 1024, 1, 1], 
'resnetv17_stage3_conv4_bias': [256], 'resnetv17_stage3_batchnorm4_gamma': 
[256], 'resnetv17_stage3_batchnorm4_beta': [256], 
'resnetv17_stage3_batchnorm4_running_mean': [256], 
'resnetv17_stage3_batchnorm4_running_var': [256], 
'resnetv17_stage3_conv5_weight': [256, 256, 3, 3], 
'resnetv17_stage3_batchnorm5_gamma': [256], 'resnetv17_stage3_batchnorm5_beta': 
[256], 'resnetv17_stage3_batchnorm5_running_mean': [256], 
'resnetv17_stage3_batchnorm5_running_var': [256], 
'resnetv17_stage3_conv6_weight': [1024, 256, 1, 1], 
'resnetv17_stage3_conv6_bias': [1024], 'resnetv1
 7_stage3_batchnorm6_gamma': [1024], 'resnetv17_stage3_batchnorm6_beta': 
[1024], 'resnetv17_stage3_batchnorm6_running_mean': [1024], 
'resnetv17_stage3_batchnorm6_running_var': [1024], 
'resnetv17_stage3_conv7_weight': [256, 1024, 1, 1], 
'resnetv17_stage3_conv7_bias': [256], 'resnetv17_stage3_batchnorm7_gamma': 
[256], 'resnetv17_stage3_batchnorm7_beta': [256], 
'resnetv17_stage3_batchnorm7_running_mean': [256], 
'resnetv17_stage3_batchnorm7_running_var': [256], 
'resnetv17_stage3_conv8_weight': [256, 256, 3, 3], 
'resnetv17_stage3_batchnorm8_gamma': [256], 'resnetv17_stage3_batchnorm8_beta': 
[256], 'resnetv17_stage3_batchnorm8_running_mean': [256], 
'resnetv17_stage3_batchnorm8_running_var': [256], 
'resnetv17_stage3_conv9_weight': [1024, 256, 1, 1], 
'resnetv17_stage3_conv9_bias': [1024], 'resnetv17_stage3_batchnorm9_gamma': 
[1024], 'resnetv17_stage3_batchnorm9_beta': [1024], 
'resnetv17_stage3_batchnorm9_running_mean': [1024], 
'resnetv17_stage3_batchnorm9_running_var': [1024], 'resnetv17_sta
 ge3_conv10_weight': [256, 1024, 1, 1], 'resnetv17_stage3_conv10_bias': [256], 
'resnetv17_stage3_batchnorm10_gamma': [256], 
'resnetv17_stage3_batchnorm10_beta': [256], 
'resnetv17_stage3_batchnorm10_running_mean': [256], 
'resnetv17_stage3_batchnorm10_running_var': [256], 
'resnetv17_stage3_conv11_weight': [256, 256, 3, 3], 
'resnetv17_stage3_batchnorm11_gamma': [256], 
'resnetv17_stage3_batchnorm11_beta': [256], 
'resnetv17_stage3_batchnorm11_running_mean': [256], 
'resnetv17_stage3_batchnorm11_running_var': [256], 
'resnetv17_stage3_conv12_weight': [1024, 256, 1, 1], 
'resnetv17_stage3_conv12_bias': [1024], 'resnetv17_stage3_batchnorm12_gamma': 
[1024], 'resnetv17_stage3_batchnorm12_beta': [1024], 
'resnetv17_stage3_batchnorm12_running_mean': [1024], 
'resnetv17_stage3_batchnorm12_running_var': [1024], 
'resnetv17_stage3_conv13_weight': [256, 1024, 1, 1], 
'resnetv17_stage3_conv13_bias': [256], 'resnetv17_stage3_batchnorm13_gamma': 
[256], 'resnetv17_stage3_batchnorm13_beta': [256], 'resnetv17_st
 age3_batchnorm13_running_mean': [256], 
'resnetv17_stage3_batchnorm13_running_var': [256], 
'resnetv17_stage3_conv14_weight': [256, 256, 3, 3], 
'resnetv17_stage3_batchnorm14_gamma': [256], 
'resnetv17_stage3_batchnorm14_beta': [256], 
'resnetv17_stage3_batchnorm14_running_mean': [256], 
'resnetv17_stage3_batchnorm14_running_var': [256], 
'resnetv17_stage3_conv15_weight': [1024, 256, 1, 1], 
'resnetv17_stage3_conv15_bias': [1024], 'resnetv17_stage3_batchnorm15_gamma': 
[1024], 'resnetv17_stage3_batchnorm15_beta': [1024], 
'resnetv17_stage3_batchnorm15_running_mean': [1024], 
'resnetv17_stage3_batchnorm15_running_var': [1024], 
'resnetv17_stage3_conv16_weight': [256, 1024, 1, 1], 
'resnetv17_stage3_conv16_bias': [256], 'resnetv17_stage3_batchnorm16_gamma': 
[256], 'resnetv17_stage3_batchnorm16_beta': [256], 
'resnetv17_stage3_batchnorm16_running_mean': [256], 
'resnetv17_stage3_batchnorm16_running_var': [256], 
'resnetv17_stage3_conv17_weight': [256, 256, 3, 3], 
'resnetv17_stage3_batchnorm17_gamma': 
 [256], 'resnetv17_stage3_batchnorm17_beta': [256], 
'resnetv17_stage3_batchnorm17_running_mean': [256], 
'resnetv17_stage3_batchnorm17_running_var': [256], 
'resnetv17_stage3_conv18_weight': [1024, 256, 1, 1], 
'resnetv17_stage3_conv18_bias': [1024], 'resnetv17_stage3_batchnorm18_gamma': 
[1024], 'resnetv17_stage3_batchnorm18_beta': [1024], 
'resnetv17_stage3_batchnorm18_running_mean': [1024], 
'resnetv17_stage3_batchnorm18_running_var': [1024], 
'resnetv17_stage4_conv0_weight': [512, 1024, 1, 1], 
'resnetv17_stage4_conv0_bias': [512], 'resnetv17_stage4_batchnorm0_gamma': 
[512], 'resnetv17_stage4_batchnorm0_beta': [512], 
'resnetv17_stage4_batchnorm0_running_mean': [512], 
'resnetv17_stage4_batchnorm0_running_var': [512], 
'resnetv17_stage4_conv1_weight': [512, 512, 3, 3], 
'resnetv17_stage4_batchnorm1_gamma': [512], 'resnetv17_stage4_batchnorm1_beta': 
[512], 'resnetv17_stage4_batchnorm1_running_mean': [512], 
'resnetv17_stage4_batchnorm1_running_var': [512], 
'resnetv17_stage4_conv2_weight': [204
 8, 512, 1, 1], 'resnetv17_stage4_conv2_bias': [2048], 
'resnetv17_stage4_batchnorm2_gamma': [2048], 
'resnetv17_stage4_batchnorm2_beta': [2048], 
'resnetv17_stage4_batchnorm2_running_mean': [2048], 
'resnetv17_stage4_batchnorm2_running_var': [2048], 
'resnetv17_stage4_conv3_weight': [2048, 1024, 1, 1], 
'resnetv17_stage4_batchnorm3_gamma': [2048], 
'resnetv17_stage4_batchnorm3_beta': [2048], 
'resnetv17_stage4_batchnorm3_running_mean': [2048], 
'resnetv17_stage4_batchnorm3_running_var': [2048], 
'resnetv17_stage4_conv4_weight': [512, 2048, 1, 1], 
'resnetv17_stage4_conv4_bias': [512], 'resnetv17_stage4_batchnorm4_gamma': 
[512], 'resnetv17_stage4_batchnorm4_beta': [512], 
'resnetv17_stage4_batchnorm4_running_mean': [512], 
'resnetv17_stage4_batchnorm4_running_var': [512], 
'resnetv17_stage4_conv5_weight': [512, 512, 3, 3], 
'resnetv17_stage4_batchnorm5_gamma': [512], 'resnetv17_stage4_batchnorm5_beta': 
[512], 'resnetv17_stage4_batchnorm5_running_mean': [512], 
'resnetv17_stage4_batchnorm5_running_va
 r': [512], 'resnetv17_stage4_conv6_weight': [2048, 512, 1, 1], 
'resnetv17_stage4_conv6_bias': [2048], 'resnetv17_stage4_batchnorm6_gamma': 
[2048], 'resnetv17_stage4_batchnorm6_beta': [2048], 
'resnetv17_stage4_batchnorm6_running_mean': [2048], 
'resnetv17_stage4_batchnorm6_running_var': [2048], 
'resnetv17_stage4_conv7_weight': [512, 2048, 1, 1], 
'resnetv17_stage4_conv7_bias': [512], 'resnetv17_stage4_batchnorm7_gamma': 
[512], 'resnetv17_stage4_batchnorm7_beta': [512], 
'resnetv17_stage4_batchnorm7_running_mean': [512], 
'resnetv17_stage4_batchnorm7_running_var': [512], 
'resnetv17_stage4_conv8_weight': [512, 512, 3, 3], 
'resnetv17_stage4_batchnorm8_gamma': [512], 'resnetv17_stage4_batchnorm8_beta': 
[512], 'resnetv17_stage4_batchnorm8_running_mean': [512], 
'resnetv17_stage4_batchnorm8_running_var': [512], 
'resnetv17_stage4_conv9_weight': [2048, 512, 1, 1], 
'resnetv17_stage4_conv9_bias': [2048], 'resnetv17_stage4_batchnorm9_gamma': 
[2048], 'resnetv17_stage4_batchnorm9_beta': [2048], 'resne
 tv17_stage4_batchnorm9_running_mean': [2048], 
'resnetv17_stage4_batchnorm9_running_var': [2048], 'resnetv17_dense0_weight': 
[1000, 2048], 'resnetv17_dense0_bias': [1000]}
   ```
   
   ### Hot fix
   
   We eliminate this error by modifying the function `_get_mod_and_params`: 
adding a line before return.
   
   ```sh
   def _get_mod_and_params(model_file):
       onnx_model = onnx.load(model_file)
       shape_dict = {}
       for input in onnx_model.graph.input:
           shape_dict[input.name] = [dim.dim_value for dim in 
input.type.tensor_type.shape.dim]
   
       shape_dict = {"data": shape_dict["data"]}
       return relay.frontend.from_onnx(onnx_model, shape_dict)
   ```
   
   ## Problem 2: Cargo cannot build `wasm-graph`
   
   The second problem is occurs while cargo trying to compile and link. (`cd 
wasm-graph && cargo build --release`)
   
   ```sh
   error: linking with `rust-lld` failed: exit status: 1
     |
     = note: "rust-lld" "-flavor" "wasm" "--rsp-quoting=posix" "-z" 
"stack-size=1048576" "--stack-first" "--allow-undefined" "--fatal-warnings" 
"--no-demangle" "-L" 
"/home/ya0guang/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-wasi/lib"
 "-L" 
"/home/ya0guang/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-wasi/lib/self-contained"
 
"/home/ya0guang/Code/tvm/apps/wasm-standalone/wasm-graph/target/wasm32-wasi/release/deps/wasm_graph.wasm_graph.9d8qt5z6-cgu.0.rcgu.o"
 "-o" 
"/home/ya0guang/Code/tvm/apps/wasm-standalone/wasm-graph/target/wasm32-wasi/release/deps/wasm_graph.wasm"
 "--export" "run" "--export" "TVMAPISetLastError" "--export" 
"TVMBackendAllocWorkspace" "--export" "TVMBackendFreeWorkspace" "--export" 
"TVMBackendParallelBarrier" "--export" "TVMBackendParallelLaunch" "--export" 
"TVMBackendRegisterSystemLibSymbol" "--export" "TVMGetLastError" 
"--export=__heap_base" "--export=__data_end" "--gc-sections" "--no-entry" "-O2" 
"-L" "/home/ya0guan
 g/Code/tvm/apps/wasm-standalone/wasm-graph/target/wasm32-wasi/release/deps" 
"-L" 
"/home/ya0guang/Code/tvm/apps/wasm-standalone/wasm-graph/target/release/deps" 
"-L" "/home/ya0guang/Code/tvm/apps/wasm-standalone/wasm-graph/lib" "-L" 
"/home/ya0guang/Code/tvm/build" "-L" 
"/home/ya0guang/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-wasi/lib"
 "/tmp/rustcB2Rq3f/liblibc-dd6fd16fbeb0b6c9.rlib" 
"/home/ya0guang/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-wasi/lib/libcompiler_builtins-55f71868fddeb6d1.rlib"
 "-l" "tvm" "--whole-archive" "-lgraph_wasm32"
     = note: rust-lld: error: unable to find library -ltvm
             
   
   error: aborting due to previous error
   
   error: could not compile `wasm-graph`
   
   To learn more, run the command again with --verbose.
   ```
   
   Actually the library `libtvm.so` does EXIST. However, it's a 64bit elf SO, 
which may not be linked to a WASM bytecode directly. 
   
   ### Hot fix
   
   This error comes from a dependency in `rust/tvm-sys`. We comment the snippet 
linking the **tvm** library in `build.rs` like this:
   ```rs
       // if cfg!(feature = "static-linking") {
       //     println!("cargo:rustc-link-lib=static=tvm");
       //     // TODO(@jroesch): move this to tvm-build as library_path?
       //     println!(
       //         "cargo:rustc-link-search=native={}/build",
       //         build_path.display()
       //     );
       // }
   
       // if cfg!(feature = "dynamic-linking") {
       //     println!("cargo:rustc-link-lib=dylib=tvm");
       //     println!(
       //         "cargo:rustc-link-search=native={}/build",
       //         build_path.display()
       //     );
       // }
   ```
   then it compiles. We cooment these lines because the code seems only use 
some data structures from the `tvm-sys`.
   
   ## Problem 3
   
   After the WASM file and test runtime have been successfully generated, the 
test program doens't work. 
   
   ```sh
   $ RUST_BACKTRACE=1 ./target/debug/test_graph_resnet50 -g 
./wasm_graph_resnet50.wasm -i ./cat.png -l ./synset.csv 
   original image dimensions: (256, 256)
   resized image dimensions: (224, 224)
   thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: 
stack operand type mismatch (at offset 227760)', src/main.rs:82:45
   stack backtrace:
      0: rust_begin_unwind
                at 
/rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/std/src/panicking.rs:493:5
      1: core::panicking::panic_fmt
                at 
/rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/core/src/panicking.rs:92:14
      2: core::result::unwrap_failed
                at 
/rustc/53cb7b09b00cbea8754ffb78e7e3cb521cb8af4b/library/core/src/result.rs:1355:5
      3: core::result::Result<T,E>::unwrap
                at 
/home/ya0guang/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:1037:23
      4: test_graph_resnet50::main
                at ./src/main.rs:82:5
      5: core::ops::function::FnOnce::call_once
                at 
/home/ya0guang/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5
   note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose 
backtrace.
   ```
   
   It seems like the WASM module cannot be instantiated successfully.
   
   ## Summary
   
   I have no confidence that all these hot fixes are correct. If someone can 
fix them and let it work, we will be more than grateful! 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to