1

我对在 Erlang 中启用 GPU 加速的管道有一个概念性的想法。该 API 将由高阶函数组成,这些函数采用 fun、二进制文件和一些标志,对 BEAM 字节码进行运行时检查,以查看 fun 是否可以编译到 OpenCL,缓存结果,然后与来自的高阶函数类似地工作列表模块。如果 fun 无法转换为 OpenCL,则该过程将失败。

所有操作都将在二进制文件上完成,因为 cons 列表不会在内存中连续表示,导致将它们移入和移出 GPU 内存需要大量工作。可以选择将二进制解释为浮点数、双精度数、整数或混合,并具有不同大小的输入和输出以供娱乐。是否可以在纯 Erlang 或 C 中做到这一点而无需破解 BEAM?如果是,将不胜感激相关资源的链接。

4

1 回答 1

1

erlang:fun_info/1返回一个包含{env, ...}包含 AST 的元组的列表。我可以利用这个 s 来创建我的 OpenCL 代码,并使用现有的 OpenCL 绑定并使用 gen_server 中的 ETS 表进行缓存,覆盖纯 Erlang 中的 while 管道。

于 2017-05-25T22:43:47.447 回答