Building an Open, Standards-Based Ecosystem for Heterogeneous Parallelism
Codeplay, based in Edinburgh, Scotland, started developing tools for graphics processors more than a decade ago. We always thought developers would do more than just graphics processing with GPUs because they’re so incredibly powerful. But we’re now seeing demand in a wide range of fields—from self-driving cars to the latest exascale supercomputers.
What’s become clear is that the only way GPU programming will work is if we standardize it. That’s the only way to get software developers and hardware companies working together. And the only way to create a vision where developers can write C++ and actually make it run very fast on lots of different platforms is by having standards.
Codeplay led the definition of the SYCL programming model, an open standard designed to bring performance and portability to software developers writing parallel applications. We’ve always believed that open standards are the way forward to enable a broad community of developers. In fact, we’ve spent many years successfully working with processor vendors to enable their processors for software developers using open standards.
SYCL is designed as a C++ programming model for accelerators (e.g., GPUs, FPGAs, specialist processors like DSPs). If you want to productively develop software that gives great performance on one of these processors, you need a well-defined programming model. You also need highly-optimized libraries that do specific things. So, if you want to do matrix multiplication, for example, SYCL allows you to write your own matrix multiply operation.
What it doesn’t do is work out exactly the right algorithms to run on each type of processor.
This is where oneAPI helps. oneAPI is an industry initiative that encourages collaboration on open specifications and compatible implementations across the ecosystem. oneAPI actually delivers matrix multiplication, convolutions, and all sorts of standard, high-performance software libraries built on top of these open, standard programming models. The key thing is that it all fits together, and I think that’s what will make it successful.
It’s been great to see Intel’s adoption of the SYCL standard. The DPC++ compiler, which is part of oneAPI, implements SYCL, and Intel is contributing greatly to SYCL’s evolution.
Developers are increasingly looking for solutions that offer openness rather than proprietary programming interfaces. And what’s really great about oneAPI is that it integrates with other open standards and open source frameworks.
The learnings from the oneAPI initiative are already feeding back into other standards bodies, like the SYCL and C++ language standards. oneAPI also uses the SPIR-V standard, which is another open standard from Khronos that defines the intermediate format for compiler tools enabling such exciting technologies as AI graph compilers, for example.
I know the vision of oneAPI says it does everything for everyone, making it possible to run every bit of software everywhere. But it’s also very pragmatic. oneAPI understands that it’s part of a wider ecosystem. I think that’s really important for those of us actually building real technology.