Cyborg FPGA driver support

Co-Authored-By: Dolpher Du <Dolpher.Du@intel.com>

Change-Id: I5b27063a2644e067da0fb6ddbc39d82b4a9a244e
This commit is contained in:
Shaohe Feng 2018-01-02 10:55:53 +00:00 committed by ShaoHe Feng
parent 288b7c75f1
commit 9db9994f57
1 changed files with 192 additions and 0 deletions

View File

@ -0,0 +1,192 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
===========================
Cyborg FPGA Driver Proposal
===========================
https://blueprints.launchpad.net/openstack-cyborg/+spec/cyborg-fpga-driver
This spec proposes to provide the initial design for Cyborg's FPGA driver.
Problem description
===================
A Field Programmable Gate Array(FPGA) is an integrated circuit designed to be
configured by a customer or a designer after manufacturing. The advantage lies
in that they are sometimes significantly faster for some applications because of
their parallel nature and optimality in terms of the number of gates used for a
certain process. Hence, using FPGA for application acceleration in cloud has been
becoming desirable.
There is a management framwork in Cyborg [1]_ for heterogeneous accelerators,
tracking and deploying FPGAs. This spec will add a FPGA driver for Cyborg to
manage specific FPGA devices.
Use Cases
---------
* When Cyborg agent starts or does resource checking periodically, the Cyborg
FPGA driver should enumerate the list of the FPGA devices, and report the
details of all available FPGA accelerators on the host, such as BDF(Bus,
Device, Function), PID(Product id) VID(Vendor id), IMAGE_ID and PF(Physical
Function)/VF(Virtual Function) type.
* When user uses empty FPGA regions as their accelerators, Cyborg agent will
call driver's program() interface. Cyborg agent should provide BDF
of PF/VF, and local image path to the driver. More details can be found in ref
[2]_.
* When there maybe more thant one vendor fpga card on a host, or on different
hosts in the cluster, Cyborg agent can discover the wendors easiy and
intelligently by Cyborg FPGA driver, and call the correct driver to execute
it's operations, such as discover() and program().
Proposed changes
================
In general, the goal is to develop a Cyborg FPGA driver that supports
discover/program interfaces for FPGA accelerator framework.
The driver should include the follow functions:
1. discover()
driver reports devices as following:
[{
"vendor": "0x8086",
"product": "bcc0",
"pr_num": 1,
"devices": "0000:be:00:0",
"path": "/sys/class/fpga/intel-fpga-dev.0",
"regions": [
{"vendor": "0x8086",
"product": "bcc1",
"regions": 1,
"devices": "0000:be:00:1",
"path": "/sys/class/fpga/intel-fpga-dev.1"
}]
}]
pr_num: partial reconfiguration region numbers.
2. program(device_path, image)
program the image to a PR region specified by device_path.
device_path: the sys path of accelerator device.
image: The local path of programming image.
Image Format
----------------------------
Alternatives
------------
None
Data model impact
-----------------
FPGA driver will not touch Data model.
The Cyborg Agent can call FPGA driver to update the database
during the discover/program operations.
REST API impact
---------------
The related FPGA accelerator APIs is out of scope for this spec.
The FPGA management framework for Cyborg [1]_ will alter the proposal.
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
None
Performance Impact
------------------
None
Other deployer impact
---------------------
Deployers should install the specific FPGA management stack that the driver
depends on.
Please see ref [2]_ for details.
Developer impact
----------------
There will be some developer impact vis-à-vis new functionality that
will be available to devs.
Implementation
==============
Assignee(s)
-----------
Primary assignee:
Shaohe Feng <shaohe.feng@intel.com>
Dolpher Du <dolpher.du@intel.com>
Work Items
----------
* Implement the cyborg-fpga-driver in this spec.
Dependencies
============
* Cyborg API Spec
* Cyborg Agent Spec
* Cyborg Driver Spec
* Cyborg Conductor Spec
Testing
========
* Unit tests will be added to test Cyborg FPGA driver.
* Functional tests will be added to test Cyborg FPGA driver.
Documentation Impact
===================
Document FPGA driver in the Cyborg project
References
==========
* Cyborg API Spec
* Cyborg Agent Spec
* Cyborg Driver Spec
* Cyborg Conductor Spec
History
=======
c
.. list-table:: Revisions
:header-rows: 1
* - Release
- Description
* - Pike
- Introduced
References
==========
.. [1] https://blueprints.launchpad.net/openstack-cyborg/+spec/cyborg-fpga-modelling
.. [2] https://01.org/OPAE