- 博客(18)
- 收藏
- 关注
原创 环境搭建遇到的小问题与解决方案汇总
环境搭建vscode 安装:https://zhuanlan.zhihu.com/p/342467129 (主题修改+字体修改+C++配置)cmake 升级 : https://askubuntu.com/questions/355565/how-do-i-install-the-latest-version-of-cmake-from-the-command-line软件包换源:https://zhuanlan.zhihu.com/p/142014944补齐工具:https://zhuanlan
2022-04-26 09:29:32 1154
原创 DX12 图形学知识 (1) : Sampler Feedback && Texel Space Shading
1. 前言HLSL SM6.5 引入了一个新Feature, 叫Sampler Feedback, 它可以让硬件还回一些采样信息,软件可以使用这些采样信息做一些文章,场景有两个:streaming and texture-space shading, 本文主要介绍后者Texel Space Shading,同时拟解决以下三个问题:问题1:硬件传回了什么信息?问题2:软件怎么控制?问题3:texture-space shading 算法如何使用这个信息?参考资料https://microsof
2021-09-12 11:14:45 1126
原创 LLVM AMDGPU 后端代码分析研究(4)AMDGPUAtomicOptimizer
1. 介绍在计算机并行计算领域,并行计算模型常分为以下四种情况:单指令单数据 (SISD)单指令多数据 (SIMD)多指令单数据 (MISD)多指令多数据 (MIMD)在GPU shader编程中,处理器会自动把shader转换为并行执行,如Pixel shader, 只需对一个像素点处理,GPU会对所有的像素做相同处理,这是一种隐式的SIMD,用户是无法控制的,在最新的DX12/Vulkan 图形API中,都加强了用户层代码对底层功能的控制能力,HLSL SM6.0 提供了一系列Wave操
2021-08-31 23:34:18 968
原创 LLVM AMDGPU 后端代码分析研究(3)AMDGPUFixFunctionBitcasts
1. 简介indirect-call 对后端芯片来说,是一件非常伤害性能的行为,它常出现在C++虚函数调用,GPU的subroutine. Compiler有一些算法就是想要减少indirect-call,具体可见参考文献1,AMD使用了下图第二种:Indirect Call Promotion.2. 源码跟踪&学习llc 命令:llc.exe -mtriple=amdgcn G:\Mesa3D_ws\llvm-11.0.0.src\llvm-11.0.0.src\test\CodeGe
2021-08-29 22:23:04 863 1
原创 LLVM AMDGPU 后端代码分析研究(1):PassPipe Line
本系列文章是对GPU LLVM后端的探索与学习,后端的学习资料主要有LLVM源码和公开的Spec. 众所周知,在PC GPU领域的玩家主要有三家公司:NV, AMD, INTEL. 在LLVM 后端开源的代码只有NV, AMD,而AMD相对NV的文档分享会更Open一些,比较容易找到它的Spec. 所以整个系统文章会以AMD的GPU作为研究目标,AMD 开源的代码对应的芯片有两款:R600 , GCN,后者是更新的架构. 以上是基本背景。1. Pass Pipeline通过llc工具,使用以下命令,跟踪
2021-08-28 22:51:55 2953
原创 Mesa3D Windows 环境搭建
缘起在一个无聊的周末,想看看开源Mesa3D的编译器&驱动软件的设计,个人认为通过下断点,看callstack的方式学习,比纯源码的方式效率更高,所以想做一个基于Vs2019学习环境,mesa3d主要是使用在linux的图形子系统中,官网对Windows平台的build步骤不太友好,通过参考 fdossena大佬添加链接描述外加各种折腾,终于把opengl编程指南的demo跑起来了,本文记录这个过程。以下几个坑位请提前注意:fdossena 文章中描述的是mesa-19.1.5使用scons
2021-08-15 10:48:01 3667 4
原创 C++ 开源项目清单
从开源代码的学习中发现,优秀的项目除了开源代码以外,还有需要很多的支撑文件,包括Build, Test, CI/CD, 文档等等。C++ 开源项目清单软件主体源代码软件构建cmakelist.clang-formatexternal & gitmodules 设计build script软件测试CI/CDtest & googletestbenchmark软件自述文件LicenseReadme文档...
2021-08-15 09:58:57 199
原创 Infrastructure Working Group 日记 (1)
1. The infrastructure of the LLVM project● source code repository● bug tracker● all build servers/machines● all web sites● build system/scripts● code review tool● mailing lists● internet forum● chat (IRC and discord)● Documentation of the tools a
2021-01-24 21:16:35 98
原创 2019 Bay Area LLVM Developers‘ Meeting - Talk Abstracts Program with Talk Abstracts
文章目录1. Keynote Talks1.1 Generating Optimized Code with GlobalISel Volkan Keles, Daniel Sanders1.2 Even Better C++ Performance and Productivity: Enhancing Clang to Support Just-in-Time Compilation of Templates Hal Finkel2. Technical Talks2.1 Using LLVM's p
2021-01-09 17:52:49 2026
原创 数据流分析总结
本文旨在总结常见数据流分析:活跃性(liveness)分析,常用表达式(Available Expressions)分析,very busy 表达式(VeryBusy Expressions)分析,定值到达(Reaching Defs)分析。数据流分析数据流分析是编译器,程序分析,垃圾回收等技术的公共基础,数据流分析的直觉感受可以认为是,在程序的控制流图上(CFG),将每条语句视为CFG上的...
2020-12-15 12:27:52 2715 1
原创 减少大规模软件系统编译时间的方法
方法1. Impl设计模式要点:在组合类Imple中,让它包含BasicBase的指针,并使用前置声明,而不是直接include BasicBase的头文件,即使BasicBase的定义有修改,也不会让Imple再次编译。代码示例// Imple.hclass BasicBase; // 前置声明,不需要访问Basic的定义 class Imple{ BasicBase *m_base; // (1) 指针或引用 BasicBase PrintBase(BasicBase base);
2020-06-29 21:59:41 1093
原创 LLVM Pass 分析【2】:Loop Invariant Code Motion
循环不变量(Loop Invariant Code Motion)循环不变量(loop invariant)就是不会随着每轮循环改变的表达式,优化程序只在循环体外计算一次并在循环过程中使用。编译器的优化程序能找出循环不变量并使用“代码移动(code motion)”将其移出循环体。源码#include <stdio.h>#include <stdint.h>#...
2019-08-10 21:09:28 1613
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人