mil-tokyo / webdnn

The Fastest DNN Running Framework on Web Browser
https://mil-tokyo.github.io/webdnn
Other
1.97k stars 145 forks source link

WebAssembly LLVM does not find Eigen libraries #777

Open kmader opened 6 years ago

kmader commented 6 years ago

I have setup a test environment with libeigen3-dev installed (/usr/include/eigen3)

The webassembly block https://github.com/mil-tokyo/webdnn/blob/afe16593463b3ee9519d285baf693547fd5f25f9/src/graph_transpiler/webdnn/backend/webassembly/generator.py#L78-L99

does not find eigen and reports

BackendName: webassembly
Executing em++ command failed. Make sure emscripten is properly installed and environment variables are set.
Failed generating descriptor for webassembly backend
Traceback (most recent call last):
  File "<ipython-input-7-f434e3d359d6>", line 8, in <module>
    graph_exec_data.save(output_dir)
  File "/home/jovyan/.local/lib/python3.6/site-packages/webdnn/backend/webassembly/generator.py", line 50, in save
    self._compile_fallback_asmjs(dirname)
  File "/home/jovyan/.local/lib/python3.6/site-packages/webdnn/backend/webassembly/generator.py", line 99, in _compile_fallback_asmjs
    raise ex
  File "/home/jovyan/.local/lib/python3.6/site-packages/webdnn/backend/webassembly/generator.py", line 95, in _compile_fallback_asmjs
    subprocess.check_call(args, shell=self.platform_windows)
  File "/srv/conda/lib/python3.6/subprocess.py", line 291, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['em++', './webdnn_graph_descriptor/kernels_webassembly.cpp', '-O3', '-std=c++11', '-s', "EXPORTED_FUNCTIONS=['_run','_init','_get_static_buffer','_allocate_dynamic_buffer','_get_dynamic_buffer','_set_placeholder_value']", '-s', 'TOTAL_MEMORY=234881024', '--pre-js', '/home/jovyan/.local/lib/python3.6/site-packages/webdnn/backend/webassembly/webassembly_header.js', '-o', './webdnn_graph_descriptor/kernels_asmjs.js']' returned non-zero exit status 1.

If you execute the command directly, you get the more specific error message

Input

!em++ ./webdnn_graph_descriptor/kernels_webassembly.cpp -O3 -std=c++11 -s "EXPORTED_FUNCTIONS=['_run','_init','_get_static_buffer','_allocate_dynamic_buffer','_get_dynamic_buffer','_set_placeholder_value']" -s TOTAL_MEMORY=234881024 --pre-js /home/jovyan/.local/lib/python3.6/site-packages/webdnn/backend/webassembly/webassembly_header.js -o ./webdnn_graph_descriptor/kernels_asmjs.js

output

./webdnn_graph_descriptor/kernels_webassembly.cpp:202:10: fatal error: 
      'Eigen/Dense' file not found
#include <Eigen/Dense>
         ^~~~~~~~~~~~~
1 error generated.
ERROR    root: compiler frontend failed to generate LLVM bitcode, halting
belalessandro commented 5 years ago

Eigen is needed as the library. Download latest source from http://eigen.tuxfamily.org/index.php?title=Main_Page and decompress.

Move Eigen directory into emsdk/emscripten//system/include. is version number of emscripten. The file include/Eigen/Dense have to exist.