blob: 6bd4a663b9bbf25043694b8a6feccccd7a2e8b1c [file] [log] [blame]
.. SPDX-License-Identifier: GPL-2.0-only
=====================================================
Intel(R) Gaussian & Neural Accelerator (Intel(R) GNA)
=====================================================
Acronyms
--------
GNA - Gaussian & Neural Accelerator
GMM - Gaussian Mixer Model
CNN - Convolutional Neural Network
RNN - Recurrent Neural Networks
DNN - Deep Neural Networks
Introduction
------------
The Intel(R) GNA is an internal PCI fixed device available on several Intel platforms/SoCs.
Feature set depends on the Intel chipset SKU.
Intel(R) GNA provides hardware accelerated computation for GMMs and Neural Networks.
It supports several layer types: affine, recurrent, and convolutional among others.
Hardware also provides helper layer types for copying and transposing matrices.
Linux Driver
------------
The driver also registers a character device to expose file operations via dev node.
The driver probes/removes a PCI device, implements file operations, handles runtime
power management, and interacts with hardware through MMIO registers.
Multiple processes can independently file many requests to the driver. These requests are
processed in a FIFO manner. The hardware can process one request at a time by using a FIFO
queue.
IOCTL
-----
Intel(R) GNA driver controls the device through IOCTL interfaces.
Following IOCTL commands are supported:
GNA_IOCTL_PARAM_GET gets driver and device capabilities.
GNA_IOCTL_MEMORY_MAP locks user pages and GNA MMU setups for DMA transfer.
GNA_IOCTL_MEMORY_UNMAP unlocks user pages and releases GNA MMU structures.
GNA_IOCTL_COMPUTE submits a request to the device queue.
GNA_IOCTL_WAIT blocks and waits on the submitted request.