i.MX8 - Multimedia - GPU - Vulkan

From RidgeRun Developer Wiki
< IMX8‎ | Multimedia‎ | GPU
Revision as of 18:00, 1 November 2018 by Jcruz (talk | contribs) (→‎Vulkan)



  Index  





Vulkan

The i.MX8 supports Vulkan®, which is a graphics and compute API consisting of procedures and functions to specify shader programs, compute kernels, objects, and operations involved in producing high-quality graphical images, specifically color images of three-dimensional objects. Vulkan is also a pipeline with programmable and state-driven fixed-function stages that are invoked by a set of specific drawing operations. You can find more information and official documentation in this reference.

Subgroups

Vulkan 1.1 supports subgroups as a new feature. They enable highly-efficient sharing and manipulation of data between multiple tasks running in parallel on a GPU. Modern heterogeneous hardware like GPUs gain performance by using parallel hardware and exposing a parallel programming model to target this hardware. When a user wants to run N parallel tasks for their algorithm, a GPU would divide this N-sized workload between the compute units of that GPU. Each compute unit of the GPU is then capable of running one or more of these parallel tasks concurrently. In Vulkan, the data that runs on a single compute unit of a GPU is referred as the local workgroup, and an individual parallel task as an invocation.

Vulkan 1.1 introduces a mechanism to share data between the invocations that run in parallel on a single compute unit. These concurrently running invocations are named the subgroup. This subgroup allows for the sharing of data between a much smaller set of invocations than the local workgroup could, but at a significantly higher performance. While shared memory is only available in compute shaders, sharing data via subgroup operations is allowed in all shader stages via optionally supported stages

In this tutorial you can find how to use the subgroup functionality of Vulkan 1.1.


[[IMX8/<Replace with "previous" page>|Previous: <Replace with "previous" page>]] Index [[IMX8/<Replace with "next" page>|Next: <Replace with "next" page>]]