• 2024-09-15Debian 中安装 llvm 最新版
    在github上只能下载一个clang和llvm的捆绑的二进制文件包,clang+llvm-18.1.8-x86_64-linux-gnu-ubuntu-18.04.tar.xz这个二进制文件,那么可以通过以下步骤将其安装到Debian系统中:步骤1:解压文件首先,你需要解压这个.tar.xz文件。假设这个文件位于你的主目录下,你可以这
  • 2024-09-13demo:tvm优化resnet50 llvm后端cpu上推理
    这是一个完整的例子。使用预训练的resnet50模型,经过tvm优化调整,target=llvm,在cpu上进行推理。最后打印结果是1这个索引代表goldfish importonnxfromtvm.contrib.downloadimportdownload_testdatafromPILimportImageimportnumpyasnpimporttvm.relayasrel
  • 2024-08-22减小编译出来的 .so 文件的尺寸方法
    要减小编译出来的.so文件的尺寸,可以通过去除符号表、调试信息等非必要的内容来实现:一、Linux系统下方法1.使用strip命令strip命令可以删除.so文件中的符号表和调试信息,从而减小文件大小。strip--strip-unneededlibyourlibrary.so--strip-unneeded参数只会
  • 2024-08-21【源码解析】C/C++开源代码解析引擎
    1. 背景说明针对Simulink或其他MBD环境的模型生成代码,及其他的外部C/C++代码工程,做相应的后端代码优化处理工作,例如如下场景,统计代码内的全局变量声明及其内存占用情况;提取代码内的逻辑判断条件结合Z3Prover定理证明器进行形式化验证;...因此需要对C/C++代码进行语法
  • 2024-08-17LLVM - 编译器后端-目标描述
    一:概述        LLVM具有非常灵活的架构。我们可以向其添加新的目标后端。后端的核心是目标描述。在本篇文章中,我们将学习如何在LLVM中添加一个CPU后端。        在本章中,我们将涵盖以下内容:        •为新的后端搭建环境,学习M88kCPU架构,并介绍从
  • 2024-08-08LLVM中四种寄存器分配算法及开启选项
    在LLVM编译器中,一共有四种寄存器分配算法:BasicRegisterAllocator、FastRegisterAllocator、PBQPRegisterAllocator、GreedyRegisterAllocator。FastRegisterAllocator这种分配器是局部的,作用于各个基本块,它尽量地将值保持在寄存器中并重用它们。BasicRegisterAl
  • 2024-08-07VS设置 LLVM-Clang 编译器进行编译C++项目
    在VS中默认的C++编译器一般为MSVC编译器,可以根据自己的需要将其设置为LLVM-Clang编译器。主要有两种方案:1)直接使用VisualStudioInstaller来自动下载对应的Clang编译器和构建工具,后续无需再进行配置,便可直接使用。2)使用自己编译或者单独下载的LLVM-Clang编译器,以及通
  • 2024-08-05给vscode配置clangd插件
    一般情况下,我们在vscode里编辑C/C++代码时用的都是微软的c++package,但是这个插件包很多时候无法正确分析出语法,导致大量虚假错误报告,为了解决这个问题,我们首先禁用掉C++插件包,然后准备更换clangd。clangd是一个基于Clangd的分析服务器,方便我们分析代码语法。为了使用它,
  • 2024-08-04LLVM编译Fortran语言的全过程
    以一个给数组求和的程序来作为例子,编译器使用的是LLVM18.1.8!sum.f90programsum​ integer,parameter::n=30 real(4),dimension(n)::array real(4)::result integer::i​ doi=1,n   array(i)=i enddo​ 
  • 2024-07-22GMSSL2.x编译鸿蒙静态库和动态库及使用
    一、编译环境准备1.1开发工具DevEco-Studio下载。1.2SDK下载​ 下载编译第三方库的SDK有两种方式,第一种方式从官方渠道根据电脑系统选择对应的SDK版本,第二种方式通过DevEco-Studio下载SDK。本文只介绍通过DevEco-Studio下载SDK的方式。安装SDK到本地根据SDK安装位
  • 2024-07-12关于最近看到的一些前沿技术
    看了一下新技术,感觉自己所了解的技术真的太窄了。什么新技术呢? WebAssembly官网https://webassembly.org https://developer.mozilla.org/zh-CN/docs/WebAssemblyWebAssembly是一种新的编码方式,可以在现代的Web浏览器中运行——它是一种低级的类汇编语言,具有紧凑的
  • 2024-07-12编译器
    本页面主要介绍了各系统下各类编译器/解释器的安装步骤。GCCWindows手动下载安装访问MinGW-w64的下载页面,有多个构建版本。方便起见,我们使用由WinLibs提供的构建版本。首先前往WinLibs下载最新的安装包,选择合适的版本,本文选择了GCC12.3.0+LLVM/Clang/LLD/LLDB16.0
  • 2024-07-07调试 hipcc 的llvm llc gpu目标代码生成模块
    源码:hello_vectorAdd.hip:__global__voidvectorAdd(constfloat*A,constfloat*B,float*C){inti=blockDim.x*blockIdx.x+threadIdx.x;C[i]=A[i]+B[i]+0.0f;}Makefile:x.O1.s:hello_vectorAdd.hip ../../local_amdgpu/bin/clang++./he
  • 2024-07-06从零开始教你写一个MLIR Pass
    笔者在去年写了一篇LLVMPass的教程,现在从事MLIR的开发近1年了,写点教程回馈下社区。MLIR(Multi-LevelIntermediateRepresentation,多层中间表示)是LLVM之父(博士期间开发的LLVM)的ChrisLattner带领团队开发的编译器基础设施,其增强了LLVMIR表达能力,而且其是关注Polyhedral(多
  • 2024-07-05编译器(1)AI for compiler
    简介使用人工智能技术来改进编译器的性能和功能是一个激动人心的领域。以下是一些利用人工智能技术来改进编译器的方法和应用:自动优化:利用机器学习和深度学习技术,可以训练模型来自动优化编译器生成的代码。例如,可以使用神经网络来学习代码优化的模式和规律,从而提高编译器生
  • 2024-07-05Linux 交叉编译(toolchain) ARM aarch64版 libc++.so 库
    前言全局说明libc++源码libc++是LLVM项目提供的一个C++标准库的实现,它是KonaKart等项目的基础。由于libc++是开源>的,因此您可以在其官方仓库中找到源代码。一、说明如果您想要阅读libc++的源代码,可以按照以下步骤进行:访问libc++的官方GitHub仓库:https://github.com/llv
  • 2024-07-01编译—配置化TOML与编译组件
    硬件功能模块化,软件功能配置化(业务化)软件功能配置化软件系统模块化设计是实现可配置性的基础。通过将系统拆分为多个独立的模块,可以使得每个模块都拥有独立的配置选项引入配置文件,提供可视化配置界面,实现动态参数调整-运行时对部分参数进行调整-热插拔配置文件ini
  • 2024-06-30LLVM 中的指令调度器及其工作过程
    LLVM中的指令调度器及其工作过程概述LLVM中实现了多种指令调度器,分别作用于后端流程的不同阶段,包括指令选择阶段的指令调度器、寄存器分配前的指令调度器和寄存器分配后的指令调度器这三类调度器都有llc命令行选项可以控制其使能或禁用在寄存器分配前,基本块中的操作数
  • 2024-06-23指令选择原理与实现方式
    概述编译器前端将源代码转换为等效形式的IR,IR经过优化器优化后传递到后端,由代码生成器将IR代码转换为汇编代码或目标代码在这个过程中,后端首先通过指令选择器目标机器支持的指令来实现IR指令至于指令的顺序,可由后续的指令调度器决定指令选择器指令选择器选择指令的基
  • 2024-06-12深度解读数据库引入LLVM技术后如何提升性能
    GaussDB作为企业级的数据库,经过了多年的技术发展,具备丰富的技术特性,使用LLVM技术后提升了系统的查询性能,使得开发者在OLAP和OLTP多场景中均受益。Hi,别急!让技术触达每一个角落,赋能更多的人,GaussTech第3期《LLVM技术在GaussDB等数据库中的应用》,不仅带来满满的技术干货,还推出【分
  • 2024-06-03LLVM技术在GaussDB等数据库中的应用
    本文分享自华为云社区《【GaussTech第3期】LLVM技术在GaussDB等数据库中的应用》,作者:GaussDB数据库。Hi,别急!让技术触达每一个角落,赋能更多的人,GaussTech第3期《LLVM技术在GaussDB等数据库中的应用》,不仅带来满满的技术干货,还推出【分享集赞回帖赢好礼】活动,参与就能赢好礼,文末
  • 2024-05-21实现“代码可视化”需要了解的前置知识-编译器中端
    1.前言前文实现“代码可视化”需要了解的前置知识-编译器前端介绍了编译器前端知识并附带了小练习,本文将继续介绍编译器中端相关的知识,还是概念+练习的学习方式。中间代码是用来进行程序分析和实现代码可视化的关键数据,了解其生成和优化方式能更好的帮助我们理解程序的执行逻辑,
  • 2024-04-29openGauss MOT查询原生编译_JIT
    MOT查询原生编译(JIT)MOT使您可以在执行之前以原生格式(使用PREPARE语句)准备并分析预编译的完整查询。这种本机格式以后可以更有效地执行(使用EXECUTE命令)。这种类型的执行效率要高得多,因为在执行期间,本机格式绕过了多个数据库处理层。这种分工避免了重复的解析分析操作。LiteExecu
  • 2024-04-29openGauss MOT查询原生编译_JIT
    MOT查询原生编译(JIT)MOT使您可以在执行之前以原生格式(使用PREPARE语句)准备并分析预编译的完整查询。这种本机格式以后可以更有效地执行(使用EXECUTE命令)。这种类型的执行效率要高得多,因为在执行期间,本机格式绕过了多个数据库处理层。这种分工避免了重复的解析分析操作。LiteExecu
  • 2024-04-28openGauss MOT查询原生编译_JIT
    MOT查询原生编译(JIT)MOT使您可以在执行之前以原生格式(使用PREPARE语句)准备并分析预编译的完整查询。这种本机格式以后可以更有效地执行(使用EXECUTE命令)。这种类型的执行效率要高得多,因为在执行期间,本机格式绕过了多个数据库处理层。这种分工避免了重复的解析分析操作。LiteExecu