我使用消息传递库(如MPI,ZepoMQ,RabbitMQ等)以OOP语言创建分布式系统。现在我发现自己正在观察some erlang promotional material,并了解我们使用库(每个进程1 000 000个套接字连接,分布式消息传递和分布式进程监视可视化)在OOP语言(如C ++和C#)中模拟的许多内容多年来,他一直在Erlang。更好地了解语言似乎是合理的。我发现自己问了最后一个问题:是否有任何类似Erlang VM的实现\原型,它们不仅可以在CPU上运行/生成某些进程,还可以在GPU上运行?
因为对于大多数未来的项目来说,这肯定会使Erlang(以及它对我的OOP背景方言更具可读性,如Elixir)语言。
答案 0 :(得分:1)
GPU仅对顺序内存访问很快。我很难想象GPU RAM上的垃圾收集。 GPU不是一个很酷的并行CPU。它需要更多努力才能写入。所以很可能没有针对GPU的Erlang编译器。
答案 1 :(得分:0)
我怀疑有没有可以在GPU上运行Erlang进程的实现,但你可以使用两种技术在Erlang下运行GPU上的计算:
通过NIF使用C库(本机实现的函数) - 请参阅http://www.erlang.org/doc/man/erl_nif.html以及此类实现的示例:Github上的msantos / procket(对不起,我无法发布链接到期低声望:)
使用本机操作系统进程并通过erlang“端口”与其进行通信 - 请参阅http://www.erlang.org/doc/reference_manual/ports.html
第一个更快,后者更安全(NIF可能会崩溃整个VM)。
这不是特定于GPU coputations。 Erlang不适合高性能数字运算 - 最好在C语言中使用它并且无论如何都要在Erlang中操作结果。 C和Erlang之间的通信应该以两种描述的方式之一实现。