我对在Erlang中启用GPU加速的管道有一个概念性的想法。 API将由更高阶函数组成,它们带来一些乐趣,一个二进制文件和一些标志,对BEAM字节码进行运行时检查,以查看是否可以将乐趣编译为OpenCL,缓存结果,然后类似于更高阶函数列表模块。如果无法将乐趣转换为OpenCL,则该过程将失败。
所有操作都将在二进制文件上完成,因为缺点列表在内存中没有连续表示,导致大量工作将它们移入和移出GPU内存。可以选择将二进制解释为浮点数,双精度数,整数或混合,并为乐趣设置不同大小的输入和输出。是否可以在纯Erlang或C中执行此操作而不攻击BEAM?如果是,将赞赏相关资源的链接。
答案 0 :(得分:1)
erlang:fun_info/1
返回包含元组{env, ...}
的列表,其中包含AST。我可以利用这个sto创建我的OpenCL代码,并使用现有的OpenCL绑定并使用gen_server中的ETS表进行缓存,覆盖纯Erlang中的while管道。