Description
The Heterogeneous parallel programming with open standards using oneAPI and Data Parallel C++ talk by @jeffhammond explains the motivation for new heterogeneous parallel computing abstractions:
The motivation for what we're doing here is that we have an ever-increasing diversity and complexity in computer architecture.
This has been going on for 20 years or so with the introduction of multicore and SIMD units, and obviously GPUs and other forms of accelerators.
And I think as this audience knows AI accelerators, special purpose processors have just exploded over the last few years, and there's really no indication that there's gonna be any convergence in architecture or, or simplification.
We're gonna be dealing with this problem for a while now, but, and furthermore, even within families of architectures like GPUs, or, FPGAs, obviously there are different vendors and different programming models and different execution models.
Web platform defines a number of Web APIs as outlined in Web Platform: a 30,000 feet view / Web Platform and JS environment constraints talk by @dontcallmedom, but has limited parallel computing capabilities, and no APIs for heterogeneous parallel programming.
ML libraries used on the web such as TensorFlow.js interface with WebGL API to allow user code to make use of parallelized floating point computation. A way to make use of CPU parallelism has been introduced with WebAssembly SIMD. Also the next-gen graphics API for the web WebGPU is evolving, adding new features such as subgroups discussed in #66. For performance comparison how the current web exposed parallel computing APIs perform in the ML context, see the TensorFlow.js talk by @annxingyuan.
Specifically, there's no explicit API to access dedicated AI accelerators or other domain-specific accelerators. An effort is underway to specify a Web API for neural network inference hardware acceleration that abstracts away underlying hardware and as such could make use of XPUs. But this API is domain-specific, not generic.
This brings up a question:
@jeffhammond does the most recent version of SYCL improve on OpenCL security characteristics that would make it suitable to be exposed to the web? WebCL JS bindings did not ship in browsers citing security concerns (OOB memory access, DoS...), but that work happened in 2013-14 so I'm sure there has been a lot of advancements in this space over the recent years.