Deeply appreciate any advice you can share that could help me make the most of this hardware using Elixir and avoid any gotchas or suboptimal performance!
Should I build the BEAM from source? Any special configuration details or build flags I should pay special attention? I’ve always had difficulting getting jinterface and wxWidgets set up in the past but I should probably get those right this time.
If you want the best performance then you want to pass the -march=native flag to gcc, this means building from source. I would also throw in the --enable-jit flag to make sure that you get the jit (if you don’t give the flag, then configure will silently select the non-jit if the correct tools to build the jit are not available).
./configure --enable-jit CFLAGS="-O2 -g -march=native" && make && make install
(Side question)
Is your plan to use the Nx framework for ML/DL or to use Elixir for orchestrating execution in other languages/frameworks e.g. in Python?
I’m new to this and the vast majority of learning materials are Python-based, but of course I also want to have a runtime environment that smoothly takes advantage of all cores and is more resilient.
The BEAM will be quite helpful in scheduling/queuing jobs and keeping track of benchmark stats.
Baby steps—but someday I hope to be able to help move Elixir-based ML tooling forward. There’s no good reason Python should have a complete monopoly over the ML world, especially when you consider the Python code isn’t really doing the heavy lifting.