当前位置: 首页 > news >正文

基于DE1-SoC的My_First_oneAPI(一)

01 前言

在算力需求爆炸式增长的时代,异构计算已成为突破性能瓶颈的首选路径。然而,多架构编程困境、传统硬件开发高门槛(如FPGA)、硬件优化与算法快速迭代,这些无不制约着创新的效率。


而此时作为开放的、跨架构的统一编程模型英特尔® oneAPI,正是破局之钥。对于FPGA的开发来说,oneAPI让开发者能用高级语言(如C++))转换为用于硬件加速的RTL IP代码。通过oneAPI实现了FPGA开发周期大幅度缩短,编译器自动优化数据流与流水线,以及同一代码库跨CPU/GPU/FPGA无缝部署。

02 基于DE1-SOC的oneAPI实验

本教程介绍如何使用Intel oneAPI工具包将高级语言代码(特别是C++风格的代码)转换为用于硬件加速的RTL(Register-Transfer Level,寄存器传输级) IP代码。关于Intel oneAPI的详细介绍可以浏览Intel oneAPI官网。

教程中的示例基于Nios II处理器嵌入式系统构建并在DE1-SoC开发板上运行,演示如何使用oneAPI工具包将用C++编写的高级直接内存访问(Direct Memory Access,DMA)代码转换为 RTL IP 代码,然后将生成的 IP 集成到Nios II嵌入式系统中。开发者按照这种方法可以为任何计算密集型任务生成 RTL IP 代码,从而显著提升硬件加速性能。

以下是运行示例所需的软硬件要求:

  • DE1-SoC开发板

  • Win 10/11 PC

  • Visual Studio Community 2022

  • Intel® oneAPI Base Toolkit

  • FPGA Support Package for oneAPI

  • Altera Quartus® Prime Standard v23.1

一、 安装Visual Studio Community 2022

本节介绍下载并安装Visual Studio Community 2022。

1. 下载Visual Studio Community。

2. 下载完成后运行VisualStudioSetup.exe,点击Continue。

3. 在Installing界面选择Desktop&Mobile里的Desktop development with C++,保持其它默认设置不变,然后点击Install开始安装。

4. 安装界面里取消勾选Start after installation,等待安装完成。

5. 安装完成后关闭Visual Studio Installer。

二、安装Intel® oneAPI Base Toolkit 

本节介绍下载安装Intel® oneAPI Base Toolkit。Intel® oneAPI Base Toolkit是一套核心工具和库,用于跨多种架构创建和部署高性能、以数据为中心的应用程序,它提供了用于高效创建高性能跨架构应用程序的基础工具。

1. 按下图所示选择下载Intel oneAPI Base Toolkit。

2. 运行intel-oneapi-base-toolkit-2025.0.1.47_offline.exe,点击下图中的Extract。

3. 点击Continue继续。

4. 勾选I accept the terms of the license agreement,然后点击Continue。

5. 接下来一直保持默认设置安装。

6. 等待安装完成后,点击Finish。

三、安装FPGA Support Package for oneAPI

通过扩展Intel oneAPI DPC++/C++ 编译器,FPGA Support Package使开发者能够遵循简化的FPGA工作流程,它支持创建和优化 FPGA 工作负载,并通过仿真进行功能验证。此外还提供详细的报告和图形分析功能,帮助检查生成的SystemVerilog 输出。

1. 下载FPGA Support Package。

2. 运行intel-fpga-support-for-compiler-2025.0.0.585_offline.exe,点击Extract。

3. 点击Continue继续。

4.勾选I accept the terms of the license agreement,点击Continue。

5. 勾选I Consent to the collection of my information,点击Install。

6. 等待安装完成后,点击Finish。

四、安装Quartus Prime Standard v23.1.1

1. 下载Quartus Prime Standard v23.1.1以及Cyclone V FPGA器件包。

2. 运行QuartusSetup-23.1std.1.993-windows.exe开始安装,持续点击Next保持Quartus默认方式安装。在选择安装路径界面也可以更改安装路径,并确保Cyclone V FPGA器件包也一起安装。

3. 安装完成后,修改PC的环境变量,新增变量名QUARTUS_ROOTDIR_OVERRIDE,变量值指向Quartus安装路径,比如E:\intelFPGA\23.1std\quartus。

五、验证软件环境

本节介绍如何验证软件是否成功安装,以及检查PC环境变量设置是否正确。

1. 在PC的开始菜单栏选择Intel oneAPI 2025-->Intel oneAPI command prompt for Intel 64 for Visual Studio 2022,打开Intel oneAPI命令行窗口。

2. 执行clcmake -version命令,验证Visual Studio是否完全安装。

3. 执行icx-cl --version命令验证Intel oneAPI Base Toolkit已安装。

4. 执行aoc -version命令验证FPGA Support Package for oneAPI已安装。

5. 执行%QUARTUS_ROOTDIR_OVERRIDE%/bin64/quartus_sh --version命令验证Quartus已安装。

六、编译执行oneAPI示例--Simple DMA

oneAPI CLI Samples Browser可用于浏览在线oneAPI系列示例。在浏览oneAPI 示例时,可以将它们复制保存到PC本地文件夹。在PC主机的CPU上运行的FPGA Emulator可以生成设备端(FPGA)内核所用的线程。FPGA Emulator并非FPGA的完美复制品,运行速度也慢得多。Emulator允许我们在不启动完整器件编译的情况下检查代码的正确性。

1. 打开Intel oneAPI命令窗口,执行chcp 65001命令将语言编码更改为UTF-8。

2. 执行oneapi-cli.exe命令打开oneAPI CLI Samples Browser。

3. 按键盘上的 < 和 > 键移动光标,选择(1) Create a project再按Enter键进入Select sample language界面。

4. 选择(1) cpp再按Enter键。

5. 移动光标依次选择Toolkit > oneAPI Direct Programming > C++ SYCL FPGA > Reference Designs> Nios V,再按Enter键。

6. 在此界面可更改保存工程的路径,举例D:\Intel\oneAPI\niosv,再按Enter键可将工程保存在该路径下。

7. 按Quit键退出回到Intel oneAPI命令行窗口,使用cd命令切换到niosv/ReferenceDesigns/niosv/kernels/simple_dma工程路径。

8. 执行以下命令创建并切换到build文件夹,配置build系统并指定FPGA为Cyclone V。

mkdir build && cd build

cmake .. -G "NMake Makefiles" -DFPGA_DEVICE=CycloneV

9. 执行nmake fpga_emu命令编译Simple DMA,使用FPGA emulator验证Simple DMA内核。

10. 执行simple_dma.fpga_emu.exe验证Simple DMA内核,结果显示为PASSED。

下一篇基于DE1-SoC的My_First_oneAPI(二)

http://www.lryc.cn/news/574677.html

相关文章:

  • SpringBoot 3.0 - 自定义注解+拦截器+Redis 解决接口幂等性
  • 【apache-maven3.9安装与配置】
  • 从虚拟机角度解释python3相对导入问题(下)
  • 轻量化实物建模革命:WebGL如何实现复杂模型的高效加载与交互
  • ​CentOS 7 单用户模式重置 root 密码完整指南
  • 新中国风通用读书颂词分享PPT模版
  • JS核心操作符:从基础到ES6+
  • (ICML-2023)BLIP-2:使用冻结图像编码器与大型语言模型的语言-图像预训练引导方法
  • SQL Server 查询数据库及数据文件大小
  • 使用 spark-submit 运行依赖第三方库的 Python 文件
  • RGB相机 vs 灰度相机
  • Apache Flink Kafka 写连接器源码深度剖析
  • java-SpringBoot框架开发计算器网页端编程练习项目【web版】
  • Drag-and-Drop LLMs: Zero-Shot Prompt-to-Weights
  • DataSophon 1.2.1集成Flink 1.20并增加JMX 监控
  • pyqt setContentsMargins
  • 网络安全攻防:2025年新型钓鱼攻击防御指南
  • 零基础搭建Spring AI本地开发环境指南
  • LT8311EX一款适用于笔记本电脑,扩展坞的usb2.0高速运转芯片,成对使用,延伸长度达120米
  • 202564读书笔记|《土耳其:换个地方躺平(轻游记)》——旅行的时候,绮丽多姿的真实世界向我打开
  • Python核心库Pandas详解:数据处理与分析利器
  • 【Java开发日记】我们详细地讲解一下 Java 异常及要如何处理
  • Springboot项目中使用手机号短信验证码注册登录实现
  • Vue项目使用defer优化页面白屏,性能优化提升,秒加载!!!
  • 【服务器】教程 — Linux上如何挂载服务器NAS
  • 帮助装修公司拓展客户资源的微信装修小程序怎么做?
  • STM32 环境监测与控制系统的设计与实现
  • Vue3+el-table-v2虚拟表格大数据量多选功能详细教程
  • STM32[笔记]--4.嵌入式硬件基础
  • 攻防世界-MISC-MeowMeowMeow