Hello all!
I'm seeing more and more news about new exotic silicon pushing code closer to the data, and I was wondering what was the future of JVMs in all this.
As an example:
Upmem is starting to offer some RAM with compute capabilities. They claim 2TB/s of RAM-compute-RAM bandwidth for a 128GB set. The low level API seems to be an LLVM backend and
code close to a map operation: for each chunk of computing ram, send a tasklet for a local computation.
I have lots of questions:
* Are Java and the JVMs suited to make good use of that hardware?
* What's the mechanically sympathetical API to it? Are map operations in Parallel Streams a good abstraction?
* Surely the results must be stored locally, within each RAM chunk. What would automated memory management look like with this? Is it per RAM chunk, can it be global? Is there a need for rebalancing/shuffling data between RAM chunks?
* Are we going to see it at all on JVMs? What's the integration cost? Do you translate Java bytecode to LLVM to use their backend? Can it be done through the upcoming Vector API?
Cheers
Ben