我对在 Erlang 中启用 GPU 加速的管道有一个概念性的想法。该 API 将由高阶函数组成,这些函数采用 fun、二进制文件和一些标志,对 BEAM 字节码进行运行时检查,以查看 fun 是否可以编译到 OpenCL,缓存结果,然后与来自的高阶函数类似地工作列表模块。如果 fun 无法转换为 OpenCL,则该过程将失败。
所有操作都将在二进制文件上完成,因为 cons 列表不会在内存中连续表示,导致将它们移入和移出 GPU 内存需要大量工作。可以选择将二进制解释为浮点数、双精度数、整数或混合,并具有不同大小的输入和输出以供娱乐。是否可以在纯 Erlang 或 C 中做到这一点而无需破解 BEAM?如果是,将不胜感激相关资源的链接。