# 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直连通道 |
#### 软件架构

#### 项目结构
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)