摘要:
一、类型推导 PROs: 源码某处的类型修改,可以自动传播其他地方 Cons: 会让代码更复杂(How?) 在模板类型推导时,有引用的实参会被视为无引用,他们的引用会被忽略 template<typename T> void f(T & param); // param 是一个引用 int x = 阅读全文
摘要:
1. 命名空间 KeyNotes: 鼓励在.cc文件里使用匿名命名空间或者sttic声明 禁止使用内联命令空间,X::Y::foo 等价与X::foo。其主要用于跨版本的ABI兼容问题 namespace X{ inline namespace Y{ void foo(); } // namespa 阅读全文
摘要:
第一部分:基础知识 一、const 1. 作用 修饰变量,表示不可能更改 修饰指针 const int *ptr——pointer to const int const *ptr—— const pointer 原则:被const修饰的后面的值是不可改变的 修饰引用 常用于形参。即避免了copy,又 阅读全文
摘要:
NVCC编译 nvcc 是cuda程序的编译器。 1. 编译阶段 用于指定编译阶段最基本的编译参数。 -c: 同gcc,只预处理、编译和汇编为.o文件,不link -lib:生成一个库文件,windows上为a.lib,其他为a.a后缀 -cuda:编译所有的.cu文件为.cu.cpp.ii -cu 阅读全文
摘要:
GCC 编译 GCC的编译流程分为四个步骤,分别为: 预处理(Pre-Processing) 可以通过gcc -E hello.cc -o hello.i查看中间结果 编译(Compiling) 汇编(Assembling) 链接(Linking) gcc 命令只能编译C++源文件,而不能自动和C+ 阅读全文
摘要:
一、为什么慢? 重要的一个原因是C++的基本 头文件-源文件的编译模型: 每个源文件为一个编译单元 头文件数量多,可能会包含上百甚至上千个头文件 存在重复解析,每个编译单元中,这些头文件都要从硬盘里读取然后被解析 每个编译单元都会产生一个obj文件 这些obj文件被link到一起,此过程很难做到并行 阅读全文
摘要:
# 一、关键问题 ## TVM中的 IR 是什么,架构设计上分几层? 解答:TVM的整体结构图如下: ![TVM架构图](https://raw.githubusercontent.com/tlc-pack/web-data/main/images/design/tvm_dyn_workflow.s 阅读全文