# Fuyao **Repository Path**: anolis/fuyao ## Basic Information - **Project Name**: Fuyao - **Description**: 扶摇/Fuyao 是一个开源的服务器无感知计算框架,结合新型硬件DPU(Data Processing Unit),提供了一套适用于节点内外的亚毫秒级中间数据传输方案。 - **Primary Language**: C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 31 - **Forks**: 4 - **Created**: 2023-03-10 - **Last Updated**: 2025-05-22 ## Categories & Tags **Categories**: web-dev-toolkits **Tags**: Serverless ## README [//]: # (# 扶摇) #### 介绍 **扶摇/Fuyao** 是一个开源的服务器无感知计算框架,结合新型硬件DPU(Data Processing Unit),提供了一套适用于节点内外的亚毫秒级中间数据传输方案。 **扶摇** 继承了[Nightcore](https://github.com/ut-osa/nightcore)的IPC方案,并且还实现了另外三种函数间数据传输方案,详见下表: | 数据传输方式 | 适用范围 | 延迟 | 对数据大小的限制 | 说明 | |:---------------:|:----:|:--------:|:--------:|:--------------------:| | IPC | 节点内 | 亚毫秒级 | 无 | 利用数据局部性 | | DRC_OVER_IPC | 节点内 | 亚毫秒级(极速) | 无 | 基于函数间动态创建的RDMA直连通道 | | Fabric | 节点间 | 毫秒级 | 有 | 利用DPU实现节点间无CPU开销数据传递 | | DRC_OVER_Fabric | 节点间 | 亚毫秒级(极速) | 无 | 基于函数间动态创建的RDMA直连通道 | #### 软件架构 ![img](asserts/architecture.drawio.png) #### 项目结构

Fuyao
|---asserts
|---deps
|---examples
    |---00
    |---01
|---lib
    |---base
    |---common
    |---ipc
    |---rdma
    |---runtime
    |---server
    |---utils
|---src
    |---dpu
        |---agent
        |---gateway
    |---host
        |---engine
        |---launcher
        |---worker
            |---cpp
            |---python
#### 安装教程 1. (推荐)安装要求: 1. 硬件要求: 安装Nvidia BlueField-2 DPU的服务器集群 2. 系统要求: ubuntu 20.04 2. 安装依赖 ```shell # 安装verbs依赖库,可能还有一些其他依赖需求,按需安装 sudo apt update sudo apt install libibverbs-dev ``` 3. 编译项目 1. (推荐)使用Jetbrains Clion远程部署到安装有DPU的集群进行编译 2. 在服务器上,使用终端编译 ```shell git clone --recursive https://gitee.com/anolis/fuyao.git cd fuyao/ # 创建目录 mkdir /tmp/fuyao /usr/bin/cmake -DCMAKE_BUILD_TYPE=Debug -B /tmp/fuyao # 与框架相关 /usr/bin/cmake --build /tmp/fuyao --target gateway engine agent launcher worker_cpp -- -j 8 # 与实验一相关 /usr/bin/cmake --build /tmp/fuyao --target exp01_fn_a exp01_fn_b exp01_fn_c exp01_fn_d exp01_fn_e exp01_fn_f -- -j 8 ``` #### 使用说明 在`examples/` 目录下,提供一个测试用例,[参考](examples/01)