From 9db9994f57d169395d5cad32ac76ad8ee68663be Mon Sep 17 00:00:00 2001 From: Shaohe Feng Date: Tue, 2 Jan 2018 10:55:53 +0000 Subject: [PATCH] Cyborg FPGA driver support Co-Authored-By: Dolpher Du Change-Id: I5b27063a2644e067da0fb6ddbc39d82b4a9a244e --- specs/queens/cyborg-fpga-driver-proposal.rst | 192 +++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100755 specs/queens/cyborg-fpga-driver-proposal.rst diff --git a/specs/queens/cyborg-fpga-driver-proposal.rst b/specs/queens/cyborg-fpga-driver-proposal.rst new file mode 100755 index 00000000..0226fc52 --- /dev/null +++ b/specs/queens/cyborg-fpga-driver-proposal.rst @@ -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 + Dolpher Du + +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