3 ms·
In Erlang you usually run one "node" per machine, though you can call between them with transparent RPC. This library uses one "process" per neuron for concurr
by pselbert 9y ago
In Erlang you usually run one "node" per machine, though you can call between them with transparent RPC.
This library uses one "process" per neuron for concurrency. Processes are extremely lightweight and entirely unrelated to system processes or threads.
- Ono-Sendai 9y agoRunning one process per neuron is going to be extremely slow.
- btbuildem 9y agoErlang's inter-process messaging is ridiculously optimized. Processes are extremely low-weight, it costs approximately nothing to start and stop them. This is one of the core strength of Erlang. Running one process per neuron would actually be a very efficient way to do it.
- mononcqc 9y agoIt should still be pretty slow compared to just doing the neural net propagation as matrix operations
- ramchip 9y agoI'm quite sure that would be a grossly inefficient approach. Sending a message is expensive in Erlang, less so than in other languages, but it's still very large compared to a few math operations. It's a common mistake to use processes to represent objects [1]. The recent article from Discord [2] also mentioned "Sending messages between Erlang processes was not as cheap as we expected, and the reduction cost — Erlang unit of work used for process scheduling — was also quite high. We found that the wall clock time of a single send/2 call could range from 30μs to 70us due to Erlang de-scheduling the calling process." [1] http://theerlangelist.com/article/spawn_or_not http://theerlangelist.com/article/spawn_or_not [2] https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b