JAX and APL

Regular readers will remember that I've been exploring JAX. It's an amazing tool for creating high-performance applications that are written in Python but can run on GPUs and TPUs.

The documentation mentions the importance of thinking in JAX. You need to change your mindset to get the most out of the language, and it's not always easy to do that.

Learning APL could help

APL is still my most productive environment for exploring complex algorithms. I've been using it for  over 50 years. In APL, tensors are first-class objects, and the language handles big data very well indeed.

To write good APL you need to learn to think in terms of composing functions that transform whole arrays.

That's exactly what you need to do in JAX. I've been using JAX to implement models of spiking neural networks, and I've achieved dramatic speed gains using my local GPU. The techniques I used are based on APL patterns I learned decades ago.

Try APL

APL is a wonderful programming language, and these days you'll find great support for beginners.

Dyalog offer free APL licences for non-commercial use, and they run Try APL - a website where you can explore the language from within your browser.

Earlier this month I attended the virtual 2021 Dyalog User Meeting. Much of the content covered work that Dyalog and others have done to make the language easier to learn. As well as TryAPL, Dyalog offer a series of webinars. There's a wiki, a flourishing on-line community, and a super new book called Learning APL by Stefan Kruger. You can it read on-line, download it as a pdf, or execute it as a Jupyter notebook.

Comments

Popular posts from this blog

Controlling a Raspberry Pi Pico remotely using PySerial

Five steps to connect Jetson Nano and Arduino

Raspberry Pi Pico project 2 - MCP3008