<div dir="ltr">Thanks Shaohe,<div><br></div><div>Let's schedule a video conf session next week. </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 8, 2018 at 11:41 AM, Feng, Shaohe <span dir="ltr"><<a href="mailto:shaohe.feng@intel.com" target="_blank">shaohe.feng@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">






<div>
<font face="Calibri" size="2"><span style="font-size:10.5pt">
<div align="left" style="text-align:justify"><font color="#1F497D">Hi All:</font></div>
<div align="left" style="text-align:justify"><font color="#1F497D"> </font></div>
<div align="left" style="text-align:justify"><font color="#1F497D">The POC is here:</font></div>
<div align="left" style="text-align:justify"><font face="Times New Roman"><a href="https://github.com/shaohef/cyborg" target="_blank"><font face="Calibri" color="#0563C1"><u>https://github.com/shaohef/<wbr>cyborg</u></font></a></font></div>
<div align="left" style="text-align:justify"><font face="Times New Roman" color="#1F497D"> </font></div>
<a name="m_-3565285586583357992__MailEndCompose"></a>
<div align="left" style="text-align:justify">BR</div>
<div align="left" style="text-align:justify">Shaohe Feng</div>
<div align="left" style="text-align:justify"><font face="Times New Roman" color="#1F497D"> </font></div>
<a name="m_-3565285586583357992______replyseparator"></a>
<div><font size="2"><span style="font-size:11pt">______________________________<wbr>_______________<br>

<b>From:</b> Feng, Shaohe <br>

<b>Sent:</b> 2018<font face="宋体">年</font>2<font face="宋体">月</font>12<font face="宋体">日</font> 15:06<br>

<b>To:</b> <a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.<wbr>org</a>; <a href="mailto:openstack-operators@lists.openstack.org" target="_blank">openstack-operators@lists.<wbr>openstack.org</a><br>

<b>Cc:</b> Du, Dolpher <<a href="mailto:dolpher.du@intel.com" target="_blank">dolpher.du@intel.com</a>>; Zhipeng Huang <<a href="mailto:zhipengh512@gmail.com" target="_blank">zhipengh512@gmail.com</a>>; Ding, Jian-feng <<a href="mailto:jian-feng.ding@intel.com" target="_blank">jian-feng.ding@intel.com</a>>; Sun, Yih Leong <<a href="mailto:yih.leong.sun@intel.com" target="_blank">yih.leong.sun@intel.com</a>>; Nadathur, Sundar <<a href="mailto:sundar.nadathur@intel.com" target="_blank">sundar.nadathur@intel.com</a>>; Dutch <<a href="mailto:dalthoff@xilinx.com" target="_blank">dalthoff@xilinx.com</a>>; Rushil Chugh
<<a href="mailto:rushil.chugh@gmail.com" target="_blank">rushil.chugh@gmail.com</a>>; Nguyen Hung Phuong <<a href="mailto:phuongnh@vn.fujitsu.com" target="_blank">phuongnh@vn.fujitsu.com</a>>; Justin Kilpatrick <<a href="mailto:jkilpatr@redhat.com" target="_blank">jkilpatr@redhat.com</a>>; Ranganathan, Shobha <<a href="mailto:shobha.ranganathan@intel.com" target="_blank">shobha.ranganathan@intel.com</a>><wbr>; zhuli <<a href="mailto:zhuli27@huawei.com" target="_blank">zhuli27@huawei.com</a>>; <a href="mailto:bao.yumeng@zte.com.cn" target="_blank">bao.yumeng@zte.com.cn</a>; <a href="mailto:xiaodongpan@tencent.com" target="_blank">xiaodongpan@tencent.com</a>; <a href="mailto:kong.wei2@zte.com.cn" target="_blank">kong.wei2@zte.com.cn</a>;
<a href="mailto:li.xiang2@zte.com.cn" target="_blank">li.xiang2@zte.com.cn</a>; Feng, Shaohe <<a href="mailto:shaohe.feng@intel.com" target="_blank">shaohe.feng@intel.com</a>><br>

<b>Subject:</b> [openstack-dev][cyborg][<wbr>glance][nova]cyborg FPGA management flow disscusion.</span></font></div><div><div class="h5">
<div><font face="Times New Roman"> </font></div>
<div align="left" style="text-align:justify"><font face="Times New Roman"> </font></div>
<div align="left" style="text-align:justify">Now I am working on an FPGA management POC with Dolpher. </div>
<div align="left" style="text-align:justify">We have finished some code, and have discussion with Li Liu and some cyborg developer guys. </div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify">Here are some discussions:</div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify">image management</div>
<div align="left" style="text-align:justify">1. User should upload the FPGA image to glance and set the tags as follow:</div>
<div align="left" style="text-align:justify">There are two suggestions to upload an FPGA image.</div>
<div align="left" style="text-align:justify">A. use raw glance api like:</div>
<div align="left" style="text-align:justify">   $ openstack image create --file mypath/FPGA.img  fpga.img</div>
<div align="left" style="text-align:justify">   $ openstack image set --tag FPGA --property vendor=intel --property type=crypto 58b813db-1fb7-43ec-b85c-<wbr>3b771c685d22</div>
<div align="left" style="text-align:justify">   The image must have "FPGA" tag and accelerator type(such as type=crypto).</div>
<div align="left" style="text-align:justify">B. cyborg support a new api to upload a image.</div>
<div align="left" style="text-align:justify">   This API will wrap glance api and include the above steps, also make image record in it's local DB. </div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify">2. Cyborg agent/conductor get the FPGA image info from glance.</div>
<div align="left" style="text-align:justify">There are also two suggestions to get the FPGA image info.</div>
<div align="left" style="text-align:justify">A. use raw glance api.</div>
<div align="left" style="text-align:justify">Cyborg will get the images by FPGA tag and timestamp periodically and store them in it's local cache.</div>
<div align="left" style="text-align:justify">It will use the images tags and properties to form placement taits and resource_class name.</div>
<div align="left" style="text-align:justify">B. store the imformations when call cybort's new upload API.</div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify">3. Image download.</div>
<div align="left" style="text-align:justify">call glance image download API to local file. and make a corresponding md5 files for checksum.</div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify">GAP in image management<font face="宋体">:</font></div>
<div align="left" style="text-align:justify">missing related glance image client in cyborg.</div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify">resource report management for scheduler.</div>
<div align="left" style="text-align:justify">1.  Cyborg agent/conductor need synthesize all useful information from FPGA driver and image information.</div>
<div align="left" style="text-align:justify">The traits will be like:</div>
<div align="left" style="text-align:justify">CUSTOM_FPGA, CUSTOM_ACCELERATOR_CRYPTO,</div>
<div align="left" style="text-align:justify">The resource_class will be like:</div>
<div align="left" style="text-align:justify">CUSTOM_FPGA_INTEL_PF, CUSTOM_FPGA_INTEL_VF</div>
<div align="left" style="text-align:justify">{"inventories":</div>
<div align="left" style="text-align:justify">    "CUSTOM_FPGA_INTEL_PF": {</div>
<div align="left" style="text-align:justify">        "allocation_ratio": 1.0,</div>
<div align="left" style="text-align:justify">        "max_unit": 4,</div>
<div align="left" style="text-align:justify">        "min_unit": 1,</div>
<div align="left" style="text-align:justify">        "reserved": 0,</div>
<div align="left" style="text-align:justify">        "step_size": 1,</div>
<div align="left" style="text-align:justify">        "total": 4</div>
<div align="left" style="text-align:justify">    }</div>
<div align="left" style="text-align:justify">}</div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify">Accelerator claim and release:</div>
<div align="left" style="text-align:justify">1. Cybort will support the releated API for accelerator claim and release.</div>
<div align="left" style="text-align:justify">It can pass the follow parameters:</div>
<div align="left" style="text-align:justify">  nodename: Which host that accelerator located on, it is required.</div>
<div align="left" style="text-align:justify">  type: This accelerator type, cyborg can get image uuid by it. it is optional.</div>
<div align="left" style="text-align:justify">  image uuid: the uuid of FPGA bitstream image, . it is optional.</div>
<div align="left" style="text-align:justify">  traits: the traits info that cyborg reports to placement.</div>
<div align="left" style="text-align:justify">  resource_class: the resource_class name that reports to placement.</div>
<div align="left" style="text-align:justify">And return the address for the accelerator. At present, it is the PCIE_ADDRESS.</div>
<div align="left" style="text-align:justify">2. When claim an accelerator, type and image is None, cybort will not program the fpga for user.</div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify">FPGA accelerator program API:</div>
<div align="left" style="text-align:justify">We still need to support an independent program API for some specific scenarios.</div>
<div align="left" style="text-align:justify">Such as as a FPGA developer, I will change my verilog logical frequently and need to do verification on my guest.</div>
<div align="left" style="text-align:justify">I upload my new bitstream image to glance, and call cyborg to program my FPGA accelerator.</div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify">End user operations follow:</div>
<div align="left" style="text-align:justify">1. upload an bitstream image to glance if necessary and set its tags(at least FPGA is requied) and property.</div>
<div align="left" style="text-align:justify">   sucn as: --tag FPGA --property vendor=intel --property type=crypto</div>
<div align="left" style="text-align:justify">2. list the FPGA related traits and resource_class names by placement API.</div>
<div align="left" style="text-align:justify">   such as get "CUSTOM_FPGA_INTEL_PF" resource_class names and "CUSTOM_HW_INTEL,CUSTOM_HW_<wbr>CRYPTO" traits.</div>
<div align="left" style="text-align:justify">3. create a new falvor wiht his expected traits and resource_class as extra spec.</div>
<div align="left" style="text-align:justify">   such as:</div>
<div align="left" style="text-align:justify">       "resourcesn:CUSTOM_FPGA_INTEL_<wbr>PF=2"  n is an integer or empty string.  </div>
<div align="left" style="text-align:justify">       "required:CUSTOM_HW_INTEL,<wbr>CUSTOM_HW_CRYPTO".</div>
<div align="left" style="text-align:justify">4. create the VM with this flavor.</div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify"> </div>
<div align="left" style="text-align:justify">BR</div>
<div align="left" style="text-align:justify">Shaohe Feng</div>
<div align="left" style="text-align:justify"><font face="Times New Roman"> </font></div>
<div align="left" style="text-align:justify"><font face="Times New Roman"> </font></div>
</div></div></span></font>
</div>

</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Zhipeng (Howard) Huang</div><div dir="ltr"><br></div><div dir="ltr">Standard Engineer</div><div>IT Standard & Patent/IT Product Line</div><div dir="ltr">Huawei Technologies Co,. Ltd</div><div dir="ltr">Email: <a href="mailto:huangzhipeng@huawei.com" target="_blank">huangzhipeng@huawei.com</a></div><div dir="ltr">Office: Huawei Industrial Base, Longgang, Shenzhen</div><div dir="ltr"><br></div><div dir="ltr">(Previous)<br><div>Research Assistant</div><div>Mobile Ad-Hoc Network Lab, Calit2</div><div>University of California, Irvine</div><div>Email: <a href="mailto:zhipengh@uci.edu" target="_blank">zhipengh@uci.edu</a></div><div>Office: Calit2 Building Room 2402</div><div><br></div><div>OpenStack, OPNFV, OpenDaylight, OpenCompute Aficionado</div></div></div></div></div></div></div></div></div>
</div>