Prior to the Game Developers Conference (GDC), which happened last week, Neil Trevett, Vice President of Mobile Ecosystems, NVIDIA and also President, Khronos Group, spoke with me about what the new Vulkan API means, how it relates to existing standards like OpenGL and OpenCL, and what the industry consortium’s hopes and goals are for it in the years to come.
Architected for the Present Future
The future of technology from this present looks like this—an expanding universe of computer-based devices all connected to the Internet and many, if not most, using some form of a graphical user-interface. When present graphics APIs were originally architected decades ago their authors were responding primarily to the world of personal computers, workstations, and advanced visualization systems.
Flash forward to our present and the Internet of Things illustrates a different picture. GPUs are being used to power computers, smartphones, gaming systems, robots, drones, smart TVs, smart watches, rendering servers, automobile and aeronautical infomatic systems, and a vast array of industrial computer controlled equipment (e.g.: GPUs for input processing—mainly for neural net acceleration—as well as outputting graphics).
Enter Vulkan™, which was previously named the Next Generation OpenGL Initiative. In addition to an acknowledgement of our present future, Vulkan accomplishes and addresses the following:
- Direct control over GPU operation, with minimal driver overhead for maximum performance
- Multi-threading-friendly architecture–drives overall system performance
- Designed for wide variety of devices (see image 01 above)
- Uses Khronos’ new SPIR-V™ intermediate representation (IR) for shading language flexibility and simplified drivers (see more on SPIR-V below and here)
- Extensible layered architecture–enables and encourages innovative tools
- Simpler drivers for low-overhead efficiency and cross vendor portability
It is important to note that Vulkan isn’t just a graphics-oriented API (application programming interface) but also a GPU compute API as well. This essentially means that Vulkan uses a system GPU (your graphics card’s processor) to do parallel processing for intensive computation workloads.
How Vulkan Differs from OpenCL
However, there is a difference with regards to OpenCL, the Khronos Group’s other compute-oriented industry standard. As Neil Trevett explains, “Today the key difference is that Vulkan is primarily focused on accessing acceleration on a GPU or multiple GPUs whereas OpenCL has more heterogenous flexibility and can put to use, simultaneously, not just GPUs and CPUs but also a wide variety of other devices, including DSPs, FPGAs and so on.”
Readers may recall that Apple originally invented OpenCL and that OpenCL competes with Nvidia’s CUDA for advanced parallel compute. Moreover, as we’ve noted in our recent feature on our Mac professional workstation survey (see, “Architosh publishes Mac professional workstation survey results,” Architosh, 31 Jan 2015) many professional Mac users have key workflow applications that rely heavily on Nvidia’s proprietary CUDA parallel computing platform.
Vulkan now offers a range of incentives and features that will in fact compete with both Nvidia’s CUDA, OpenCL, and even Microsoft DirectX technology, but in different ways for different reasons. The subject of GPU compute is rather complex and we’ll come back to that towards the end of this article.
next page: Why Vulkan is Next Generation OpenGL