【Vitis Accel】1 - HLS 简介

本文介绍了HLS(High-Level Synthesis)在FPGA开发中的作用,详细阐述了HLS的工作过程,包括Scheduling部署、Binding捆绑和Control logic extraction控制逻辑提取。通过三个示例说明了如何在C语言中实现算法设计、验证和综合,并讨论了性能参数如面积、延迟和启动间隔。HLS使得开发者能够使用高级语言避免繁琐的HDL编程,生成针对FPGA的优化硬件实现。


HLS 简介

HLS: High-Level Synthesis

简单来说,HLS 是为了免去硬件设计者使用 HDL 编程 FPGA的步骤,用 C 语言完成算法设计、验证、综合过程控制,利用 FPGA 实现所需逻辑。


1. 工作过程

HLS 的工作主要分为以下三段:

1.1 Scheduling 部署

这一部分决定了运算操作在哪一个时钟周期完成。分配取决于:
a. 时钟周期的长度、频率
b. 由目标设备所定义的,运算操作完成所需的时间
c. 用户指定的优化指令

如果时钟周期足够长,或者目标设备足够快,将会有更多的运算操作在一个周期内完成。反之,有些运算操作将在多个周期完成。

1.2 Binding 捆绑

指定完成运算的硬件资源,HLS 需要目标设备的信息来完成此步骤。

1.3 Control logic extraction 控制逻辑提取

提取控制逻辑,建立有限状态机(FSM),以在 RTL 设计中顺序完成运算。

2. 综合过程

HLS 的对 C 程序的综合主要包含以下内容

  • 将顶层函数的变量综合为 RTL 的 I/O 接口
  • 将 C 函数综合成为 RTL 层次的块(Blocks) 。 如果 C 函数中有子函数的话,形成的RTL也由有对应的子模块组成。
  • C 函数中的循环 Loop 默认没有展开(rolled)。如果希望展开循环,并行执行的话,需要使用优化指令(optimization directivities)。Loop 也可以流水化执行。
  • C 语言数组在最终的 FPGA 设计中将被综合成为 RAM 块,或者UltraRAN块。如果数组是顶层函数接口,那么数组将被综合成为 ports 来访问设计外的 RAM 块。

HLS的综合会在默认行为,限制constraints,以及用户指定的优化指令(optimization directivities)的基础上建立一个优化过的实现。优化指令(optimization directivities)可以用来修改或者控制内部逻辑和 I/O ports的默认行为。这使得运用相同 C 代码生成不同硬件实现成为可能。

3. 性能参数

为了判断设计是否符合要求,综合报告会包含以下信息

  • 面积 Area:包括查找表 LUT,寄存器 registers,RAM块,DSP48等FPGA硬件资源
  • 延迟 Latency:计算所有输出值所需的时钟数目
  • 启动间隔 Initiation inte
<think>我们正在解决的是用户遇到的`which vai_q_tensorflow2`命令不返回路径的问题。根据之前的对话,我们已经分析了可能的原因并给出了一些解决方案。现在需要整合这些信息,确保回答清晰、步骤明确,并符合用户提供的引用内容(尽管引用主要关于量化工具本身,但我们可以适当关联)。 关键点: 1. 问题:执行`which vai_q_tensorflow2`没有输出,意味着系统在PATH中找不到该可执行文件。 2. 原因:通常是因为Vitis-AI的环境没有正确激活或环境变量PATH没有包含该工具的路径。 3. 解决方案:通过手动添加路径、修复conda初始化或重新安装工具包来解决。 注意:用户引用中提到了Vitis-AI的量化工具(包括TensorFlow、PyTorch和Caffe版本)以及PyTorch量化流程,但当前问题与PyTorch无关,因此我们专注于TensorFlow版本。 步骤: 1. **确认路径存在**:Vitis-AI的TensorFlow2环境通常安装在`/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/bin`,我们需要确保这个路径存在并且包含`vai_q_tensorflow2`可执行文件。 2. **环境变量设置**:将该路径添加到PATH环境变量中。 3. **激活conda环境**:确保conda环境已经正确初始化和激活。 另外,根据用户引用[1]中的信息,我们知道Vitis AI quantizer支持TensorFlow,其工具名为`vai_q_tensorflow`(注意拼写,用户问题中写的是`vai_q_tensorflows`,多了一个's',但实际工具名应该是`vai_q_tensorflow`,没有's')。因此,用户可能输入了错误的命令。 所以,我们还需要提醒用户检查命令的拼写。 综合以上,回答结构如下: 1. 检查命令拼写是否正确(因为实际工具名是`vai_q_tensorflow`,而不是`vai_q_tensorflows`)。 2. 检查环境激活和路径设置。 3. 给出具体解决步骤。 由于用户的问题中写的是`vai_q_tensorflows`(多了一个's'),而实际工具名是`vai_q_tensorflow`(没有's'),所以用户可能因为拼写错误而找不到命令。因此,我们首先建议用户尝试正确的命令`which vai_q_tensorflow`。 如果用户确实需要查找`vai_q_tensorflow`(没有's')的路径,那么按照以下步骤: 步骤: 1. 确保已经激活了Vitis-AI的TensorFlow2环境:`conda activate vitis-ai-tensorflow2` 2. 检查该环境下的bin目录是否在PATH中:`echo $PATH | grep vitis-ai-tensorflow2` 3. 如果没有,手动添加路径并重试。 另外,根据引用[3]中提到的PyTorch量化流程(虽然不直接相关,但说明Vitis-AI工具需要特定环境),我们强调环境激活的重要性。 因此,回答如下: </think> ### 解决 `which vai_q_tensorflow2` 不返回路径问题 #### 核心原因分析 1. **环境路径缺失** Vitis-AI 工具链默认安装路径为 `/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/bin`,但该路径未被添加到系统的 `$PATH` 环境变量中。数学表示为: $ \text{PATH} \not\ni \text{/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/bin} $ 2. **Conda 环境未正确激活** 即使执行了 `conda activate`,若未初始化 conda 或环境名称错误,会导致路径加载失败[^1]。 3. **拼写错误或版本差异** - 工具名应为 `vai_q_tensorflow`(无数字2后缀),Vitis-AI 官方文档中命名规范为 `vai_q_<框架名>`[^1] - 检查命令是否误写为 `vai_q_tensorflows`(多出字母"s") #### 完整解决方案 ##### 步骤 1:验证工具名正确性 ```bash # 尝试正确工具名(注意无数字2后缀) which vai_q_tensorflow # 检查常见拼写错误 ls /opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/bin | grep 'vai_q_tensorflow' ``` ##### 步骤 2:永久添加环境变量 ```bash # 编辑bash配置文件 echo 'export PATH="/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/bin:$PATH"' >> ~/.bashrc # 立即生效配置 source ~/.bashrc ``` ##### 步骤 3:修复 Conda 环境 ```bash # 重新初始化 conda conda init bash exec bash # 激活指定环境 conda activate vitis-ai-tensorflow2 ``` ##### 步骤 4:验证安装状态 ```bash # 检查工具是否存在 ls -l /opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/bin/vai_q_tensorflow # 检查依赖完整性 conda list -n vitis-ai-tensorflow2 | grep 'vai_q_tensorflow' ``` #### 故障排查表 | 现象 | 诊断 | 解决命令 | |------|------|----------| | `command not found` | 路径未配置 | `export PATH="...:$PATH"` | | 无任何输出 | Conda未初始化 | `conda init bash && exec bash` | | 权限拒绝 | 安装目录权限问题 | `sudo chmod -R 755 /opt/vitis_ai` | | 无效环境名 | 环境名称错误 | `conda env list` 查看正确名称 | #### 关键注意事项 1. **版本兼容性** - Python 需为 3.6-3.9 版本:$ \text{python} \geq 3.6 \land \text{python} \leq 3.9 $ - TensorFlow 需 2.8/2.9 版本:$ \text{tf_version} \in \{2.8, 2.9\} $ 2. **路径规范** Vitis-AI 的量化工具路径遵循固定模式: $$ \text{工具路径} = \text{/opt/vitis_ai/conda/envs/}\langle\text{环境名}\rangle\text{/bin/vai_q_}\langle\text{框架}\rangle $$ 3. **环境隔离** 避免在系统环境中操作,始终使用专用环境: ```bash # 查看所有环境 conda env list # 激活Vitis-AI环境 conda activate vitis-ai-tensorflow2 ``` --- ### 相关问题 1. 如何在 WSL 中永久添加 Conda 环境变量? 2. Vitis-AI 量化时出现 "Unsupported Ops" 错误如何解决?[^4] 3. 如何验证 Vitis-AI 的 TensorFlow 2 环境是否正确安装? 4. `vai_q_pytorch` 的量化流程与 TensorFlow 版本有何差异?[^2][^3] : Vitis AI quantizer支持TensorFlow,Pytorch和Caffe(quantzer名字vai_q_tensorflow, vai_q_pytorch, and vai_q_caffe ) [^2]: vai_q_pytorch 的作用包括:解析计算图、修改计算图(剪枝/量化)、部署到DPU [^3]: Pytorch中的代码流程:`from pytorch_nndct.apis import torch_quantizer, dump_xmodel` [^4]: 算子不支持时的处理方式:重构模型结构或使用ONNX转换
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值