# Fuyao **Repository Path**: pawnm/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**: 0 - **Forks**: 5 - **Created**: 2023-03-12 - **Last Updated**: 2023-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## 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 -G "CodeBlocks - Unix Makefiles" -B /tmp/fuyao
# 与框架相关
/usr/bin/cmake --build /tmp/fuyao --target gateway engine agent launcher worker_cpp worker_python -- -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)