mbox series

[v5,00/39] Implementation of ML CNXK driver

Message ID 20230207160719.1307-1-syalavarthi@marvell.com (mailing list archive)
Headers
Series Implementation of ML CNXK driver |

Message

Srikanth Yalavarthi Feb. 7, 2023, 4:06 p.m. UTC
  Marvell ML CNXK Driver
----------------------

This patch series implements common Machine Learning (ML) ROC code
and driver for Marvell Octeon 10 (cnxk) platform. ML inferencing is
supported on cnxk platform through an integrated ML inferencing
processor. The current driver supports programming the ML hardware
engine through offload mode.

All APIs proposed in the DPDK ML device specification are supported on
the cnxk platform.

v5:
* Updated model_id to uint16_t
* Updated release notes for 23.03

v4:
* Update function names of ML common code
* Added support for configurable OCM page size
* Minor typo fixes

v3:
* Skip installation of internal headers
* Update internal comments and code cleanup

v2:
* Typo and formatting fixes

Srikanth Yalavarthi (39):
  common/cnxk: add ML headers and ROC code for cnxk
  ml/cnxk: add skeleton for ML cnxk driver
  ml/cnxk: enable probe and remove of ML device
  ml/cnxk: add driver support to get device info
  ml/cnxk: add support for configure and close
  ml/cnxk: parse ML firmware path from device args
  ml/cnxk: enable firmware load and device reset
  ml/cnxk: enable support for simulator environment
  ml/cnxk: enable support for device start and stop
  ml/cnxk: add support to create device queue-pairs
  ml/cnxk: add functions to load and unload models
  ml/cnxk: enable validity checks for model metadata
  ml/cnxk: add internal structures for derived info
  ml/cnxk: add internal structures for tiles and OCM
  ml/cnxk: add structures for slow and fast path JDs
  ml/cnxk: find OCM mask and page slots for a model
  ml/cnxk: add support to reserve and free OCM pages
  ml/cnxk: enable support to start an ML model
  ml/cnxk: enable support to stop an ML models
  ml/cnxk: enable support to get model information
  ml/cnxk: enable support to update model params
  ml/cnxk: add support to get IO buffer sizes
  ml/cnxk: enable quantization and dequantization
  ml/cnxk: enable support to dump device debug info
  ml/cnxk: add driver support for device selftest
  ml/cnxk: enqueue a burst of inference requests
  ml/cnxk: dequeue a burst of inference requests
  ml/cnxk: add internal function for sync mode run
  ml/cnxk: enable support for firmware error codes
  ml/cnxk: add support to get and reset device stats
  ml/cnxk: add support to handle extended dev stats
  ml/cnxk: enable support to get xstats in cycles
  ml/cnxk: add support to report DPE FW warnings
  ml/cnxk: add support to enable model data caching
  ml/cnxk: add support to select OCM allocation mode
  ml/cnxk: add support to use lock during jcmd enq
  ml/cnxk: add support to select poll memory region
  ml/cnxk: add user guide for marvell cnxk ml driver
  ml/cnxk: enable support for configurable ocm page

 MAINTAINERS                            |   11 +
 doc/guides/index.rst                   |    1 +
 doc/guides/mldevs/cnxk.rst             |  254 +++
 doc/guides/mldevs/index.rst            |   14 +
 doc/guides/rel_notes/release_23_03.rst |    7 +
 drivers/common/cnxk/hw/ml.h            |  170 ++
 drivers/common/cnxk/meson.build        |    1 +
 drivers/common/cnxk/roc_api.h          |    4 +
 drivers/common/cnxk/roc_constants.h    |    2 +
 drivers/common/cnxk/roc_dev_priv.h     |    1 +
 drivers/common/cnxk/roc_ml.c           |  626 +++++++
 drivers/common/cnxk/roc_ml.h           |  152 ++
 drivers/common/cnxk/roc_ml_priv.h      |   24 +
 drivers/common/cnxk/roc_platform.c     |    1 +
 drivers/common/cnxk/roc_platform.h     |    2 +
 drivers/common/cnxk/roc_priv.h         |    3 +
 drivers/common/cnxk/version.map        |   29 +
 drivers/meson.build                    |    1 +
 drivers/ml/cnxk/cn10k_ml_dev.c         |  870 +++++++++
 drivers/ml/cnxk/cn10k_ml_dev.h         |  429 +++++
 drivers/ml/cnxk/cn10k_ml_model.c       |  413 +++++
 drivers/ml/cnxk/cn10k_ml_model.h       |  508 ++++++
 drivers/ml/cnxk/cn10k_ml_ocm.c         |  519 ++++++
 drivers/ml/cnxk/cn10k_ml_ocm.h         |   85 +
 drivers/ml/cnxk/cn10k_ml_ops.c         | 2316 ++++++++++++++++++++++++
 drivers/ml/cnxk/cn10k_ml_ops.h         |   94 +
 drivers/ml/cnxk/meson.build            |   32 +
 drivers/ml/meson.build                 |    8 +
 28 files changed, 6577 insertions(+)
 create mode 100644 doc/guides/mldevs/cnxk.rst
 create mode 100644 doc/guides/mldevs/index.rst
 create mode 100644 drivers/common/cnxk/hw/ml.h
 create mode 100644 drivers/common/cnxk/roc_ml.c
 create mode 100644 drivers/common/cnxk/roc_ml.h
 create mode 100644 drivers/common/cnxk/roc_ml_priv.h
 create mode 100644 drivers/ml/cnxk/cn10k_ml_dev.c
 create mode 100644 drivers/ml/cnxk/cn10k_ml_dev.h
 create mode 100644 drivers/ml/cnxk/cn10k_ml_model.c
 create mode 100644 drivers/ml/cnxk/cn10k_ml_model.h
 create mode 100644 drivers/ml/cnxk/cn10k_ml_ocm.c
 create mode 100644 drivers/ml/cnxk/cn10k_ml_ocm.h
 create mode 100644 drivers/ml/cnxk/cn10k_ml_ops.c
 create mode 100644 drivers/ml/cnxk/cn10k_ml_ops.h
 create mode 100644 drivers/ml/cnxk/meson.build
 create mode 100644 drivers/ml/meson.build

--
2.17.1
  

Comments

Prince Takkar March 2, 2023, 6:08 a.m. UTC | #1
> -----Original Message-----
> From: Srikanth Yalavarthi <syalavarthi@marvell.com>
> Sent: Tuesday, February 7, 2023 9:37 PM
> Cc: dev@dpdk.org; Shivah Shankar Shankar Narayan Rao
> <sshankarnara@marvell.com>; Jerin Jacob Kollanukkaran
> <jerinj@marvell.com>; Anup Prabhu <aprabhu@marvell.com>; Prince Takkar
> <ptakkar@marvell.com>; Parijat Shukla <pshukla@marvell.com>; Srikanth
> Yalavarthi <syalavarthi@marvell.com>
> Subject: [PATCH v5 00/39] Implementation of ML CNXK driver
> 
> Marvell ML CNXK Driver
> ----------------------
> 
> This patch series implements common Machine Learning (ML) ROC code and
> driver for Marvell Octeon 10 (cnxk) platform. ML inferencing is supported on
> cnxk platform through an integrated ML inferencing processor. The current
> driver supports programming the ML hardware engine through offload
> mode.
> 
> All APIs proposed in the DPDK ML device specification are supported on the
> cnxk platform.
> 
> v5:
> * Updated model_id to uint16_t
> * Updated release notes for 23.03
> 
> v4:
> * Update function names of ML common code
> * Added support for configurable OCM page size
> * Minor typo fixes
> 
> v3:
> * Skip installation of internal headers
> * Update internal comments and code cleanup
> 
> v2:
> * Typo and formatting fixes
> 
> Srikanth Yalavarthi (39):
>   common/cnxk: add ML headers and ROC code for cnxk
>   ml/cnxk: add skeleton for ML cnxk driver
>   ml/cnxk: enable probe and remove of ML device
>   ml/cnxk: add driver support to get device info
>   ml/cnxk: add support for configure and close
>   ml/cnxk: parse ML firmware path from device args
>   ml/cnxk: enable firmware load and device reset
>   ml/cnxk: enable support for simulator environment
>   ml/cnxk: enable support for device start and stop
>   ml/cnxk: add support to create device queue-pairs
>   ml/cnxk: add functions to load and unload models
>   ml/cnxk: enable validity checks for model metadata
>   ml/cnxk: add internal structures for derived info
>   ml/cnxk: add internal structures for tiles and OCM
>   ml/cnxk: add structures for slow and fast path JDs
>   ml/cnxk: find OCM mask and page slots for a model
>   ml/cnxk: add support to reserve and free OCM pages
>   ml/cnxk: enable support to start an ML model
>   ml/cnxk: enable support to stop an ML models
>   ml/cnxk: enable support to get model information
>   ml/cnxk: enable support to update model params
>   ml/cnxk: add support to get IO buffer sizes
>   ml/cnxk: enable quantization and dequantization
>   ml/cnxk: enable support to dump device debug info
>   ml/cnxk: add driver support for device selftest
>   ml/cnxk: enqueue a burst of inference requests
>   ml/cnxk: dequeue a burst of inference requests
>   ml/cnxk: add internal function for sync mode run
>   ml/cnxk: enable support for firmware error codes
>   ml/cnxk: add support to get and reset device stats
>   ml/cnxk: add support to handle extended dev stats
>   ml/cnxk: enable support to get xstats in cycles
>   ml/cnxk: add support to report DPE FW warnings
>   ml/cnxk: add support to enable model data caching
>   ml/cnxk: add support to select OCM allocation mode
>   ml/cnxk: add support to use lock during jcmd enq
>   ml/cnxk: add support to select poll memory region
>   ml/cnxk: add user guide for marvell cnxk ml driver
>   ml/cnxk: enable support for configurable ocm page
> 
>  MAINTAINERS                            |   11 +
>  doc/guides/index.rst                   |    1 +
>  doc/guides/mldevs/cnxk.rst             |  254 +++
>  doc/guides/mldevs/index.rst            |   14 +
>  doc/guides/rel_notes/release_23_03.rst |    7 +
>  drivers/common/cnxk/hw/ml.h            |  170 ++
>  drivers/common/cnxk/meson.build        |    1 +
>  drivers/common/cnxk/roc_api.h          |    4 +
>  drivers/common/cnxk/roc_constants.h    |    2 +
>  drivers/common/cnxk/roc_dev_priv.h     |    1 +
>  drivers/common/cnxk/roc_ml.c           |  626 +++++++
>  drivers/common/cnxk/roc_ml.h           |  152 ++
>  drivers/common/cnxk/roc_ml_priv.h      |   24 +
>  drivers/common/cnxk/roc_platform.c     |    1 +
>  drivers/common/cnxk/roc_platform.h     |    2 +
>  drivers/common/cnxk/roc_priv.h         |    3 +
>  drivers/common/cnxk/version.map        |   29 +
>  drivers/meson.build                    |    1 +
>  drivers/ml/cnxk/cn10k_ml_dev.c         |  870 +++++++++
>  drivers/ml/cnxk/cn10k_ml_dev.h         |  429 +++++
>  drivers/ml/cnxk/cn10k_ml_model.c       |  413 +++++
>  drivers/ml/cnxk/cn10k_ml_model.h       |  508 ++++++
>  drivers/ml/cnxk/cn10k_ml_ocm.c         |  519 ++++++
>  drivers/ml/cnxk/cn10k_ml_ocm.h         |   85 +
>  drivers/ml/cnxk/cn10k_ml_ops.c         | 2316 ++++++++++++++++++++++++
>  drivers/ml/cnxk/cn10k_ml_ops.h         |   94 +
>  drivers/ml/cnxk/meson.build            |   32 +
>  drivers/ml/meson.build                 |    8 +
>  28 files changed, 6577 insertions(+)
>  create mode 100644 doc/guides/mldevs/cnxk.rst  create mode 100644
> doc/guides/mldevs/index.rst  create mode 100644
> drivers/common/cnxk/hw/ml.h  create mode 100644
> drivers/common/cnxk/roc_ml.c  create mode 100644
> drivers/common/cnxk/roc_ml.h  create mode 100644
> drivers/common/cnxk/roc_ml_priv.h  create mode 100644
> drivers/ml/cnxk/cn10k_ml_dev.c  create mode 100644
> drivers/ml/cnxk/cn10k_ml_dev.h  create mode 100644
> drivers/ml/cnxk/cn10k_ml_model.c  create mode 100644
> drivers/ml/cnxk/cn10k_ml_model.h  create mode 100644
> drivers/ml/cnxk/cn10k_ml_ocm.c  create mode 100644
> drivers/ml/cnxk/cn10k_ml_ocm.h  create mode 100644
> drivers/ml/cnxk/cn10k_ml_ops.c  create mode 100644
> drivers/ml/cnxk/cn10k_ml_ops.h  create mode 100644
> drivers/ml/cnxk/meson.build  create mode 100644 drivers/ml/meson.build
> 
> --
> 2.17.1

Acked-by: Prince Takkar <ptakkar@marvell.com>