【问题标题】:Webassembly trig functions possible?可以使用 Webassembly 触发功能吗?
【发布时间】:2017-12-28 21:55:44
【问题描述】:

webassembly 是否支持三角函数?我的意思是像内置支持,因为似乎我们必须从 javascript 导入那些。如果我们有类似的东西会很棒:

f32.sin
f32.cos

如果有任何意义。如果它们不存在,我认为它是因为实现非常依赖于系统。

问题:

想象一下,我们有一些涉及这些数学函数的非常复杂且计算量大的公式。我想在 webassembly 中计算所有内容,而不依赖于导入或细分我的代码,其中一部分在 webassembly 中运行,另一部分在 javascript 中运行。

除此之外,我相信如果内置三角函数,语义上的东西看起来会更整洁。

【问题讨论】:

    标签: trigonometry webassembly


    【解决方案1】:

    三角函数在 WebAssembly 中不可用,尽管在 123 之前已经讨论过它。一般来说,WebAssembly 为作为 CPU 指令有效存在的东西提供操作码,而三角函数现在没有高效的 CPU 版本(即使 x86 sin / cos 也很慢)。

    此外,我们现在不想强制规定特定的精度范围。以正确的精度指定三角函数是一种艺术形式,到目前为止还没有引起强烈的兴趣。

    未来,我们希望看到类似 libm.wasm 的代码共享,这将消除代码下载负担。

    可以提出一个论点,即如果拥有 ISA 信息,实施可能会更有效,但我们需要有人用数据来支持该用例以对其进行标准化。我希望第一个这样的情况是快速 sqrt 和逆 sqrt 近似,它们经常在游戏中使用并且确实具有良好的 ISA 支持。在 WebAssembly 的上下文中,我还没有听说过真正对性能敏感的三角函数用法。并不是说我认为它们不存在:这是Community Group 的简单优先级问题。

    【讨论】:

    • 我刚刚创建了一个模块并使用泰勒定理编写了一个简单的算法。在某些情况下效果很好,但不是 100% 准确。
    • 是的,对于 sin / cos 的大输入具有低精度不一定是每个人都想要的,但如果我们将它们设为 WebAssembly 内在函数,我们基本上必须提供。这种类型的权衡使得很难争论一刀切的内在。
    猜你喜欢
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 2021-10-31
    • 2011-01-07
    • 1970-01-01
    • 2020-11-20
    相关资源
    最近更新 更多