当前位置: 首页 > 软件库 > 开发工具 > 编译器 >

Nanotube

基于 LLVM 的编译器
授权协议 MIT
开发语言 C/C++ Python
所属分类 开发工具、 编译器
软件类型 开源软件
地区 不详
投 递 者 公羊渝
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Nanotube 是编译器通道、库和 API 的集合,用于促进 EBPF XDP 和 similar networking 代码在 SmartNIC 的 FPGA 上执行。编译器将 EBPF XDP C 代码作为输入,并在 HLS C++ 中输出数据包处理管道。然后可以使用 Vitis HLS 合成此 HLS C++ 代码并将其放置在 FPGA 上。

编译器对程序进行各种转换;从将 EBPF 调用转换为对类似 Nanotube API 函数的调用开始。然后它在结构上和不同的 API 级别上执行多个阶段的代码转换:

  • mem2req:将 C 语言风格的指针访问(加载和存储)转换为对 map 和 packet data 的显式访问
  • optreq:将相邻的  map / packet 访问合并为更少的广泛访问
  • converge:理顺围绕 Nanotube API 调用的控制流图
  • pipeline:将单个数据包处理功能拆分为多个粗粒度管道阶段,并将应用程序逻辑更改为处理流经的 packet words,而不是内存中的 flat packet 表示
  • hls:从 LLVM IR 创建 HLS C++ 代码,用于 Vitis HLS 的合成

Nanotube 库以一种综合友好的实现方式实现了数据包访问和映射,这意味着它将被置于应用程序中,并将在 high-level synthesis 中创建高效的硬件。

在编译 Nanotube 之前,需要确保所有依赖项都可用。其中许多在常见的 Linux 发行版中作为软件包提供,其他的是 LLVM 和 Vitis-HLS。

你将需要足够的可用存储空间来存放 Nanotube 及其依赖项。使用本地存储会更快,但如果愿意,可以使用网络存储。

  • RELATED APPLICATIONS This application claims priority to provisional application Ser. No. 60/741,837 to Mirkin et al. filed Dec. 2, 2005, which is incorporated herein by reference. STATEMENT OF FEDERA

  • 摘要: Nanotubes as microwave frequency interconnects.The present invention provides nanotube interconnects capable of carrying current at high frequencies for use as high-speed interconnects in high fre

 相关资料
  • 本文向大家介绍基于编译虚拟机jvm—openjdk的编译详解,包括了基于编译虚拟机jvm—openjdk的编译详解的使用技巧和注意事项,需要的朋友参考一下 java只所以被推广,实际上很大原因是因为本身是跨平台的,很大作用是因为虚拟机的关系。 一般情况下开发人员不需要关注虚拟机内部实现就可以日常开发了,但是有时候涉及到性能的时候就需要了解虚拟机的实现机制了。 那么今天写的内容更多的是关于编译一套自

  • 我已经收到这个错误很长时间了,我不知道该怎么办。 为了保持问题简短,我将错误写入.rtf文件并将其放入CloudApp中。这是链接:http://cl.ly/0T3n1Q123u352T372t0m 我觉得和“CLAPIDeserializer.m”有关系。 我会感谢任何帮助。谢谢你。 错误: CompileC/Users/juniorpond/Library/Developer/Xcode/de

  • 本文向大家介绍基于python的字节编译详解,包括了基于python的字节编译详解的使用技巧和注意事项,需要的朋友参考一下 定义: 把模块定义成二进制语言程序的这个过程叫做字节编译 python是解释型语言,它的字节编译是由解释器完成的 编译py文件,生成pyc结尾的文件的方法, 方法一: Import zipfile.py 方法二: 以上这篇基于python的字节编译详解就是小编分享给大家的全部

  • 我正在尝试为Android ARM交叉编译llvm/clang。 我也尝试了这里列出的所有步骤,以及在这里找到的指南,但没有运气。 任何帮助都将不胜感激。谢了! 编辑:现在我正在使用以下命令: 错误消息:CLANG36++:警告:编译过程中未使用参数:'-bundle'/users/paschalis/androide/toolchains/gcc/bin/../lib/gcc/arm-linux

  • 问题内容: 我想用C ++编写一个包含系统调用的跨平台函数。我可以检查哪些条件编译标志来确定要为其编译代码的操作系统?我对使用Visual Studio和GCC的Windows和Linux感兴趣。 我认为应该看起来像这样: 问题答案: 我的gcc(4.3.3)定义了以下与Linux相关的预定义宏: 在VC ++(和许多其他Win32编译器)下,还有几个用于标识平台的预定义宏,最著名的是_WIN32