使用asm.js将依赖于外部库的代码转换为javascript

时间:2017-04-28 09:06:33

标签: llvm torch emscripten asm.js

(NB我仍然对asm.js如何工作以及它可以“自动转换”的软件类型感到困惑,而且我仍然对从原始源自动转换堆栈中的许多术语感到困惑。 如果您认为需要进行投票,请善待并提出建设性意见。)

如何使用asm.js转换依赖于许多外部库运行的代码?

  • 在这种复杂的依赖情况下,您将emscripten应用于什么?

  • 是否存在某些类别的基于c的软件,这是不行的?

例如 - pix2pix

似乎因为pix2pix基于Torch,最终使用llvm,这似乎asm.js可以转换它?

1 个答案:

答案 0 :(得分:0)

简而言之,emscripten需要llvm代码(它是从C ++代码生成的,但理论上可以是llvm支持的任何语言)并将其转换为javascript。您可以在论文here

中详细了解详情

由此可以清楚地知道它需要C ++源代码才能编译为js。

那么C ++标准库呢? Emscripten有一些C ++库函数的端口。你有文件系统仿真(仿真,因为浏览器不允许fs访问js代码。但是如果nodejs它工作),容器,算法等的实现。 不支持线程,因为它是js不直接支持的功能(特别是在生产浏览器中)

这也应该清楚地说明任何与平台相关的代码都不起作用(除非你也有源代码形式。)

例如pix2pix似乎正在使用NVIDIA CUDA库才能在GPU上运行。这是由NVIDIA通过平台特定的驱动程序提供的,因此无法将其转换为emscripten。 但是如果这个库的核心逻辑可以独立于平台代码而且它依赖的每个库也以源代码形式提供,那么应该可以创建pix2pix的asm.js端口。