3 ms·
I lead a company that has a large portfolio of AI/ML/optimization algorithms in J (Monument). Happy to answer questions.
by jpf0 6y ago
I lead a company that has a large portfolio of AI/ML/optimization algorithms in J (Monument). Happy to answer questions.
- tosh 6y agodoes J have support for using GPUs? or can you share a bit about how you use J? I guess there are also some ways where GPU support is not as important (different architectures or leaning more on transfer learning?). can you share a bit about how you came to use J?
- jpf0 6y agoWe use J in all ML and data handling functions, everything except UI and viz. We primarily focus on algorithms that require rapid sequential iteration rather than parallelism. However: 1) we run an enhanced version of J that is implicitly parallel on CPUs, and 2) it is possible to call GPUs (both CUDA and openCL) through J (e.g. j-fire). We do not call GPUs or other accelerators currently, though we may do so in the future. Our goal with Monument is to create an Excel-like substitute for ML / AI. In comparing across languages, we selected J as "the right level of abstraction" for ML / AI because we wanted to write fast-running code, quickly. J runs on virtually all CPUs and OSs, and it is highly tuned for minimized cache misses and mis-predicted branches. It is well-documented, well-supported, and the community is highly supportive. Like Python, J makes it possible to run highly-optimized code without a great deal of boilerplate in an interactive development environment. Unlike Python, J is composed of reusable functions that readily express math. Our dev productivity is extremely high, and often we're able to engage with mathematicians who have little or no programming background. Our team comprises polyglot programmers, and I strongly avoid "the language wars," but overall we have found J to be well-suited to our needs.